pub(crate) unsafe fn synctex_start_input(input: &mut input_state_t) {
    if synctex_ctxt.flags.contains(Flags::OFF) {
        return;
    }
    /*  synctex_tag_counter is a counter uniquely identifying the file actually
     *  open.  Each time tex opens a new file, synctexstartinput will increment this
     *  counter  */
    if !synctex_ctxt.synctex_tag_counter > 0_u32 {
        synctex_ctxt.synctex_tag_counter = synctex_ctxt.synctex_tag_counter.wrapping_add(1)
    } else {
        /*  we have reached the limit, subsequent files will be softly ignored
         *  this makes a lot of files... even in 32 bits
         *  Maybe we will limit this to 16bits and
         *  use the 16 other bits to store the column number */
        synctex_ctxt.synctex_tag_counter = 0_u32;
        /* was this, but this looks like a bug */
        /* input.synctex_tag = 0; */
        return;
    } /*  -> *TeX.web  */
    input.synctex_tag = synctex_ctxt.synctex_tag_counter as i32;
    if synctex_ctxt.synctex_tag_counter == 1_u32 {
        /*  this is the first file TeX ever opens, in general \jobname.tex we
         *  do not know yet if synchronization will ever be enabled so we have
         *  to store the file name, because we will need it later.
         *  This is necessary because \jobname can be different */
        synctex_ctxt.root_name = get_current_name();
        if synctex_ctxt.root_name.is_empty() {
            synctex_ctxt.root_name = String::from("texput");
        }
        return;
    }
    if synctex_ctxt.file.is_some() || synctex_dot_open() {
        let tmp = get_current_name();
        /* Always record the input, even if INTPAR(synctex) is 0 */
        synctex_record_input(input.synctex_tag, &tmp);
    };
}
/*  Each time TeX opens a file, it sends a synctexstartinput message and enters
 *  this function.  Here, a new synchronization tag is created and stored in
 *  the synctex_tag of the TeX current input context.  Each synchronized
 *  TeX node will record this tag instead of the file name.  synctexstartinput
 *  writes the mapping synctag <-> file name to the .synctex (or .synctex.gz) file.  A client
 *  will read the .synctex file and retrieve this mapping, it will be able to
 *  open the correct file just knowing its tag.  If the same file is read
 *  multiple times, it might be associated to different tags.  Synchronization
 *  controllers, either in viewers, editors or standalone should be prepared to
 *  handle this situation and take the appropriate action if they want to
 *  optimize memory.  No two different files will have the same positive tag.
 *  It is not advisable to definitely store the file names here.  If the file
 *  names ever have to be stored, it should definitely be done at the TeX level
 *  just like src-specials do, such that other components of the program can use
 *  it.  This function does not make any difference between the files, it
 *  treats the same way .tex, .aux, .sty ... files, even if many of them do not
 *  contain any material meant to be typeset.
 */
Each time TeX opens a file, it sends a synctexstartinput message and enters
this function.  Here, a new synchronization tag is created and stored in
the synctex_tag of the TeX current input context.  Each synchronized
TeX node will record this tag instead of the file name.  synctexstartinput
writes the mapping synctag <-> file name to the .synctex (or .synctex.gz) file.  A client
will read the .synctex file and retrieve this mapping, it will be able to
open the correct file just knowing its tag.  If the same file is read
multiple times, it might be associated to different tags.  Synchronization
controllers, either in viewers, editors or standalone should be prepared to
handle this situation and take the appropriate action if they want to
optimize memory.  No two different files will have the same positive tag.
It is not advisable to definitely store the file names here.  If the file
names ever have to be stored, it should definitely be done at the TeX level
just like src-specials do, such that other components of the program can use
it.  This function does not make any difference between the files, it
treats the same way .tex, .aux, .sty ... files, even if many of them do not
contain any material meant to be typeset.
Each time TeX opens a file it sends a synctexstartinput message and enters this function . Here a new synchronization tag is created and stored in the synctex_tag of the TeX current input context . Each synchronized TeX node will record this tag instead of the file name . synctexstartinput writes the mapping synctag < - > file name to the . synctex ( or . synctex . gz ) file . A client will read the . synctex file and retrieve this mapping it will be able to open the correct file just knowing its tag . If the same file is read multiple times it might be associated to different tags . Synchronization controllers either in viewers editors or standalone should be prepared to handle this situation and take the appropriate action if they want to optimize memory . No two different files will have the same positive tag . It is not advisable to definitely store the file names here . If the file names ever have to be stored it should definitely be done at the TeX level just like src - specials do such that other components of the program can use it . This function does not make any difference between the files it treats the same way . tex . aux . sty ... files even if many of them do not contain any material meant to be typeset .
pub(crate) unsafe fn synctex_start_input(input: &mut input_state_t) {
    if synctex_ctxt.flags.contains(Flags::OFF) {
        return;
    }
    /*  synctex_tag_counter is a counter uniquely identifying the file actually
     *  open.  Each time tex opens a new file, synctexstartinput will increment this
     *  counter  */
    if !synctex_ctxt.synctex_tag_counter > 0_u32 {
        synctex_ctxt.synctex_tag_counter = synctex_ctxt.synctex_tag_counter.wrapping_add(1)
    } else {
        /*  we have reached the limit, subsequent files will be softly ignored
         *  this makes a lot of files... even in 32 bits
         *  Maybe we will limit this to 16bits and
         *  use the 16 other bits to store the column number */
        synctex_ctxt.synctex_tag_counter = 0_u32;
        /* was this, but this looks like a bug */
        /* input.synctex_tag = 0; */
        return;
    } /*  -> *TeX.web  */
    input.synctex_tag = synctex_ctxt.synctex_tag_counter as i32;
    if synctex_ctxt.synctex_tag_counter == 1_u32 {
        /*  this is the first file TeX ever opens, in general \jobname.tex we
         *  do not know yet if synchronization will ever be enabled so we have
         *  to store the file name, because we will need it later.
         *  This is necessary because \jobname can be different */
        synctex_ctxt.root_name = get_current_name();
        if synctex_ctxt.root_name.is_empty() {
            synctex_ctxt.root_name = String::from("texput");
        }
        return;
    }
    if synctex_ctxt.file.is_some() || synctex_dot_open() {
        let tmp = get_current_name();
        /* Always record the input, even if INTPAR(synctex) is 0 */
        synctex_record_input(input.synctex_tag, &tmp);
    };
}
pub ( crate ) unsafe fn synctex_start_input ( input : & mut input_state_t ) { if synctex_ctxt . flags . contains ( Flags :: OFF ) { return ; } /*  synctex_tag_counter is a counter uniquely identifying the file actually
     *  open.  Each time tex opens a new file, synctexstartinput will increment this
     *  counter  */ if ! synctex_ctxt . synctex_tag_counter > 0_u32 { synctex_ctxt . synctex_tag_counter = synctex_ctxt . synctex_tag_counter . wrapping_add ( 1 ) } else { /*  we have reached the limit, subsequent files will be softly ignored
         *  this makes a lot of files... even in 32 bits
         *  Maybe we will limit this to 16bits and
         *  use the 16 other bits to store the column number */ synctex_ctxt . synctex_tag_counter = 0_u32 ; /* was this, but this looks like a bug */ /* input.synctex_tag = 0; */ return ; } /*  -> *TeX.web  */ input . synctex_tag = synctex_ctxt . synctex_tag_counter as i32 ; if synctex_ctxt . synctex_tag_counter == 1_u32 { /*  this is the first file TeX ever opens, in general \jobname.tex we
         *  do not know yet if synchronization will ever be enabled so we have
         *  to store the file name, because we will need it later.
         *  This is necessary because \jobname can be different */ synctex_ctxt . root_name = get_current_name ( ) ; if synctex_ctxt . root_name . is_empty ( ) { synctex_ctxt . root_name = String :: from ( " " ) ; } return ; } if synctex_ctxt . file . is_some ( ) || synctex_dot_open ( ) { let tmp = get_current_name ( ) ; /* Always record the input, even if INTPAR(synctex) is 0 */ synctex_record_input ( input . synctex_tag , & tmp ) ; } ; }
Each time TeX opens a file, it sends a synctexstartinput message and enters
  this function.
Each time TeX opens a file it sends a synctexstartinput message and enters this function .
input
&mut input_state_t