diff options
Diffstat (limited to 'cut-n-paste')
-rw-r--r-- | cut-n-paste/synctex/synctex_parser.c | 237 | ||||
-rw-r--r-- | cut-n-paste/synctex/synctex_parser.h | 9 | ||||
-rw-r--r-- | cut-n-paste/synctex/synctex_parser_local.h | 3 | ||||
-rw-r--r-- | cut-n-paste/synctex/synctex_parser_utils.c | 23 | ||||
-rw-r--r-- | cut-n-paste/synctex/synctex_parser_utils.h | 2 | ||||
-rw-r--r-- | cut-n-paste/synctex/synctex_parser_version.txt | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | cut-n-paste/synctex/update-synctex-from-TL.sh | 0 |
7 files changed, 135 insertions, 141 deletions
diff --git a/cut-n-paste/synctex/synctex_parser.c b/cut-n-paste/synctex/synctex_parser.c index b0dbad26..5b28ace6 100644 --- a/cut-n-paste/synctex/synctex_parser.c +++ b/cut-n-paste/synctex/synctex_parser.c @@ -5,7 +5,7 @@ This file is part of the SyncTeX package. Latest Revision: Tue Jun 14 08:23:30 UTC 2011 -Version: 1.17 +Version: 1.18 See synctex_parser_readme.txt for more details @@ -240,14 +240,11 @@ struct __synctex_class_t { SYNCTEX_GETTER(NODE,next_hbox)[0]=NEXT_HBOX;\ } -void _synctex_free_node(synctex_node_t node); -void _synctex_free_leaf(synctex_node_t node); - /* A node is meant to own its child and sibling. * It is not owned by its parent, unless it is its first child. * This destructor is for all nodes with children. */ -void _synctex_free_node(synctex_node_t node) { +static void _synctex_free_node(synctex_node_t node) { if (node) { (*((node->class)->sibling))(node); SYNCTEX_FREE(SYNCTEX_SIBLING(node)); @@ -262,7 +259,7 @@ void _synctex_free_node(synctex_node_t node) { * This destructor is for nodes with no child. * The first sheet is onwned by the scanner. */ -void _synctex_free_leaf(synctex_node_t node) { +static void _synctex_free_leaf(synctex_node_t node) { if (node) { SYNCTEX_FREE(SYNCTEX_SIBLING(node)); free(node); @@ -345,8 +342,7 @@ struct __synctex_scanner_t { * It is only used for pointer values */ # define SYNCTEX_MAKE_GET(SYNCTEX_GETTER,OFFSET)\ -synctex_node_t * SYNCTEX_GETTER (synctex_node_t node);\ -synctex_node_t * SYNCTEX_GETTER (synctex_node_t node) {\ +static synctex_node_t * SYNCTEX_GETTER (synctex_node_t node) {\ return node?(synctex_node_t *)((&((node)->implementation))+OFFSET):NULL;\ } SYNCTEX_MAKE_GET(_synctex_implementation_0,0) @@ -363,29 +359,10 @@ typedef struct { * SYNCTEX_PAGE_IDX */ } synctex_node_sheet_t; -synctex_node_t _synctex_new_sheet(synctex_scanner_t scanner); -void _synctex_display_sheet(synctex_node_t node); -void _synctex_log_sheet(synctex_node_t node); - -static _synctex_class_t synctex_class_sheet = { - NULL, /* No scanner yet */ - synctex_node_type_sheet, /* Node type */ - &_synctex_new_sheet, /* creator */ - &_synctex_free_node, /* destructor */ - &_synctex_log_sheet, /* log */ - &_synctex_display_sheet, /* display */ - NULL, /* No parent */ - &_synctex_implementation_0, /* child */ - &_synctex_implementation_1, /* sibling */ - NULL, /* No friend */ - &_synctex_implementation_2, /* Next hbox */ - (_synctex_info_getter_t)&_synctex_implementation_3 /* info */ -}; - /* sheet node creator */ #define DEFINE_synctex_new_NODE(NAME)\ -synctex_node_t _synctex_new_##NAME(synctex_scanner_t scanner) {\ +static synctex_node_t _synctex_new_##NAME(synctex_scanner_t scanner) {\ if (scanner) {\ synctex_node_t node = _synctex_malloc(sizeof(synctex_node_##NAME##_t));\ if (node) {\ @@ -399,6 +376,24 @@ synctex_node_t _synctex_new_##NAME(synctex_scanner_t scanner) {\ } DEFINE_synctex_new_NODE(sheet) +static void _synctex_display_sheet(synctex_node_t node); +static void _synctex_log_sheet(synctex_node_t node); + +static _synctex_class_t synctex_class_sheet = { + NULL, /* No scanner yet */ + synctex_node_type_sheet, /* Node type */ + &_synctex_new_sheet, /* creator */ + &_synctex_free_node, /* destructor */ + &_synctex_log_sheet, /* log */ + &_synctex_display_sheet, /* display */ + NULL, /* No parent */ + &_synctex_implementation_0, /* child */ + &_synctex_implementation_1, /* sibling */ + NULL, /* No friend */ + &_synctex_implementation_2, /* Next hbox */ + (_synctex_info_getter_t)&_synctex_implementation_3 /* info */ +}; + /* A box node contains navigation and synctex information * There are different kind of boxes. * Only horizontal boxes are treated differently because of their visible size. @@ -432,9 +427,11 @@ typedef struct { * SYNCTEX_HORIZ,SYNCTEX_VERT,SYNCTEX_WIDTH,SYNCTEX_HEIGHT,SYNCTEX_DEPTH */ } synctex_node_vbox_t; -synctex_node_t _synctex_new_vbox(synctex_scanner_t scanner); -void _synctex_log_vbox(synctex_node_t node); -void _synctex_display_vbox(synctex_node_t node); +/* vertical box node creator */ +DEFINE_synctex_new_NODE(vbox) + +static void _synctex_log_vbox(synctex_node_t node); +static void _synctex_display_vbox(synctex_node_t node); /* These are static class objects, each scanner will make a copy of them and setup the scanner field. */ @@ -453,9 +450,6 @@ static _synctex_class_t synctex_class_vbox = { (_synctex_info_getter_t)&_synctex_implementation_5 }; -/* vertical box node creator */ -DEFINE_synctex_new_NODE(vbox) - /* Horizontal boxes must contain visible size, because 0 width does not mean emptiness. * They also contain an average of the line numbers of the containing nodes. */ # define SYNCTEX_MEAN_LINE_IDX (SYNCTEX_DEPTH_IDX+1) @@ -487,9 +481,11 @@ typedef struct { * SYNCTEX_HORIZ_V,SYNCTEX_VERT_V,SYNCTEX_WIDTH_V,SYNCTEX_HEIGHT_V,SYNCTEX_DEPTH_V*/ } synctex_node_hbox_t; -synctex_node_t _synctex_new_hbox(synctex_scanner_t scanner); -void _synctex_display_hbox(synctex_node_t node); -void _synctex_log_hbox(synctex_node_t node); +/* horizontal box node creator */ +DEFINE_synctex_new_NODE(hbox) + +static void _synctex_display_hbox(synctex_node_t node); +static void _synctex_log_hbox(synctex_node_t node); static _synctex_class_t synctex_class_hbox = { @@ -507,9 +503,6 @@ static _synctex_class_t synctex_class_hbox = { (_synctex_info_getter_t)&_synctex_implementation_5 }; -/* horizontal box node creator */ -DEFINE_synctex_new_NODE(hbox) - /* This void box node implementation is either horizontal or vertical * It does not contain a child field. */ @@ -521,9 +514,11 @@ typedef struct { * SYNCTEX_HORIZ,SYNCTEX_VERT,SYNCTEX_WIDTH,SYNCTEX_HEIGHT,SYNCTEX_DEPTH*/ } synctex_node_void_vbox_t; -synctex_node_t _synctex_new_void_vbox(synctex_scanner_t scanner); -void _synctex_log_void_box(synctex_node_t node); -void _synctex_display_void_vbox(synctex_node_t node); +/* vertical void box node creator */ +DEFINE_synctex_new_NODE(void_vbox) + +static void _synctex_log_void_box(synctex_node_t node); +static void _synctex_display_void_vbox(synctex_node_t node); static _synctex_class_t synctex_class_void_vbox = { NULL, /* No scanner yet */ @@ -540,13 +535,12 @@ static _synctex_class_t synctex_class_void_vbox = { (_synctex_info_getter_t)&_synctex_implementation_3 }; -/* vertical void box node creator */ -DEFINE_synctex_new_NODE(void_vbox) - typedef synctex_node_void_vbox_t synctex_node_void_hbox_t; -synctex_node_t _synctex_new_void_hbox(synctex_scanner_t scanner); -void _synctex_display_void_hbox(synctex_node_t node); +/* horizontal void box node creator */ +DEFINE_synctex_new_NODE(void_hbox) + +static void _synctex_display_void_hbox(synctex_node_t node); static _synctex_class_t synctex_class_void_hbox = { NULL, /* No scanner yet */ @@ -563,9 +557,6 @@ static _synctex_class_t synctex_class_void_hbox = { (_synctex_info_getter_t)&_synctex_implementation_3 }; -/* horizontal void box node creator */ -DEFINE_synctex_new_NODE(void_hbox) - /* The medium nodes correspond to kern, glue, penalty and math nodes. * In LuaTeX, the size of the nodes may have changed. */ typedef struct { @@ -584,13 +575,14 @@ typedef struct { #define SYNCTEX_HAS_CHILDREN(NODE) (NODE && SYNCTEX_CHILD(NODE)) -void _synctex_log_medium_node(synctex_node_t node); +static void _synctex_log_medium_node(synctex_node_t node); typedef synctex_node_medium_t synctex_node_math_t; /* math node creator */ -synctex_node_t _synctex_new_math(synctex_scanner_t scanner); -void _synctex_display_math(synctex_node_t node); +DEFINE_synctex_new_NODE(math) + +static void _synctex_display_math(synctex_node_t node); static _synctex_class_t synctex_class_math = { NULL, /* No scanner yet */ @@ -607,13 +599,12 @@ static _synctex_class_t synctex_class_math = { (_synctex_info_getter_t)&_synctex_implementation_3 }; -DEFINE_synctex_new_NODE(math) - typedef synctex_node_medium_t synctex_node_kern_t; /* kern node creator */ -synctex_node_t _synctex_new_kern(synctex_scanner_t scanner); -void _synctex_display_kern(synctex_node_t node); +DEFINE_synctex_new_NODE(kern) + +static void _synctex_display_kern(synctex_node_t node); static _synctex_class_t synctex_class_kern = { NULL, /* No scanner yet */ @@ -630,8 +621,6 @@ static _synctex_class_t synctex_class_kern = { (_synctex_info_getter_t)&_synctex_implementation_3 }; -DEFINE_synctex_new_NODE(kern) - /* The small nodes correspond to glue and boundary nodes. */ typedef struct { SYNCTEX_DECLARE_CHARINDEX @@ -641,12 +630,12 @@ typedef struct { * SYNCTEX_HORIZ,SYNCTEX_VERT */ } synctex_node_small_t; -void _synctex_log_small_node(synctex_node_t node); +static void _synctex_log_small_node(synctex_node_t node); /* glue node creator */ typedef synctex_node_small_t synctex_node_glue_t; -synctex_node_t _synctex_new_glue(synctex_scanner_t scanner); -void _synctex_display_glue(synctex_node_t node); +DEFINE_synctex_new_NODE(glue) +static void _synctex_display_glue(synctex_node_t node); static _synctex_class_t synctex_class_glue = { NULL, /* No scanner yet */ @@ -662,12 +651,12 @@ static _synctex_class_t synctex_class_glue = { NULL, /* No next hbox */ (_synctex_info_getter_t)&_synctex_implementation_3 }; -DEFINE_synctex_new_NODE(glue) /* boundary node creator */ typedef synctex_node_small_t synctex_node_boundary_t; -synctex_node_t _synctex_new_boundary(synctex_scanner_t scanner); -void _synctex_display_boundary(synctex_node_t node); +DEFINE_synctex_new_NODE(boundary) + +static void _synctex_display_boundary(synctex_node_t node); static _synctex_class_t synctex_class_boundary = { NULL, /* No scanner yet */ @@ -684,8 +673,6 @@ static _synctex_class_t synctex_class_boundary = { (_synctex_info_getter_t)&_synctex_implementation_3 }; -DEFINE_synctex_new_NODE(boundary) - # define SYNCTEX_NAME_IDX (SYNCTEX_TAG_IDX+1) # define SYNCTEX_NAME(NODE) SYNCTEX_INFO(NODE)[SYNCTEX_NAME_IDX].PTR @@ -698,29 +685,8 @@ typedef struct { * SYNCTEX_TAG,SYNCTEX_NAME */ } synctex_input_t; -synctex_node_t _synctex_new_input(synctex_scanner_t scanner); -void _synctex_free_input(synctex_node_t node); -void _synctex_display_input(synctex_node_t node); -void _synctex_log_input(synctex_node_t node); - -static _synctex_class_t synctex_class_input = { - NULL, /* No scanner yet */ - synctex_node_type_input, /* Node type */ - &_synctex_new_input, /* creator */ - &_synctex_free_input, /* destructor */ - &_synctex_log_input, /* log */ - &_synctex_display_input, /* display */ - NULL, /* No parent */ - NULL, /* No child */ - &_synctex_implementation_0, /* sibling */ - NULL, /* No friend */ - NULL, /* No next hbox */ - (_synctex_info_getter_t)&_synctex_implementation_1 -}; - # define SYNCTEX_INPUT_MARK "Input:" - -synctex_node_t _synctex_new_input(synctex_scanner_t scanner) { +static synctex_node_t _synctex_new_input(synctex_scanner_t scanner) { if (scanner) { synctex_node_t node = _synctex_malloc(sizeof(synctex_input_t)); if (node) { @@ -731,13 +697,33 @@ synctex_node_t _synctex_new_input(synctex_scanner_t scanner) { } return NULL; } -void _synctex_free_input(synctex_node_t node){ + +static void _synctex_free_input(synctex_node_t node){ if (node) { SYNCTEX_FREE(SYNCTEX_SIBLING(node)); free(SYNCTEX_NAME(node)); free(node); } } + +static void _synctex_display_input(synctex_node_t node); +static void _synctex_log_input(synctex_node_t node); + +static _synctex_class_t synctex_class_input = { + NULL, /* No scanner yet */ + synctex_node_type_input, /* Node type */ + &_synctex_new_input, /* creator */ + &_synctex_free_input, /* destructor */ + &_synctex_log_input, /* log */ + &_synctex_display_input, /* display */ + NULL, /* No parent */ + NULL, /* No child */ + &_synctex_implementation_0, /* sibling */ + NULL, /* No friend */ + NULL, /* No next hbox */ + (_synctex_info_getter_t)&_synctex_implementation_1 +}; + # ifdef SYNCTEX_NOTHING # pragma mark - # pragma mark Navigation @@ -810,14 +796,14 @@ void synctex_node_log(synctex_node_t node) { SYNCTEX_LOG(node); } -void _synctex_log_input(synctex_node_t node) { +static void _synctex_log_input(synctex_node_t node) { if (node) { printf("%s:%i,%s",synctex_node_isa(node),SYNCTEX_TAG(node),SYNCTEX_NAME(node)); printf(" SYNCTEX_SIBLING:%p",(void *)SYNCTEX_SIBLING(node)); } } -void _synctex_log_sheet(synctex_node_t node) { +static void _synctex_log_sheet(synctex_node_t node) { if (node) { printf("%s:%i",synctex_node_isa(node),SYNCTEX_PAGE(node)); SYNCTEX_PRINT_CHARINDEX; @@ -830,7 +816,7 @@ void _synctex_log_sheet(synctex_node_t node) { } } -void _synctex_log_small_node(synctex_node_t node) { +static void _synctex_log_small_node(synctex_node_t node) { if (node) { printf("%s:%i,%i:%i,%i", synctex_node_isa(node), @@ -847,7 +833,7 @@ void _synctex_log_small_node(synctex_node_t node) { } } -void _synctex_log_medium_node(synctex_node_t node) { +static void _synctex_log_medium_node(synctex_node_t node) { if (node) { printf("%s:%i,%i:%i,%i:%i", synctex_node_isa(node), @@ -865,7 +851,7 @@ void _synctex_log_medium_node(synctex_node_t node) { } } -void _synctex_log_void_box(synctex_node_t node) { +static void _synctex_log_void_box(synctex_node_t node) { if (node) { printf("%s",synctex_node_isa(node)); printf(":%i",SYNCTEX_TAG(node)); @@ -885,7 +871,7 @@ void _synctex_log_void_box(synctex_node_t node) { } } -void _synctex_log_vbox(synctex_node_t node) { +static void _synctex_log_vbox(synctex_node_t node) { if (node) { printf("%s",synctex_node_isa(node)); printf(":%i",SYNCTEX_TAG(node)); @@ -906,7 +892,7 @@ void _synctex_log_vbox(synctex_node_t node) { } } -void _synctex_log_hbox(synctex_node_t node) { +static void _synctex_log_hbox(synctex_node_t node) { if (node) { printf("%s",synctex_node_isa(node)); printf(":%i",SYNCTEX_TAG(node)); @@ -938,7 +924,7 @@ void synctex_node_display(synctex_node_t node) { SYNCTEX_DISPLAY(node); } -void _synctex_display_input(synctex_node_t node) { +static void _synctex_display_input(synctex_node_t node) { if (node) { printf("....Input:%i:%s", SYNCTEX_TAG(node), @@ -948,7 +934,7 @@ void _synctex_display_input(synctex_node_t node) { } } -void _synctex_display_sheet(synctex_node_t node) { +static void _synctex_display_sheet(synctex_node_t node) { if (node) { printf("....{%i",SYNCTEX_PAGE(node)); SYNCTEX_PRINT_CHARINDEX; @@ -958,7 +944,7 @@ void _synctex_display_sheet(synctex_node_t node) { } } -void _synctex_display_vbox(synctex_node_t node) { +static void _synctex_display_vbox(synctex_node_t node) { if (node) { printf("....[%i,%i:%i,%i:%i,%i,%i", SYNCTEX_TAG(node), @@ -975,7 +961,7 @@ void _synctex_display_vbox(synctex_node_t node) { } } -void _synctex_display_hbox(synctex_node_t node) { +static void _synctex_display_hbox(synctex_node_t node) { if (node) { printf("....(%i,%i~%i*%i:%i,%i:%i,%i,%i", SYNCTEX_TAG(node), @@ -994,7 +980,7 @@ void _synctex_display_hbox(synctex_node_t node) { } } -void _synctex_display_void_vbox(synctex_node_t node) { +static void _synctex_display_void_vbox(synctex_node_t node) { if (node) { printf("....v%i,%i;%i,%i:%i,%i,%i", SYNCTEX_TAG(node), @@ -1009,7 +995,7 @@ void _synctex_display_void_vbox(synctex_node_t node) { } } -void _synctex_display_void_hbox(synctex_node_t node) { +static void _synctex_display_void_hbox(synctex_node_t node) { if (node) { printf("....h%i,%i:%i,%i:%i,%i,%i", SYNCTEX_TAG(node), @@ -1024,7 +1010,7 @@ void _synctex_display_void_hbox(synctex_node_t node) { } } -void _synctex_display_glue(synctex_node_t node) { +static void _synctex_display_glue(synctex_node_t node) { if (node) { printf("....glue:%i,%i:%i,%i", SYNCTEX_TAG(node), @@ -1036,7 +1022,7 @@ void _synctex_display_glue(synctex_node_t node) { } } -void _synctex_display_math(synctex_node_t node) { +static void _synctex_display_math(synctex_node_t node) { if (node) { printf("....math:%i,%i:%i,%i", SYNCTEX_TAG(node), @@ -1048,7 +1034,7 @@ void _synctex_display_math(synctex_node_t node) { } } -void _synctex_display_kern(synctex_node_t node) { +static void _synctex_display_kern(synctex_node_t node) { if (node) { printf("....kern:%i,%i:%i,%i:%i", SYNCTEX_TAG(node), @@ -1061,7 +1047,7 @@ void _synctex_display_kern(synctex_node_t node) { } } -void _synctex_display_boundary(synctex_node_t node) { +static void _synctex_display_boundary(synctex_node_t node) { if (node) { printf("....boundary:%i,%i:%i,%i", SYNCTEX_TAG(node), @@ -1089,7 +1075,7 @@ void _synctex_display_boundary(synctex_node_t node) { * status == SYNCTEX_STATUS_EOF means the function did not work as expected and there is no more material. * status<SYNCTEX_STATUS_EOF means an error */ -typedef int synctex_status_t; + /* When the end of the synctex file has been reached: */ # define SYNCTEX_STATUS_EOF 0 /* When the function could not return the value it was asked for: */ @@ -1104,7 +1090,7 @@ typedef int synctex_status_t; # define SYNCTEX_FILE (scanner->file) /* Actually, the minimum buffer size is driven by integer and float parsing. - * �0.123456789e123 + * �0.123456789e123 */ # define SYNCTEX_BUFFER_MIN_SIZE 16 # define SYNCTEX_BUFFER_SIZE 32768 @@ -1122,7 +1108,7 @@ synctex_status_t _synctex_scan_input(synctex_scanner_t scanner); synctex_status_t _synctex_scan_preamble(synctex_scanner_t scanner); synctex_status_t _synctex_scan_float_and_dimension(synctex_scanner_t scanner, float * value_ref); synctex_status_t _synctex_scan_post_scriptum(synctex_scanner_t scanner); -int _synctex_scan_postamble(synctex_scanner_t scanner); +synctex_status_t _synctex_scan_postamble(synctex_scanner_t scanner); synctex_status_t _synctex_setup_visible_box(synctex_node_t box); synctex_status_t _synctex_hbox_setup_visible(synctex_node_t node,int h, int v); synctex_status_t _synctex_scan_sheet(synctex_scanner_t scanner, synctex_node_t parent); @@ -1132,7 +1118,6 @@ int synctex_scanner_pre_x_offset(synctex_scanner_t scanner); int synctex_scanner_pre_y_offset(synctex_scanner_t scanner); const char * synctex_scanner_get_output_fmt(synctex_scanner_t scanner); int _synctex_node_is_box(synctex_node_t node); -int _synctex_bail(void); /* Try to ensure that the buffer contains at least size bytes. * Passing a huge size argument means the whole buffer length. @@ -1171,7 +1156,7 @@ synctex_status_t _synctex_buffer_get_available_size(synctex_scanner_t scanner, s } SYNCTEX_CUR = SYNCTEX_START + available; /* the next character after the move, will change. */ /* Fill the buffer up to its end */ - already_read = gzread(SYNCTEX_FILE,(void *)SYNCTEX_CUR,SYNCTEX_BUFFER_SIZE - available); + already_read = gzread(SYNCTEX_FILE,(void *)SYNCTEX_CUR,(int)(SYNCTEX_BUFFER_SIZE - available)); if (already_read>0) { /* We assume that 0<already_read<=SYNCTEX_BUFFER_SIZE - available, such that * SYNCTEX_CUR + already_read = SYNCTEX_START + available + already_read <= SYNCTEX_START + SYNCTEX_BUFFER_SIZE */ @@ -1838,8 +1823,8 @@ report_record_problem: * a negative error otherwise * The postamble comprises the post scriptum section. */ -int _synctex_scan_postamble(synctex_scanner_t scanner) { - int status = 0; +synctex_status_t _synctex_scan_postamble(synctex_scanner_t scanner) { + synctex_status_t status = 0; if (NULL == scanner) { return SYNCTEX_STATUS_BAD_ARGUMENT; } @@ -2095,7 +2080,6 @@ scan_anchor: } goto prepare_loop; } - _synctex_bail(); /* The child loop means that we go down one level, when we just created a box node, * the next node created is a child of this box. */ child_loop: @@ -2354,7 +2338,6 @@ scan_xobh: goto child_loop; } } - _synctex_bail(); /* The vertical loop means that we are on the same level, for example when we just ended a box. * If a node is created now, it will be a sibling of the current node, sharing the same parent. */ sibling_loop: @@ -2728,15 +2711,13 @@ synctex_scanner_t synctex_scanner_new_with_output_file(const char * output, cons return parse? synctex_scanner_parse(scanner):scanner; } -int __synctex_open(const char * output, char ** synctex_name_ref, gzFile * file_ref, synctex_bool_t add_quotes, synctex_io_mode_t * io_mode_ref); - /* This functions opens the file at the "output" given location. * It manages the problem of quoted filenames that appear with pdftex and filenames containing the space character. * In TeXLive 2008, the synctex file created with pdftex did contain unexpected quotes. * This function will remove them if possible. * All the reference arguments will take a value on return. They must be non NULL. * 0 on success, non 0 on error. */ -int __synctex_open(const char * output, char ** synctex_name_ref, gzFile * file_ref, synctex_bool_t add_quotes, synctex_io_mode_t * io_mode_ref) { +static int __synctex_open(const char * output, char ** synctex_name_ref, gzFile * file_ref, synctex_bool_t add_quotes, synctex_io_mode_t * io_mode_ref) { if (synctex_name_ref && file_ref && io_mode_ref) { /* 1 local variables that uses dynamic memory */ char * synctex_name = NULL; @@ -2878,6 +2859,7 @@ int _synctex_open(const char * output, const char * build_directory, char ** syn build_output[0] = '\0'; } else { if (build_output != strcpy(build_output,output)) { + free(build_output); return -4; } build_output[lpc-output]='\0'; @@ -2886,15 +2868,20 @@ int _synctex_open(const char * output, const char * build_directory, char ** syn /* Append a path separator if necessary. */ if (!SYNCTEX_IS_PATH_SEPARATOR(build_output[strlen(build_directory)-1])) { if (build_output != strcat(build_output,"/")) { + free(build_output); return -2; } } /* Append the last path component of the output. */ if (build_output != strcat(build_output,lpc)) { + free(build_output); return -3; } - return __synctex_open(build_output,synctex_name_ref,file_ref,add_quotes,io_mode_ref); + result = __synctex_open(build_output,synctex_name_ref,file_ref,add_quotes,io_mode_ref); + free(build_output); + return result; } + free(build_output); } return -1; } @@ -3438,7 +3425,7 @@ synctex_node_t synctex_sheet_content(synctex_scanner_t scanner,int page) { # pragma mark Query # endif -int synctex_display_query(synctex_scanner_t scanner,const char * name,int line,int column) { +synctex_status_t synctex_display_query(synctex_scanner_t scanner,const char * name,int line,int column) { # ifdef __DARWIN_UNIX03 # pragma unused(column) # endif @@ -3654,7 +3641,7 @@ SYNCTEX_INLINE static synctex_node_t _synctex_eq_closest_child(synctex_point_t h #define SYNCTEX_MASK_LEFT 1 #define SYNCTEX_MASK_RIGHT 2 -int synctex_edit_query(synctex_scanner_t scanner,int page,float h,float v) { +synctex_status_t synctex_edit_query(synctex_scanner_t scanner,int page,float h,float v) { synctex_node_t sheet = NULL; synctex_node_t node = NULL; /* placeholder */ synctex_node_t other_node = NULL; /* placeholder */ @@ -3757,10 +3744,6 @@ end: # pragma mark Utilities # endif -int _synctex_bail(void) { - _synctex_error("SyncTeX ERROR\n"); - return -1; -} /* Rougly speaking, this is: * node's h coordinate - hitPoint's h coordinate. * If node is to the right of the hit point, then this distance is positive, diff --git a/cut-n-paste/synctex/synctex_parser.h b/cut-n-paste/synctex/synctex_parser.h index 31517076..2c1911e0 100644 --- a/cut-n-paste/synctex/synctex_parser.h +++ b/cut-n-paste/synctex/synctex_parser.h @@ -5,7 +5,7 @@ This file is part of the SyncTeX package. Latest Revision: Tue Jun 14 08:23:30 UTC 2011 -Version: 1.17 +Version: 1.18 See synctex_parser_readme.txt for more details @@ -59,6 +59,8 @@ Thu Jun 19 09:39:21 UTC 2008 extern "C" { #endif +# define SYNCTEX_VERSION_STRING "1.18" + /* synctex_node_t is the type for all synctex nodes. * The synctex file is parsed into a tree of nodes, either sheet, boxes, math nodes... */ typedef struct _synctex_node * synctex_node_t; @@ -162,8 +164,9 @@ synctex_scanner_t synctex_scanner_parse(synctex_scanner_t scanner); * Sumatra-PDF, Skim, iTeXMac2 and Texworks are examples of open source software that use this library. * You can browse their code for a concrete implementation. */ -int synctex_display_query(synctex_scanner_t scanner,const char * name,int line,int column); -int synctex_edit_query(synctex_scanner_t scanner,int page,float h,float v); +typedef long synctex_status_t; +synctex_status_t synctex_display_query(synctex_scanner_t scanner,const char * name,int line,int column); +synctex_status_t synctex_edit_query(synctex_scanner_t scanner,int page,float h,float v); synctex_node_t synctex_next_result(synctex_scanner_t scanner); /* Display all the information contained in the scanner object. diff --git a/cut-n-paste/synctex/synctex_parser_local.h b/cut-n-paste/synctex/synctex_parser_local.h index 2ea08704..89fd1369 100644 --- a/cut-n-paste/synctex/synctex_parser_local.h +++ b/cut-n-paste/synctex/synctex_parser_local.h @@ -5,7 +5,7 @@ This file is part of the SyncTeX package. Latest Revision: Tue Jun 14 08:23:30 UTC 2011 -Version: 1.17 +Version: 1.18 See synctex_parser_readme.txt for more details @@ -43,4 +43,3 @@ authorization from the copyright holder. # include <w2c/c-auto.h> /* for inline && HAVE_xxx */ /* No inlining for synctex tool in texlive. */ # define SYNCTEX_INLINE - diff --git a/cut-n-paste/synctex/synctex_parser_utils.c b/cut-n-paste/synctex/synctex_parser_utils.c index 70132bda..0e9fd0e5 100644 --- a/cut-n-paste/synctex/synctex_parser_utils.c +++ b/cut-n-paste/synctex/synctex_parser_utils.c @@ -5,7 +5,7 @@ This file is part of the SyncTeX package. Latest Revision: Tue Jun 14 08:23:30 UTC 2011 -Version: 1.17 +Version: 1.18 See synctex_parser_readme.txt for more details @@ -67,6 +67,7 @@ authorization from the copyright holder. #ifdef SYNCTEX_WINDOWS #include <windows.h> +#include <shlwapi.h> /* Use shlwapi.lib */ #endif void *_synctex_malloc(size_t size) { @@ -115,6 +116,15 @@ void _synctex_strip_last_path_extension(char * string) { if(NULL != string){ char * last_component = NULL; char * last_extension = NULL; +# if defined(SYNCTEX_WINDOWS) + last_component = PathFindFileName(string); + last_extension = PathFindExtension(string); + if(last_extension == NULL)return; + if(last_component == NULL)last_component = string; + if(last_extension>last_component){/* filter out paths like "my/dir/.hidden" */ + last_extension[0] = '\0'; + } +# else char * next = NULL; /* first we find the last path component */ if(NULL == (last_component = strstr(string,"/"))){ @@ -125,12 +135,12 @@ void _synctex_strip_last_path_extension(char * string) { last_component = next+1; } } -# if defined(SYNCTEX_WINDOWS) || defined(SYNCTEX_OS2) - /* On Windows, the '\' is also a path separator. */ +# if defined(SYNCTEX_OS2) + /* On OS2, the '\' is also a path separator. */ while((next = strstr(last_component,"\\"))){ last_component = next+1; } -# endif +# endif /* SYNCTEX_OS2 */ /* then we find the last path extension */ if((last_extension = strstr(last_component,"."))){ ++last_extension; @@ -142,6 +152,7 @@ void _synctex_strip_last_path_extension(char * string) { last_extension[0] = '\0'; } } +# endif /* SYNCTEX_WINDOWS */ } } @@ -150,7 +161,7 @@ synctex_bool_t synctex_ignore_leading_dot_slash_in_path(const char ** name_ref) if (SYNCTEX_IS_DOT((*name_ref)[0]) && SYNCTEX_IS_PATH_SEPARATOR((*name_ref)[1])) { do { (*name_ref) += 2; - while (SYNCTEX_IS_PATH_SEPARATOR((*name_ref)[1])) { + while (SYNCTEX_IS_PATH_SEPARATOR((*name_ref)[0])) { ++(*name_ref); } } while(SYNCTEX_IS_DOT((*name_ref)[0]) && SYNCTEX_IS_PATH_SEPARATOR((*name_ref)[1])); @@ -292,7 +303,6 @@ char * _synctex_merge_strings(const char * first,...) { size_t len = strlen(temp); if(UINT_MAX-len<size) { _synctex_error("! _synctex_merge_strings: Capacity exceeded."); - va_end(arg); return NULL; } size+=len; @@ -313,7 +323,6 @@ char * _synctex_merge_strings(const char * first,...) { _synctex_error("! _synctex_merge_strings: Copy problem"); free(result); result = NULL; - va_end(arg); return NULL; } dest += size; diff --git a/cut-n-paste/synctex/synctex_parser_utils.h b/cut-n-paste/synctex/synctex_parser_utils.h index db19b2da..9c76ac52 100644 --- a/cut-n-paste/synctex/synctex_parser_utils.h +++ b/cut-n-paste/synctex/synctex_parser_utils.h @@ -5,7 +5,7 @@ This file is part of the SyncTeX package. Latest Revision: Tue Jun 14 08:23:30 UTC 2011 -Version: 1.17 +Version: 1.18 See synctex_parser_readme.txt for more details diff --git a/cut-n-paste/synctex/synctex_parser_version.txt b/cut-n-paste/synctex/synctex_parser_version.txt index b48f3226..d907c153 100644 --- a/cut-n-paste/synctex/synctex_parser_version.txt +++ b/cut-n-paste/synctex/synctex_parser_version.txt @@ -1 +1 @@ -1.17 +1.18
\ No newline at end of file diff --git a/cut-n-paste/synctex/update-synctex-from-TL.sh b/cut-n-paste/synctex/update-synctex-from-TL.sh index ca0e10bf..ca0e10bf 100644..100755 --- a/cut-n-paste/synctex/update-synctex-from-TL.sh +++ b/cut-n-paste/synctex/update-synctex-from-TL.sh |