texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

texinfo/makeinfo cmds.c,1.30,1.31 cmds.h,1.2,1.3 defun.c,1.8,1.9 defun.h


From: dirt
Subject: texinfo/makeinfo cmds.c,1.30,1.31 cmds.h,1.2,1.3 defun.c,1.8,1.9 defun.h,1.1.1.1,1.2 files.c,1.13,1.14 files.h,1.5,1.6 float.c,1.20,1.21 float.h,1.6,1.7 footnote.c,1.4,1.5 footnote.h,1.1.1.1,1.2 html.c,1.11,1.12 html.h,1.2,1.3 index.c,1.13,1.14 index.h,1.2,1.3 insertion.c,1.19,1.20 insertion.h,1.1.1.1,1.2 lang.c,1.7,1.8 lang.h,1.2,1.3 macro.c,1.1.1.1,1.2 macro.h,1.1.1.1,1.2 makeinfo.c,1.43,1.44 makeinfo.h,1.5,1.6 multi.c,1.5,1.6 node.c,1.15,1.16 node.h,1.2,1.3 sectioning.c,1.8,1.9 sectioning.h,1.1.1.1,1.2 toc.c,1.6,1.7 toc.h,1.2,1.3 xml.c,1.23,1.24 xml.h,1.9,1.10 xref.c,1.5,1.6 xref.h,1.1,1.2
Date: Fri, 13 Feb 2004 23:01:41 +0100

Update of /cvsroot/texinfo/texinfo/makeinfo
In directory sheep:/tmp/cvs-serv471/makeinfo

Modified Files:
        cmds.c cmds.h defun.c defun.h files.c files.h float.c float.h 
        footnote.c footnote.h html.c html.h index.c index.h 
        insertion.c insertion.h lang.c lang.h macro.c macro.h 
        makeinfo.c makeinfo.h multi.c node.c node.h sectioning.c 
        sectioning.h toc.c toc.h xml.c xml.h xref.c xref.h 
Log Message:
2004-02-13  Alper Ersoy  <address@hidden>

        * makeinfo/cmds.c:
        * makeinfo/cmds.h:
        * makeinfo/defun.c:
        * makeinfo/defun.h:
        * makeinfo/files.c:
        * makeinfo/files.h:
        * makeinfo/float.c:
        * makeinfo/float.h:
        * makeinfo/footnote.c:
        * makeinfo/footnote.h:
        * makeinfo/html.c:
        * makeinfo/html.h:
        * makeinfo/index.c:
        * makeinfo/index.h:
        * makeinfo/insertion.c:
        * makeinfo/insertion.h:
        * makeinfo/lang.c:
        * makeinfo/lang.h:
        * makeinfo/macro.c:
        * makeinfo/macro.h:
        * makeinfo/makeinfo.c:
        * makeinfo/makeinfo.h:
        * makeinfo/multi.c:
        * makeinfo/node.c:
        * makeinfo/node.h:
        * makeinfo/sectioning.c:
        * makeinfo/sectioning.h:
        * makeinfo/toc.c:
        * makeinfo/toc.h:
        * makeinfo/xml.c:
        * makeinfo/xml.h:
        * makeinfo/xref.c:
        * makeinfo/xref.h: protoized functions.



Index: cmds.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/cmds.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -C2 -d -r1.30 -r1.31
*** cmds.c      12 Feb 2004 21:29:41 -0000      1.30
--- cmds.c      13 Feb 2004 22:01:38 -0000      1.31
***************
*** 40,90 ****
  #endif
  
- 
- void insert_self (), insert_space (), cm_ignore_line (), cm_ignore_arg (),
-   cm_comment (), cm_comma ();
- 
- void
-   cm_TeX (), cm_LaTeX (), cm_acronym (), cm_asterisk (), cm_b (), cm_bullet 
(),
-   cm_cite (), cm_code (), cm_copyright (), cm_ctrl (), cm_dfn (), 
cm_dircategory (),
-   cm_direntry (), cm_dmn (), cm_dots (), cm_emph (), cm_enddots (), cm_i (),
[...983 lines suppressed...]
--- 1723,1727 ----
     Do this also for ?, !, and :.  */
  void
! cm_colon (void)
  {
    if (xml)
***************
*** 1833,1838 ****
     output, for other formats it calls insert_self.  */
  void
! cm_punct (arg)
!      int arg;
  {
    if (xml && !docbook)
--- 1752,1756 ----
     output, for other formats it calls insert_self.  */
  void
! cm_punct (int arg)
  {
    if (xml && !docbook)

Index: cmds.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/cmds.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** cmds.h      23 Dec 2003 12:40:52 -0000      1.2
--- cmds.h      13 Feb 2004 22:01:38 -0000      1.3
***************
*** 2,6 ****
     $Id$
  
!    Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify
--- 2,7 ----
     $Id$
  
!    Copyright (C) 1998, 1999, 2002, 2003, 2004 Free Software Foundation,
!    Inc.
  
     This program is free software; you can redistribute it and/or modify
***************
*** 54,57 ****
--- 55,209 ----
    char *description;
  } ACRONYM_DESC;
+ 
+ /* Texinfo commands.  */
+ extern void insert_self (int arg),
+   insert_space (int arg),
+   cm_ignore_line (void),
+   cm_ignore_arg (int arg, int start_pos, int end_pos),
+   cm_comment (void),
+   cm_no_op (void);
+ 
+ /* Document structure and meta information.  */
+ extern void cm_setfilename (void),
+   cm_settitle (void),
+   cm_documentdescription (void),
+   cm_node (void),
+   cm_menu (void),
+   cm_detailmenu (void),
+   cm_dircategory (void),
+   cm_direntry (void),
+   cm_bye (void);
+ 
+ /* File inclusion.  */
+ extern void cm_include (void),
+   cm_verbatiminclude (void);
+ 
+ /* Cross referencing commands.  */
+ extern void cm_anchor (int arg),
+   cm_xref (int arg),
+   cm_pxref (int arg),
+   cm_ref (int arg),
+   cm_inforef (int arg),
+   cm_uref (int arg);
+ 
+ /* Special insertions.  */
+ extern void cm_LaTeX (int arg),
+   cm_TeX (int arg),
+   cm_bullet (int arg),
+   cm_colon (void),
+   cm_comma (int arg),
+   cm_copyright (int arg),
+   cm_dots (int arg),
+   cm_enddots (int arg),
+   cm_equiv (int arg),
+   cm_error (int arg),
+   cm_expansion (int arg),
+   cm_image (int arg),
+   cm_insert_copying (void),
+   cm_minus (int arg),
+   cm_point (int arg),
+   cm_print (int arg),
+   cm_punct (int arg),
+   cm_registeredsymbol (int arg),
+   cm_result (int arg);
+ 
+ /* Emphasis and markup.  */
+ extern void cm_acronym (int arg),
+   cm_b (int arg),
+   cm_cite (int arg, int position),
+   cm_code (int arg),
+   cm_dfn (int arg, int position),
+   cm_dmn (int arg),
+   cm_email (int arg),
+   cm_emph (int arg),
+   cm_i (int arg),
+   cm_kbd (int arg),
+   cm_key (int arg),
+   cm_math (int arg),
+   cm_not_fixed_width (int arg, int start, int end),
+   cm_r (int arg),
+   cm_sc (int arg, int start_pos, int end_pos),
+   cm_strong (int arg, int start_pos, int end_pos),
+   cm_tt (int arg),
+   cm_url (int arg, int start, int end),
+   cm_var (int arg, int start_pos, int end_pos),
+   cm_verb (int arg);
+ 
+ /* Block environments.  */
+ extern void cm_cartouche (void),
+   cm_group (void),
+   cm_display (void),
+   cm_smalldisplay (void),
+   cm_example (void),
+   cm_smallexample (void),
+   cm_smalllisp (void),
+   cm_lisp (void),
+   cm_format (void),
+   cm_smallformat (void),
+   cm_quotation (void),
+   cm_copying (void),
+   cm_flushleft (void),
+   cm_flushright (void),
+   cm_verbatim (void),
+   cm_end (void);
+ 
+ /* Tables, lists, enumerations.  */
+ extern void cm_table (void),
+   cm_ftable (void),
+   cm_vtable (void),
+   cm_itemize (void),
+   cm_enumerate (void),
+   cm_multitable (void),
+   cm_headitem (void),
+   cm_item (void),
+   cm_itemx (void),
+   cm_tab (void);
+ 
+ extern void cm_center (void),
+   cm_exdent (void),
+   cm_indent (void),
+   cm_noindent (void),
+   cm_noindent_cmd (void);
+ 
+ /* Line and page breaks.  */
+ extern void cm_asterisk (void),
+   cm_sp (void),
+   cm_page (void);
+ 
+ /* Non breaking words.  */
+ extern void cm_tie (int arg),
+   cm_w (int arg);
+ 
+ /* Title page creation.  */
+ extern void cm_titlepage (int arg),
+   cm_titlepage_cmds (void),
+   cm_titlefont (int arg),
+   cm_today (int arg);
+ 
+ /* Floats.  */
+ extern void cm_float (void),
+   cm_caption (int arg),
+   cm_shortcaption (void),
+   cm_listoffloats (void);
+ 
+ /* Indices.  */
+ extern void cm_kindex (void),
+   cm_cindex (void),
+   cm_findex (void),
+   cm_pindex (void),
+   cm_vindex (void),
+   cm_tindex (void),
+   cm_defindex (void),
+   cm_defcodeindex (void),
+   cm_synindex (void),
+   cm_printindex (void);
+ 
+ /* Conditionals. */
+ extern void cm_set (void),
+   cm_clear (void),
+   cm_ifset (void),
+   cm_ifclear (void),
+   cm_ifeq (void),
+   cm_value (int arg, int start_pos, int end_pos);
  
  #endif /* !CMDS_H */

Index: defun.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/defun.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** defun.c     10 Feb 2004 14:08:13 -0000      1.8
--- defun.c     13 Feb 2004 22:01:38 -0000      1.9
***************
*** 39,44 ****
  
  static void
! initialize_token_accumulator (accumulator)
!      struct token_accumulator *accumulator;
  {
    accumulator->length = 0;
--- 39,43 ----
  
  static void
! initialize_token_accumulator (struct token_accumulator *accumulator)
  {
    accumulator->length = 0;
***************
*** 48,54 ****
  
  static void
! accumulate_token (accumulator, token)
!      struct token_accumulator *accumulator;
!      char *token;
  {
    if (accumulator->index >= accumulator->length)
--- 47,51 ----
  
  static void
! accumulate_token (struct token_accumulator *accumulator, char *token)
  {
    if (accumulator->index >= accumulator->length)
***************
*** 65,70 ****
     pointer to just past the matching close brace. */
  static int
! scan_group_in_string (string_pointer)
!      char **string_pointer;
  {
    char *scan_string = (*string_pointer) + 1;
--- 62,66 ----
     pointer to just past the matching close brace. */
  static int
! scan_group_in_string (char **string_pointer)
  {
    char *scan_string = (*string_pointer) + 1;
***************
*** 107,112 ****
     consisting of a single space. */
  static char **
! args_from_string (string)
!      char *string;
  {
    struct token_accumulator accumulator;
--- 103,107 ----
     consisting of a single space. */
  static char **
! args_from_string (char *string)
  {
    struct token_accumulator accumulator;
***************
*** 234,240 ****
  
  static void
! process_defun_args (defun_args, auto_var_p)
!      char **defun_args;
!      int auto_var_p;
  {
    int pending_space = 0;
--- 229,233 ----
  
  static void
! process_defun_args (char **defun_args, int auto_var_p)
  {
    int pending_space = 0;
***************
*** 287,292 ****
  
  static char *
! next_nonwhite_defun_arg (arg_pointer)
!      char ***arg_pointer;
  {
    char **scan = (*arg_pointer);
--- 280,284 ----
  
  static char *
! next_nonwhite_defun_arg (char ***arg_pointer)
  {
    char **scan = (*arg_pointer);
***************
*** 308,315 ****
  
  enum insertion_type
! get_base_type (type)
!      enum insertion_type type;
  {
!   enum insertion_type base_type;
    switch (type)
      {
--- 300,306 ----
  
  enum insertion_type
! get_base_type (int type)
  {
!   int base_type;
    switch (type)
      {
***************
*** 339,350 ****
     X_P, if nonzero, says not to start a new insertion. */
  static void
! defun_internal (type, x_p)
!      enum insertion_type type;
!      int x_p;
  {
!   enum insertion_type base_type;
    char **defun_args, **scan_args;
    const char *category;
!   char *defined_name, *type_name, *type_name2;
  
    {
--- 330,341 ----
     X_P, if nonzero, says not to start a new insertion. */
  static void
! defun_internal (int type, int x_p)
  {
!   int base_type;
    char **defun_args, **scan_args;
    const char *category;
!   char *defined_name;
!   char *type_name = NULL;
!   char *type_name2 = NULL;
  
    {
***************
*** 696,702 ****
     entry included in the body of an insertion of the same type. */
  void
! cm_defun ()
  {
!   enum insertion_type type;
    char *base_command = xstrdup (command);  /* command with any `x' removed */
    int x_p = (command[strlen (command) - 1] == 'x');
--- 687,693 ----
     entry included in the body of an insertion of the same type. */
  void
! cm_defun (void)
  {
!   int type;
    char *base_command = xstrdup (command);  /* command with any `x' removed */
    int x_p = (command[strlen (command) - 1] == 'x');

Index: defun.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/defun.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** defun.h     6 Dec 2003 01:33:21 -0000       1.1.1.1
--- defun.h     13 Feb 2004 22:01:38 -0000      1.2
***************
*** 25,30 ****
  #include "insertion.h"
  
! extern enum insertion_type get_base_type ();
! extern void cm_defun ();
  
  #endif /* !DEFUN_H */
--- 25,30 ----
  #include "insertion.h"
  
! extern enum insertion_type get_base_type (int type);
! extern void cm_defun (void);
  
  #endif /* !DEFUN_H */

Index: files.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/files.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** files.c     11 Feb 2004 22:32:22 -0000      1.13
--- files.c     13 Feb 2004 22:01:38 -0000      1.14
***************
*** 21,24 ****
--- 21,25 ----
  #include "system.h"
  #include "files.h"
+ #include "html.h"
  #include "index.h"
  #include "macro.h"
***************
*** 31,35 ****
  static int node_filename_stack_size = 0;
  static char **node_filename_stack = NULL;
- 
  
  /* Looking for include files.  */
--- 32,35 ----
***************
*** 39,45 ****
     Advance INDEX to the character after the colon. */
  static char *
! extract_colon_unit (string, index)
!      char *string;
!      int *index;
  {
    int start;
--- 39,43 ----
     Advance INDEX to the character after the colon. */
  static char *
! extract_colon_unit (char *string, int *index)
  {
    int start;
***************
*** 87,93 ****
     If the file could not be found, return a NULL pointer. */
  char *
! get_file_info_in_path (filename, path, finfo)
!      char *filename, *path;
!      struct stat *finfo;
  {
    char *dir;
--- 85,89 ----
     If the file could not be found, return a NULL pointer. */
  char *
! get_file_info_in_path (char *filename, char *path, struct stat *finfo)
  {
    char *dir;
***************
*** 135,140 ****
  /* Prepend and append new paths to include_files_path.  */
  void
! prepend_to_include_path (path)
!      char *path;
  {
    if (!include_files_path)
--- 131,135 ----
  /* Prepend and append new paths to include_files_path.  */
  void
! prepend_to_include_path (char *path)
  {
    if (!include_files_path)
***************
*** 158,163 ****
  
  void
! append_to_include_path (path)
!      char *path;
  {
    if (!include_files_path)
--- 153,157 ----
  
  void
! append_to_include_path (char *path)
  {
    if (!include_files_path)
***************
*** 172,178 ****
  /* Remove the first path from the include_files_path.  */
  void
! pop_path_from_include_path ()
  {
!   int i;
    char *tmp;
  
--- 166,172 ----
  /* Remove the first path from the include_files_path.  */
  void
! pop_path_from_include_path (void)
  {
!   int i = 0;
    char *tmp;
  
***************
*** 192,197 ****
     the loaded file, or NULL if it can't be loaded. */
  char *
! find_and_load (filename)
!      char *filename;
  {
    struct stat fileinfo;
--- 186,190 ----
     the loaded file, or NULL if it can't be loaded. */
  char *
! find_and_load (char *filename)
  {
    struct stat fileinfo;
***************
*** 264,269 ****
  
  /* Pushing and popping files.  */
! void
! push_node_filename ()
  {
    if (node_filename_stack_index + 1 > node_filename_stack_size)
--- 257,262 ----
  
  /* Pushing and popping files.  */
! static void
! push_node_filename (void)
  {
    if (node_filename_stack_index + 1 > node_filename_stack_size)
***************
*** 275,280 ****
  }
  
! void
! pop_node_filename ()
  {
    node_filename = node_filename_stack[--node_filename_stack_index];
--- 268,273 ----
  }
  
! static void
! pop_node_filename (void)
  {
    node_filename = node_filename_stack[--node_filename_stack_index];
***************
*** 283,287 ****
  /* Save the state of the current input file. */
  void
! pushfile ()
  {
    FSTACK *newstack = xmalloc (sizeof (FSTACK));
--- 276,280 ----
  /* Save the state of the current input file. */
  void
! pushfile (void)
  {
    FSTACK *newstack = xmalloc (sizeof (FSTACK));
***************
*** 299,303 ****
  /* Make the current file globals be what is on top of the file stack. */
  void
! popfile ()
  {
    FSTACK *tos = filestack;
--- 292,296 ----
  /* Make the current file globals be what is on top of the file stack. */
  void
! popfile (void)
  {
    FSTACK *tos = filestack;
***************
*** 333,337 ****
  /* Flush all open files on the file stack. */
  void
! flush_file_stack ()
  {
    while (filestack)
--- 326,330 ----
  /* Flush all open files on the file stack. */
  void
! flush_file_stack (void)
  {
    while (filestack)
***************
*** 348,353 ****
     which is past all the leading directory characters.  */
  static int
! skip_directory_part (filename)
!      char *filename;
  {
    int i = strlen (filename) - 1;
--- 341,345 ----
     which is past all the leading directory characters.  */
  static int
! skip_directory_part (char *filename)
  {
    int i = strlen (filename) - 1;
***************
*** 363,369 ****
  }
  
! char *
! filename_non_directory (name)
!      char *name;
  {
    return xstrdup (name + skip_directory_part (name));
--- 355,360 ----
  }
  
! static char *
! filename_non_directory (char *name)
  {
    return xstrdup (name + skip_directory_part (name));
***************
*** 374,379 ****
     This conses up a new string. */
  char *
! filename_part (filename)
!      char *filename;
  {
    char *basename = filename_non_directory (filename);
--- 365,369 ----
     This conses up a new string. */
  char *
! filename_part (char *filename)
  {
    char *basename = filename_non_directory (filename);
***************
*** 392,399 ****
  /* Return the pathname part of filename.  This can be NULL. */
  char *
! pathname_part (filename)
!      char *filename;
  {
-   char *expand_filename ();
    char *result = NULL;
    int i;
--- 382,387 ----
  /* Return the pathname part of filename.  This can be NULL. */
  char *
! pathname_part (char *filename)
  {
    char *result = NULL;
    int i;
***************
*** 412,481 ****
  }
  
- /* Return the expansion of FILENAME. */
- char *
- expand_filename (filename, input_name)
-      char *filename, *input_name;
- {
-   int i;
-   char *full_pathname ();
- 
-   if (filename)
-     {
-       filename = full_pathname (filename);
-       if (IS_ABSOLUTE (filename)
-         || (*filename == '.' &&
-             (IS_SLASH (filename[1]) ||
-              (filename[1] == '.' && IS_SLASH (filename[2])))))
-       return filename;
-     }
-   else
-     {
-       filename = filename_non_directory (input_name);
- 
-       if (!*filename)
-         {
-           free (filename);
-           filename = xstrdup ("noname.texi");
-         }
- 
-       for (i = strlen (filename) - 1; i; i--)
-         if (filename[i] == '.')
-           break;
- 
-       if (!i)
-         i = strlen (filename);
- 
-       if (i + 6 > (strlen (filename)))
-         filename = xrealloc (filename, i + 6);
-       strcpy (filename + i, html ? ".html" : ".info");
-       return filename;
-     }
- 
-   if (IS_ABSOLUTE (input_name))
-     {
-       /* Make it so that relative names work. */
-       char *result;
-       
-       i = strlen (input_name) - 1;
- 
-       result = xmalloc (1 + strlen (input_name) + strlen (filename));
-       strcpy (result, input_name);
- 
-       while (!IS_SLASH (result[i]) && i)
-         i--;
-       if (IS_SLASH (result[i]))
-         i++;
- 
-       strcpy (&result[i], filename);
-       free (filename);
-       return result;
-     }
-   return filename;
- }
- 
  /* Return the full path to FILENAME. */
! char *
! full_pathname (filename)
!      char *filename;
  {
    int initial_character;
--- 400,406 ----
  }
  
  /* Return the full path to FILENAME. */
! static char *
! full_pathname (char *filename)
  {
    int initial_character;
***************
*** 567,573 ****
  }
  
  char *
! output_name_from_input_name (name)
!      char *name;
  {
    return expand_filename (NULL, name);
--- 492,557 ----
  }
  
+ /* Return the expansion of FILENAME. */
  char *
! expand_filename (char *filename, char *input_name)
! {
!   int i;
! 
!   if (filename)
!     {
!       filename = full_pathname (filename);
!       if (IS_ABSOLUTE (filename)
!         || (*filename == '.' &&
!             (IS_SLASH (filename[1]) ||
!              (filename[1] == '.' && IS_SLASH (filename[2])))))
!       return filename;
!     }
!   else
!     {
!       filename = filename_non_directory (input_name);
! 
!       if (!*filename)
!         {
!           free (filename);
!           filename = xstrdup ("noname.texi");
!         }
! 
!       for (i = strlen (filename) - 1; i; i--)
!         if (filename[i] == '.')
!           break;
! 
!       if (!i)
!         i = strlen (filename);
! 
!       if (i + 6 > (strlen (filename)))
!         filename = xrealloc (filename, i + 6);
!       strcpy (filename + i, html ? ".html" : ".info");
!       return filename;
!     }
! 
!   if (IS_ABSOLUTE (input_name))
!     {
!       /* Make it so that relative names work. */
!       char *result;
!       
!       i = strlen (input_name) - 1;
! 
!       result = xmalloc (1 + strlen (input_name) + strlen (filename));
!       strcpy (result, input_name);
! 
!       while (!IS_SLASH (result[i]) && i)
!         i--;
!       if (IS_SLASH (result[i]))
!         i++;
! 
!       strcpy (&result[i], filename);
!       free (filename);
!       return result;
!     }
!   return filename;
! }
! 
! char *
! output_name_from_input_name (char *name)
  {
    return expand_filename (NULL, name);
***************
*** 581,586 ****
     have enough space in the original string to modify it in place.  */
  char *
! normalize_filename (fname)
!      char *fname;
  {
    int maxlen;
--- 565,569 ----
     have enough space in the original string to modify it in place.  */
  char *
! normalize_filename (char *fname)
  {
    int maxlen;
***************
*** 685,691 ****
  
  void
! handle_delayed_writes ()
  {
!   DELAYED_WRITE *temp = (DELAYED_WRITE *) reverse_list (delayed_writes);
    int position_shift_amount, line_number_shift_amount;
    char *delayed_buf;
--- 668,675 ----
  
  void
! handle_delayed_writes (void)
  {
!   DELAYED_WRITE *temp = (DELAYED_WRITE *) reverse_list
!     ((GENERIC_LIST *) delayed_writes);
    int position_shift_amount, line_number_shift_amount;
    char *delayed_buf;

Index: files.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/files.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** files.h     3 Feb 2004 12:15:59 -0000       1.5
--- files.h     13 Feb 2004 22:01:38 -0000      1.6
***************
*** 35,47 ****
  extern FSTACK *filestack;
  
! extern void pushfile (), popfile ();
! extern void flush_file_stack ();
! extern char *get_file_info_in_path ();
! extern char *find_and_load ();
! extern char *output_name_from_input_name ();
! extern char *expand_filename ();
! extern char *filename_part ();
! extern char *pathname_part ();
! extern char *normalize_filename ();
  
  typedef struct delayed_write
--- 35,54 ----
  extern FSTACK *filestack;
  
! extern void pushfile (void);
! extern void popfile (void);
! extern void flush_file_stack (void);
! extern char *get_file_info_in_path (char *filename, char *path,
!     struct stat *finfo);
! extern char *find_and_load (char *filename);
! extern char *output_name_from_input_name (char *name);
! extern char *expand_filename (char *filename, char *input_name);
! extern char *filename_part (char *filename);
! extern char *pathname_part (char *filename);
! extern char *normalize_filename (char *fname);
! extern void append_to_include_path (char *path);
! extern void prepend_to_include_path (char *path);
! extern void pop_path_from_include_path (void);
! extern void register_delayed_write (char *delayed_command);
! extern void handle_delayed_writes (void);
  
  typedef struct delayed_write

Index: float.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/float.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** float.c     12 Feb 2004 14:13:58 -0000      1.20
--- float.c     13 Feb 2004 22:01:38 -0000      1.21
***************
*** 30,42 ****
  static FLOAT_ELT *float_stack = NULL;
  
- int node_has_listoffloats = 0;
- 
  void
! add_new_float (id, title, shorttitle, type, position)
!     char *id;
!     char *title;
!     char *shorttitle;
!     char *type;
!     char *position;
  {
    FLOAT_ELT *new = xmalloc (sizeof (FLOAT_ELT));
--- 30,36 ----
  static FLOAT_ELT *float_stack = NULL;
  
  void
! add_new_float (char *id, char *title, char *shorttitle,
!     char *type, char *position)
  {
    FLOAT_ELT *new = xmalloc (sizeof (FLOAT_ELT));
***************
*** 80,86 ****
  
  int
! count_floats_of_type_in_chapter (type, chapter)
!     char *type;
!     char *chapter;
  {
    int i = 0;
--- 74,78 ----
  
  int
! count_floats_of_type_in_chapter (char *type, char *chapter)
  {
    int i = 0;
***************
*** 99,103 ****
  
  char *
! current_float_title ()
  {
    return float_stack->title;
--- 91,95 ----
  
  char *
! current_float_title (void)
  {
    return float_stack->title;
***************
*** 105,109 ****
  
  char *
! current_float_shorttitle ()
  {
    return float_stack->shorttitle;
--- 97,101 ----
  
  char *
! current_float_shorttitle (void)
  {
    return float_stack->shorttitle;
***************
*** 111,115 ****
  
  char *
! current_float_type ()
  {
    return float_stack->type;
--- 103,107 ----
  
  char *
! current_float_type (void)
  {
    return float_stack->type;
***************
*** 117,121 ****
  
  char *
! current_float_position ()
  {
    return float_stack->position;
--- 109,113 ----
  
  char *
! current_float_position (void)
  {
    return float_stack->position;
***************
*** 123,127 ****
  
  char *
! current_float_number ()
  {
    return float_stack->number;
--- 115,119 ----
  
  char *
! current_float_number (void)
  {
    return float_stack->number;
***************
*** 129,133 ****
  
  char *
! current_float_id ()
  {
    return float_stack->id;
--- 121,125 ----
  
  char *
! current_float_id (void)
  {
    return float_stack->id;
***************
*** 135,140 ****
  
  char *
! get_float_ref (id)
!     char *id;
  {
    FLOAT_ELT *temp = float_stack;
--- 127,131 ----
  
  char *
! get_float_ref (char *id)
  {
    FLOAT_ELT *temp = float_stack;
***************
*** 154,160 ****
  }
  
! int
! float_type_exists (check_type)
!      char *check_type;
  {
    /* Check if the requested float_type exists in the floats stack.  */
--- 145,150 ----
  }
  
! static int
! float_type_exists (char *check_type)
  {
    /* Check if the requested float_type exists in the floats stack.  */
***************
*** 169,173 ****
  
  void
! cm_listoffloats ()
  {
    char *float_type;
--- 159,163 ----
  
  void
! cm_listoffloats (void)
  {
    char *float_type;
***************
*** 205,209 ****
    else if (float_type_exists (float_type))
      {
!       FLOAT_ELT *temp = (FLOAT_ELT *) reverse_list (float_stack);
        FLOAT_ELT *new_start = temp;
  
--- 195,200 ----
    else if (float_type_exists (float_type))
      {
!       FLOAT_ELT *temp = (FLOAT_ELT *) reverse_list
!         ((GENERIC_LIST *) float_stack);
        FLOAT_ELT *new_start = temp;
  
***************
*** 212,216 ****
        else
          {
!           if (!no_headers && !node_has_listoffloats)
              insert_string ("* Menu:\n\n");
          }
--- 203,207 ----
        else
          {
!           if (!no_headers)
              insert_string ("* Menu:\n\n");
          }
***************
*** 321,325 ****
                        if (strlen (temp->section) > 0)
                          { /* We got your number.  */
!                           insert_string (_("See "));
                            insert_string (temp->section);
                          }
--- 312,316 ----
                        if (strlen (temp->section) > 0)
                          { /* We got your number.  */
!                           insert_string ((char *) _("See "));
                            insert_string (temp->section);
                          }
***************
*** 327,331 ****
                          { /* Sigh, @float in an @unnumbered. :-\  */
                            insert_string ("\n          ");
!                           insert_string (_("See "));
                            insert_string ("``");
                            insert_string (expansion (temp->section_name, 0));
--- 318,322 ----
                          { /* Sigh, @float in an @unnumbered. :-\  */
                            insert_string ("\n          ");
!                           insert_string ((char *) _("See "));
                            insert_string ("``");
                            insert_string (expansion (temp->section_name, 0));
***************
*** 355,360 ****
        /* Retain the original order of float stack.  */
        temp = new_start;
!       float_stack = (FLOAT_ELT *) reverse_list (temp);
!       /* node_has_listoffloats = 1; */
      }
  
--- 346,350 ----
        /* Retain the original order of float stack.  */
        temp = new_start;
!       float_stack = (FLOAT_ELT *) reverse_list ((GENERIC_LIST *) temp);
      }
  
***************
*** 366,375 ****
  
  int
! current_float_used_title ()
  {
        return float_stack->title_used;
  }
  
! void current_float_set_title_used ()
  {
        float_stack->title_used = 1;
--- 356,365 ----
  
  int
! current_float_used_title (void)
  {
        return float_stack->title_used;
  }
  
! void current_float_set_title_used (void)
  {
        float_stack->title_used = 1;

Index: float.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/float.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** float.h     8 Jan 2004 16:11:26 -0000       1.6
--- float.h     13 Feb 2004 22:01:38 -0000      1.7
***************
*** 38,50 ****
  } FLOAT_ELT;
  
  /* Information retrieval about the current float env.  */
! extern char *current_float_id (),
!   *current_float_title (), *current_float_shorttitle (),
!   *current_float_type (), *current_float_position (),
!   *current_float_number (), *get_float_ref ();
! extern int current_float_used_title ();
! extern void current_float_set_title_used ();
  
! extern int node_has_listoffloats;
  
  #endif /* not FLOAT_H */
--- 38,56 ----
  } FLOAT_ELT;
  
+ extern void add_new_float (char *id, char *title, char *shorttitle,
+     char *type, char *position);
+ extern void current_float_set_title_used (void);
+ 
  /* Information retrieval about the current float env.  */
! extern char *current_float_id (void);
! extern char *current_float_title (void);
! extern char *current_float_shorttitle (void);
! extern char *current_float_type (void);
! extern char *current_float_position (void);
! extern char *current_float_number (void);
! extern char *get_float_ref (char *id);
  
! extern int count_floats_of_type_in_chapter (char *type, char *chapter);
! extern int current_float_used_title (void);
  
  #endif /* not FLOAT_H */

Index: footnote.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/footnote.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** footnote.c  6 Jan 2004 18:42:10 -0000       1.4
--- footnote.c  13 Feb 2004 22:01:38 -0000      1.5
***************
*** 22,25 ****
--- 22,26 ----
  #include "macro.h"
  #include "makeinfo.h"
+ #include "node.h"
  #include "xml.h"
  #include "xref.h"
***************
*** 55,63 ****
  int first_footnote_this_node = 1;
  int footnote_count = 0;
! 
  /* Set the footnote style based on the style identifier in STRING. */
  int
! set_footnote_style (string)
!      char *string;
  {
    if (strcasecmp (string, "separate") == 0)
--- 56,63 ----
  int first_footnote_this_node = 1;
  int footnote_count = 0;
! 
  /* Set the footnote style based on the style identifier in STRING. */
  int
! set_footnote_style (char *string)
  {
    if (strcasecmp (string, "separate") == 0)
***************
*** 72,76 ****
  
  void
! cm_footnotestyle ()
  {
    char *arg;
--- 72,76 ----
  
  void
! cm_footnotestyle (void)
  {
    char *arg;
***************
*** 97,103 ****
  /* A method for remembering footnotes.  Note that this list gets output
     at the end of the current node. */
! void
! remember_note (marker, note)
!      char *marker, *note;
  {
    FN *temp = xmalloc (sizeof (FN));
--- 97,102 ----
  /* A method for remembering footnotes.  Note that this list gets output
     at the end of the current node. */
! static void
! remember_note (char *marker, char *note)
  {
    FN *temp = xmalloc (sizeof (FN));
***************
*** 113,117 ****
  /* How to get rid of existing footnotes. */
  static void
! free_pending_notes ()
  {
    FN *temp;
--- 112,116 ----
  /* How to get rid of existing footnotes. */
  static void
! free_pending_notes (void)
  {
    FN *temp;
***************
*** 135,139 ****
      where "*" is the (optional) marker character for this note. */
  void
! cm_footnote ()
  {
    char *marker;
--- 134,138 ----
      where "*" is the (optional) marker character for this note. */
  void
! cm_footnote (void)
  {
    char *marker;
***************
*** 287,291 ****
  /* Output the footnotes.  We are at the end of the current node. */
  void
! output_pending_notes ()
  {
    FN *footnote = pending_notes;
--- 286,290 ----
  /* Output the footnotes.  We are at the end of the current node. */
  void
! output_pending_notes (void)
  {
    FN *footnote = pending_notes;
***************
*** 297,301 ****
      {
        add_html_block_elt ("<div class=\"footnote\">\n<hr>\n<h4>");
!       add_word (_("Footnotes"));
        add_word ("</h4>\n");
      }
--- 296,300 ----
      {
        add_html_block_elt ("<div class=\"footnote\">\n<hr>\n<h4>");
!       add_word ((char *) _("Footnotes"));
        add_word ("</h4>\n");
      }

Index: footnote.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/footnote.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** footnote.h  6 Dec 2003 01:33:25 -0000       1.1.1.1
--- footnote.h  13 Feb 2004 22:01:38 -0000      1.2
***************
*** 2,6 ****
     $Id$
  
!    Copyright (C) 1998 Free Software Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify
--- 2,7 ----
     $Id$
  
!    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
!    Foundation, Inc.
  
     This program is free software; you can redistribute it and/or modify
***************
*** 28,37 ****
  
  /* The Texinfo @commands.  */
! extern void cm_footnote ();
! extern void cm_footnotestyle ();
  
! extern int set_footnote_style ();    /* called for -s option */
  
! extern void output_pending_notes (); /* called for output */
  
  #endif /* !FOOTNOTE_H */
--- 29,38 ----
  
  /* The Texinfo @commands.  */
! extern void cm_footnote (void);
! extern void cm_footnotestyle (void);
  
! extern int set_footnote_style (char *string);    /* called for -s option */
  
! extern void output_pending_notes (void); /* called for output */
  
  #endif /* !FOOTNOTE_H */

Index: html.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/html.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** html.c      25 Jan 2004 14:26:48 -0000      1.11
--- html.c      13 Feb 2004 22:01:38 -0000      1.12
***************
*** 21,24 ****
--- 21,25 ----
  #include "system.h"
  #include "cmds.h"
+ #include "files.h"
  #include "html.h"
  #include "lang.h"
***************
*** 27,180 ****
  #include "sectioning.h"
  
- HSTACK *htmlstack = NULL;
- 
- static char *process_css_file (/* char * */);
- 
- /* See html.h.  */
- int html_output_head_p = 0;
- int html_title_written = 0;
- 
- 
- void
- html_output_head ()
- {
-   static const char *html_title = NULL;
- 
-   if (html_output_head_p)
-     return;
-   html_output_head_p = 1;
- 
-   /* The <title> should not have markup, so use text_expansion.  */
-   if (!html_title)
-     html_title = escape_string (title ? text_expansion (title) : 
_("Untitled"));
- 
-   /* Make sure this is the very first string of the output document.  */
-   output_paragraph_offset = 0;
- 
-   add_html_block_elt_args ("<html lang=\"%s\">\n<head>\n",
-       language_table[language_code].abbrev);
- 
-   /* When splitting, add current node's name to title if it's available and 
not
-      Top.  */
-   if (splitting && current_node && !STREQ (current_node, "Top"))
-     add_word_args ("<title>%s - %s</title>\n",
-         escape_string (xstrdup (current_node)), html_title);
-   else
-     add_word_args ("<title>%s</title>\n",  html_title);
- 
-   add_word ("<meta http-equiv=\"Content-Type\" content=\"text/html");
-   if (document_encoding_code != no_encoding)
-     add_word_args ("; charset=%s",
-                    encoding_table[document_encoding_code].encname);
-   add_word ("\">\n");
- 
-   if (!document_description)
-     document_description = html_title;
- 
-   add_word_args ("<meta name=\"description\" content=\"%s\">\n",
-                  document_description);
-   add_word_args ("<meta name=\"generator\" content=\"makeinfo %s\">\n",
-                  VERSION);
- 
-   /* Navigation bar links.  */
-   if (!splitting)
-     add_word ("<link title=\"Top\" rel=\"top\" href=\"#Top\">\n");
-   else if (tag_table)
-     {
-       /* Always put a top link.  */
-       add_word ("<link title=\"Top\" rel=\"start\" 
href=\"index.html#Top\">\n");
- 
-       /* We already have a top link, avoid duplication.  */
-       if (tag_table->up && !STREQ (tag_table->up, "Top"))
-         add_link (tag_table->up, "rel=\"up\"");
- 
-       if (tag_table->prev)
-         add_link (tag_table->prev, "rel=\"prev\"");
- 
-       if (tag_table->next)
-         add_link (tag_table->next, "rel=\"next\"");
- 
-       /* fixxme: Look for a way to put links to various indices in the
-          document.  Also possible candidates to be added here are First and
-          Last links.  */
-     }
-   else
-     {
-       /* We are splitting, but we neither have a tag_table.  So this must be
-          index.html.  So put a link to Top. */
-       add_word ("<link title=\"Top\" rel=\"start\" href=\"#Top\">\n");
-     }
- 
-   add_word ("<link href=\"http://www.gnu.org/software/texinfo/\"; \
- rel=\"generator-home\" title=\"Texinfo Homepage\">\n");
- 
-   if (copying_text)
-     { /* copying_text has already been fully expanded in
-          begin_insertion (by full_expansion), so use insert_ rather than
-          add_.  It is not ideal that we include the html markup here within
-          <head>, but the alternative is to have yet more and different
-          expansions of the copying text.  Yuck.  */
-       insert_string ("<!--\n");
-       insert_string (copying_text);
-       insert_string ("-->\n");
-     }
- 
-   /* Put the style definitions in a comment for the sake of browsers
-      that don't support <style>.  */
-   add_word ("<meta http-equiv=\"Content-Style-Type\" 
content=\"text/css\">\n");
-   add_word ("<style type=\"text/css\"><!--\n");
- 
-   {
-     char *css_inline = NULL;
- 
-     if (css_include)
-       /* This writes out any @import commands from the --css-file,
-          and returns any actual css code following the imports.  */
-       css_inline = process_css_file (css_include);
- 
-     /* This seems cleaner than adding <br>'s at the end of each line for
-        these "roman" displays.  It's hardly the end of the world if the
-        browser doesn't do <style>s, in any case; they'll just come out in
-        typewriter.  */
- #define CSS_FONT_INHERIT "font-family:inherit"
-     add_word_args ("  pre.display { %s }\n", CSS_FONT_INHERIT);
-     add_word_args ("  pre.format  { %s }\n", CSS_FONT_INHERIT);
- 
-     /* Alternatively, we could do <font size=-1> in insertion.c, but this
-        way makes it easier to override.  */
- #define CSS_FONT_SMALLER "font-size:smaller"
-     add_word_args ("  pre.smalldisplay { %s; %s }\n", CSS_FONT_INHERIT,
-                    CSS_FONT_SMALLER);
-     add_word_args ("  pre.smallformat  { %s; %s }\n", CSS_FONT_INHERIT,
-                    CSS_FONT_SMALLER);
-     add_word_args ("  pre.smallexample { %s }\n", CSS_FONT_SMALLER);
-     add_word_args ("  pre.smalllisp    { %s }\n", CSS_FONT_SMALLER);
- 
-     /* Since HTML doesn't have a sc element, we use span with a bit of
-        CSS spice instead.  */
- #define CSS_FONT_SMALL_CAPS "font-variant:small-caps"
-     add_word_args ("  span.sc { %s }\n", CSS_FONT_SMALL_CAPS);
- 
-     /* Roman font class.  */
- #define CSS_FONT_ROMAN "font-family: serif; font-weight: normal;"
-     add_word_args ("  span.roman { %s } \n", CSS_FONT_ROMAN);
- 
-     /* Write out any css code from the user's --css-file.  */
-     if (css_inline)
-       insert_string (css_inline);
- 
-     add_word ("--></style>\n");
-   }
- 
-   add_word ("</head>\n<body>\n");
- 
-   if (title && !html_title_written && titlepage_cmd_present)
-     {
-       add_word_args ("<h1 class=\"settitle\">%s</h1>\n", html_title);
-       html_title_written = 1;
-     }
- }
- 
- 
  
  /* Append CHAR to BUFFER, (re)allocating as necessary.  We don't handle
--- 28,31 ----
***************
*** 188,194 ****
  } buffer_type;
  
- 
  static buffer_type *
! init_buffer ()
  {
    buffer_type *buf = xmalloc (sizeof (buffer_type));
--- 39,44 ----
  } buffer_type;
  
  static buffer_type *
! init_buffer (void)
  {
    buffer_type *buf = xmalloc (sizeof (buffer_type));
***************
*** 200,208 ****
  }
  
- 
  static void
! append_char (buf, c)
!     buffer_type *buf;
!     int c;
  {
    buf->length++;
--- 50,55 ----
  }
  
  static void
! append_char (buffer_type *buf, int c)
  {
    buf->length++;
***************
*** 216,230 ****
  }
  
- 
  /* Read the cascading style-sheet file FILENAME.  Write out any @import
     commands, which must come first, by the definition of css.  If the
     file contains any actual css code following the @imports, return it;
     else return NULL.  */
- 
  static char *
! process_css_file (filename)
!     char *filename;
  {
!   int c, lastchar;
    FILE *f;
    buffer_type *import_text = init_buffer ();
--- 63,75 ----
  }
  
  /* Read the cascading style-sheet file FILENAME.  Write out any @import
     commands, which must come first, by the definition of css.  If the
     file contains any actual css code following the @imports, return it;
     else return NULL.  */
  static char *
! process_css_file (char *filename)
  {
!   int c;
!   int lastchar = 0;
    FILE *f;
    buffer_type *import_text = init_buffer ();
***************
*** 234,237 ****
--- 79,84 ----
      = null_state, prev_state;
  
+   prev_state = null_state;
+ 
    /* read from stdin if `-' is the filename.  */
    f = STREQ (filename, "-") ? stdin : fopen (filename, "r");
***************
*** 336,347 ****
    return inline_text->buffer;
  }
  
  
  
  /* Escape HTML special characters in the string if necessary,
     returning a pointer to a possibly newly-allocated one. */
  char *
! escape_string (string)
!      char * string;
  {
    int i=0, newlen=0;
--- 183,338 ----
    return inline_text->buffer;
  }
+ 
+ HSTACK *htmlstack = NULL;
+ 
+ /* See html.h.  */
+ int html_output_head_p = 0;
+ int html_title_written = 0;
+ 
+ void
+ html_output_head (void)
+ {
+   static const char *html_title = NULL;
+ 
+   if (html_output_head_p)
+     return;
+   html_output_head_p = 1;
+ 
+   /* The <title> should not have markup, so use text_expansion.  */
+   if (!html_title)
+     html_title = escape_string (title ?
+         text_expansion (title) : (char *) _("Untitled"));
+ 
+   /* Make sure this is the very first string of the output document.  */
+   output_paragraph_offset = 0;
+ 
+   add_html_block_elt_args ("<html lang=\"%s\">\n<head>\n",
+       language_table[language_code].abbrev);
+ 
+   /* When splitting, add current node's name to title if it's available and 
not
+      Top.  */
+   if (splitting && current_node && !STREQ (current_node, "Top"))
+     add_word_args ("<title>%s - %s</title>\n",
+         escape_string (xstrdup (current_node)), html_title);
+   else
+     add_word_args ("<title>%s</title>\n",  html_title);
+ 
+   add_word ("<meta http-equiv=\"Content-Type\" content=\"text/html");
+   if (document_encoding_code != no_encoding)
+     add_word_args ("; charset=%s",
+                    encoding_table[document_encoding_code].encname);
+   add_word ("\">\n");
+ 
+   if (!document_description)
+     document_description = html_title;
+ 
+   add_word_args ("<meta name=\"description\" content=\"%s\">\n",
+                  document_description);
+   add_word_args ("<meta name=\"generator\" content=\"makeinfo %s\">\n",
+                  VERSION);
+ 
+   /* Navigation bar links.  */
+   if (!splitting)
+     add_word ("<link title=\"Top\" rel=\"top\" href=\"#Top\">\n");
+   else if (tag_table)
+     {
+       /* Always put a top link.  */
+       add_word ("<link title=\"Top\" rel=\"start\" 
href=\"index.html#Top\">\n");
+ 
+       /* We already have a top link, avoid duplication.  */
+       if (tag_table->up && !STREQ (tag_table->up, "Top"))
+         add_link (tag_table->up, "rel=\"up\"");
+ 
+       if (tag_table->prev)
+         add_link (tag_table->prev, "rel=\"prev\"");
+ 
+       if (tag_table->next)
+         add_link (tag_table->next, "rel=\"next\"");
+ 
+       /* fixxme: Look for a way to put links to various indices in the
+          document.  Also possible candidates to be added here are First and
+          Last links.  */
+     }
+   else
+     {
+       /* We are splitting, but we neither have a tag_table.  So this must be
+          index.html.  So put a link to Top. */
+       add_word ("<link title=\"Top\" rel=\"start\" href=\"#Top\">\n");
+     }
+ 
+   add_word ("<link href=\"http://www.gnu.org/software/texinfo/\"; \
+ rel=\"generator-home\" title=\"Texinfo Homepage\">\n");
+ 
+   if (copying_text)
+     { /* copying_text has already been fully expanded in
+          begin_insertion (by full_expansion), so use insert_ rather than
+          add_.  It is not ideal that we include the html markup here within
+          <head>, but the alternative is to have yet more and different
+          expansions of the copying text.  Yuck.  */
+       insert_string ("<!--\n");
+       insert_string (copying_text);
+       insert_string ("-->\n");
+     }
+ 
+   /* Put the style definitions in a comment for the sake of browsers
+      that don't support <style>.  */
+   add_word ("<meta http-equiv=\"Content-Style-Type\" 
content=\"text/css\">\n");
+   add_word ("<style type=\"text/css\"><!--\n");
+ 
+   {
+     char *css_inline = NULL;
+ 
+     if (css_include)
+       /* This writes out any @import commands from the --css-file,
+          and returns any actual css code following the imports.  */
+       css_inline = process_css_file (css_include);
+ 
+     /* This seems cleaner than adding <br>'s at the end of each line for
+        these "roman" displays.  It's hardly the end of the world if the
+        browser doesn't do <style>s, in any case; they'll just come out in
+        typewriter.  */
+ #define CSS_FONT_INHERIT "font-family:inherit"
+     add_word_args ("  pre.display { %s }\n", CSS_FONT_INHERIT);
+     add_word_args ("  pre.format  { %s }\n", CSS_FONT_INHERIT);
+ 
+     /* Alternatively, we could do <font size=-1> in insertion.c, but this
+        way makes it easier to override.  */
+ #define CSS_FONT_SMALLER "font-size:smaller"
+     add_word_args ("  pre.smalldisplay { %s; %s }\n", CSS_FONT_INHERIT,
+                    CSS_FONT_SMALLER);
+     add_word_args ("  pre.smallformat  { %s; %s }\n", CSS_FONT_INHERIT,
+                    CSS_FONT_SMALLER);
+     add_word_args ("  pre.smallexample { %s }\n", CSS_FONT_SMALLER);
+     add_word_args ("  pre.smalllisp    { %s }\n", CSS_FONT_SMALLER);
+ 
+     /* Since HTML doesn't have a sc element, we use span with a bit of
+        CSS spice instead.  */
+ #define CSS_FONT_SMALL_CAPS "font-variant:small-caps"
+     add_word_args ("  span.sc { %s }\n", CSS_FONT_SMALL_CAPS);
+ 
+     /* Roman font class.  */
+ #define CSS_FONT_ROMAN "font-family: serif; font-weight: normal;"
+     add_word_args ("  span.roman { %s } \n", CSS_FONT_ROMAN);
+ 
+     /* Write out any css code from the user's --css-file.  */
+     if (css_inline)
+       insert_string (css_inline);
+ 
+     add_word ("--></style>\n");
+   }
  
+   add_word ("</head>\n<body>\n");
  
+   if (title && !html_title_written && titlepage_cmd_present)
+     {
+       add_word_args ("<h1 class=\"settitle\">%s</h1>\n", html_title);
+       html_title_written = 1;
+     }
+ }
  
  /* Escape HTML special characters in the string if necessary,
     returning a pointer to a possibly newly-allocated one. */
  char *
! escape_string (char *string)
  {
    int i=0, newlen=0;
***************
*** 395,406 ****
    return newstring - newlen;
  }
- 
- 
  
  /* Save current tag.  */
! void
! push_tag (tag, attribs)
!      char *tag;
!      char *attribs;
  {
    HSTACK *newstack = xmalloc (sizeof (HSTACK));
--- 386,393 ----
    return newstring - newlen;
  }
  
  /* Save current tag.  */
! static void
! push_tag (char *tag, char *attribs)
  {
    HSTACK *newstack = xmalloc (sizeof (HSTACK));
***************
*** 413,418 ****
  
  /* Get last tag.  */
! void
! pop_tag ()
  {
    HSTACK *tos = htmlstack;
--- 400,405 ----
  
  /* Get last tag.  */
! static void
! pop_tag (void)
  {
    HSTACK *tos = htmlstack;
***************
*** 433,438 ****
     If so, remove it, keeping whitespace intact.  */
  int
! rollback_empty_tag (tag)
!      char *tag;
  {
    int check_position = output_paragraph_offset;
--- 420,424 ----
     If so, remove it, keeping whitespace intact.  */
  int
! rollback_empty_tag (char *tag)
  {
    int check_position = output_paragraph_offset;
***************
*** 555,564 ****
  
    if (*tag)
!     if (start_or_end == START)
!       add_word_args (format ? "<%s %s>" : "<%s>", tag, formatted_attribs);
!     else if (!rollback_empty_tag (tag))
!       /* Insert close tag only if we didn't rollback,
!          in which case the opening tag is removed.  */
!       add_word_args ("</%s>", tag);
  
    if ((start_or_end != START) && old_tag && *old_tag)
--- 541,552 ----
  
    if (*tag)
!     {
!       if (start_or_end == START)
!         add_word_args (format ? "<%s %s>" : "<%s>", tag, formatted_attribs);
!       else if (!rollback_empty_tag (tag))
!         /* Insert close tag only if we didn't rollback,
!            in which case the opening tag is removed.  */
!         add_word_args ("</%s>", tag);
!     }
  
    if ((start_or_end != START) && old_tag && *old_tag)
***************
*** 570,576 ****
  
  void
! insert_html_tag (start_or_end, tag)
!      int start_or_end;
!      char *tag;
  {
    insert_html_tag_with_attribute (start_or_end, tag, NULL);
--- 558,562 ----
  
  void
! insert_html_tag (int start_or_end, char *tag)
  {
    insert_html_tag_with_attribute (start_or_end, tag, NULL);
***************
*** 580,585 ****
     other string as extra attributes. */
  void
! add_link (nodename, attributes)
!      char *nodename, *attributes;
  {
    if (nodename)
--- 566,570 ----
     other string as extra attributes. */
  void
! add_link (char *nodename, char *attributes)
  {
    if (nodename)
***************
*** 596,601 ****
     name, i.e., escape URL special characters as %<n>.  */
  void
! add_escaped_anchor_name (name)
!      char *name;
  {
    for (; *name; name++)
--- 581,585 ----
     name, i.e., escape URL special characters as %<n>.  */
  void
! add_escaped_anchor_name (char *name)
  {
    for (; *name; name++)
***************
*** 617,623 ****
     the `#' if it's an internal reference. */
  void
! add_anchor_name (nodename, href)
!      char *nodename;
!      int href;
  {
    if (href)
--- 601,605 ----
     the `#' if it's an internal reference. */
  void
! add_anchor_name (char *nodename, int href)
  {
    if (href)
***************
*** 641,647 ****
     for NODENAME */
  void
! add_url_name (nodename, href)
!      char *nodename;
!      int href;
  {
      add_nodename_to_filename (nodename, href);
--- 623,627 ----
     for NODENAME */
  void
! add_url_name (char *nodename, int href)
  {
      add_nodename_to_filename (nodename, href);
***************
*** 656,662 ****
     both map to Foo--.html.  If that happens, cm_node will put all
     the nodes whose file names clash on the same file.  */
! void
! fix_filename (filename)
!      char *filename;
  {
    char *p;
--- 636,641 ----
     both map to Foo--.html.  If that happens, cm_node will put all
     the nodes whose file names clash on the same file.  */
! static void
! fix_filename (char *filename)
  {
    char *p;
***************
*** 673,679 ****
     nodename, that's always known.  */
  static char *
! nodename_to_filename_1 (nodename, href)
!      char *nodename;
!      int href;
  {
    char *p;
--- 652,656 ----
     nodename, that's always known.  */
  static char *
! nodename_to_filename_1 (char *nodename, int href)
  {
    char *p;
***************
*** 771,777 ****
     the node name.  */
  void
! add_nodename_to_filename (nodename, href)
!      char *nodename;
!      int href;
  {
    /* for now, don't check: always output filename */
--- 748,752 ----
     the node name.  */
  void
! add_nodename_to_filename (char *nodename, int href)
  {
    /* for now, don't check: always output filename */
***************
*** 782,787 ****
  
  char *
! nodename_to_filename (nodename)
!      char *nodename;
  {
    /* The callers of nodename_to_filename use the result to produce
--- 757,761 ----
  
  char *
! nodename_to_filename (char *nodename)
  {
    /* The callers of nodename_to_filename use the result to produce

Index: html.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/html.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** html.h      17 Jan 2004 11:03:54 -0000      1.2
--- html.h      13 Feb 2004 22:01:38 -0000      1.3
***************
*** 36,58 ****
  
  /* Perform the <head> output.  */
! extern void html_output_head ();
  
  /* Escape &<>.  */
! extern char *escape_string (/* char * */);
  
  /* Open or close TAG according to START_OR_END.  */
! extern void insert_html_tag (/* int start_or_end, char *tag */);
  
  /* Output HTML <link> to NODE, plus extra ATTRIBUTES.  */
! extern void add_link (/* char *node, char *attributes */);
  
  /* Escape URL-special characters as %xy.  */
! extern void add_escaped_anchor_name (/* char *name */);
  
  /* See html.c.  */
! extern void add_anchor_name (/* nodename, href */);
! extern void add_url_name ( /* nodename, href */ );
! extern char* nodename_to_filename ( /* nodename */ );
! extern void add_nodename_to_filename ( /*nodename, href */ );
  
  #endif /* !HTML_H */
--- 36,65 ----
  
  /* Perform the <head> output.  */
! extern void html_output_head (void);
  
  /* Escape &<>.  */
! extern char *escape_string (char *string);
  
  /* Open or close TAG according to START_OR_END.  */
! extern void insert_html_tag (int start_or_end, char *tag);
  
  /* Output HTML <link> to NODE, plus extra ATTRIBUTES.  */
! extern void add_link (char *nodename, char *attributes);
  
  /* Escape URL-special characters as %xy.  */
! extern void add_escaped_anchor_name (char *name);
  
  /* See html.c.  */
! extern void add_anchor_name (char *nodename, int href);
! extern void add_url_name (char *nodename, int href);
! extern void add_nodename_to_filename (char *nodename, int href);
! extern char *nodename_to_filename (char *nodename);
! extern int rollback_empty_tag (char *tag);
! 
! #if defined (VA_FPRINTF) && __STDC__
! extern void insert_html_tag_with_attribute (int start_or_end, char *tag, char 
*format, ...);
! #else
! extern void insert_html_tag_with_attribute ();
! #endif
  
  #endif /* !HTML_H */

Index: index.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/index.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** index.c     5 Feb 2004 00:20:45 -0000       1.13
--- index.c     13 Feb 2004 22:01:38 -0000      1.14
***************
*** 21,24 ****
--- 21,25 ----
  #include "system.h"
  #include "files.h"
+ #include "html.h"
  #include "index.h"
  #include "lang.h"
***************
*** 43,53 ****
  
  /* How to compare index entries for sorting.  May be set to strcoll.  */
! int (*index_compare_fn) () = strcasecmp;
  
  /* Find which element in the known list of indices has this name.
     Returns -1 if NAME isn't found. */
  static int
! find_index_offset (name)
!      char *name;
  {
    int i;
--- 44,57 ----
  
  /* How to compare index entries for sorting.  May be set to strcoll.  */
! int (*index_compare_fn) (const char *a, const char *b) = strcasecmp;
! 
! /* Function to compare index entries for sorting.  (Calls
!    `index_compare_fn' above.)  */
! int index_element_compare (const void *element1, const void *element2);
  
  /* Find which element in the known list of indices has this name.
     Returns -1 if NAME isn't found. */
  static int
! find_index_offset (char *name)
  {
    int i;
***************
*** 60,66 ****
  /* Return a pointer to the entry of (name . index) for this name.
     Return NULL if the index doesn't exist. */
! INDEX_ALIST *
! find_index (name)
!      char *name;
  {
    int offset = find_index_offset (name);
--- 64,69 ----
  /* Return a pointer to the entry of (name . index) for this name.
     Return NULL if the index doesn't exist. */
! static INDEX_ALIST *
! find_index (char *name)
  {
    int offset = find_index_offset (name);
***************
*** 73,81 ****
  /* User-defined commands, which happens only from user-defined indexes.
     Used to initialize the builtin indices, too.  */
! void
! define_user_command (name, proc, needs_braces_p)
!      char *name;
!      COMMAND_FUNCTION *proc;
!      int needs_braces_p;
  {
    int slot = user_command_array_len;
--- 76,81 ----
  /* User-defined commands, which happens only from user-defined indexes.
     Used to initialize the builtin indices, too.  */
! static void
! define_user_command (char *name, COMMAND_FUNCTION (*proc), int needs_braces_p)
  {
    int slot = user_command_array_len;
***************
*** 96,101 ****
  /* Please release me, let me go... */
  static void
! free_index (index)
!      INDEX_ELT *index;
  {
    INDEX_ELT *temp;
--- 96,100 ----
  /* Please release me, let me go... */
  static void
! free_index (INDEX_ELT *index)
  {
    INDEX_ELT *temp;
***************
*** 116,121 ****
     would be written by a @printindex command for this index. */
  static void
! undefindex (name)
!      char *name;
  {
    int i;
--- 115,119 ----
     would be written by a @printindex command for this index. */
  static void
! undefindex (char *name)
  {
    int i;
***************
*** 140,145 ****
     html fixxme generate specific html anchor */
  static void
! index_add_arg (name)
!      char *name;
  {
    int which;
--- 138,142 ----
     html fixxme generate specific html anchor */
  static void
! index_add_arg (char *name)
  {
    int which;
***************
*** 216,220 ****
  /* The function which user defined index commands call. */
  static void
! gen_index ()
  {
    char *name = xstrdup (command);
--- 213,217 ----
  /* The function which user defined index commands call. */
  static void
! gen_index (void)
  {
    char *name = xstrdup (command);
***************
*** 228,234 ****
     If CODE is nonzero, make this a code index. */
  static void
! defindex (name, code)
!      char *name;
!      int code;
  {
    int i, slot;
--- 225,229 ----
     If CODE is nonzero, make this a code index. */
  static void
! defindex (char *name, int code)
  {
    int i, slot;
***************
*** 270,276 ****
  /* Define an index NAME, implicitly @code if CODE is nonzero.  */
  static void
! top_defindex (name, code)
!      char *name;
!      int code;
  {
    char *temp;
--- 265,269 ----
  /* Define an index NAME, implicitly @code if CODE is nonzero.  */
  static void
! top_defindex (char *name, int code)
  {
    char *temp;
***************
*** 285,289 ****
  /* Set up predefined indices.  */
  void
! init_indices ()
  {
    int i;
--- 278,282 ----
  /* Set up predefined indices.  */
  void
! init_indices (void)
  {
    int i;
***************
*** 335,341 ****
  /* Given an index name, return the offset in the_indices of this index,
     or -1 if there is no such index. */
! int
! translate_index (name)
!      char *name;
  {
    INDEX_ALIST *which = find_index (name);
--- 328,333 ----
  /* Given an index name, return the offset in the_indices of this index,
     or -1 if there is no such index. */
! static int
! translate_index (char *name)
  {
    INDEX_ALIST *which = find_index (name);
***************
*** 349,354 ****
  /* Return the index list which belongs to NAME. */
  INDEX_ELT *
! index_list (name)
!      char *name;
  {
    int which = translate_index (name);
--- 341,345 ----
  /* Return the index list which belongs to NAME. */
  INDEX_ELT *
! index_list (char *name)
  {
    int which = translate_index (name);
***************
*** 361,366 ****
  /* Define a new index command.  Arg is name of index. */
  static void
! gen_defindex (code)
!      int code;
  {
    char *name;
--- 352,356 ----
  /* Define a new index command.  Arg is name of index. */
  static void
! gen_defindex (int code)
  {
    char *name;
***************
*** 384,388 ****
  
  void
! cm_defindex ()
  {
    gen_defindex (0);
--- 374,378 ----
  
  void
! cm_defindex (void)
  {
    gen_defindex (0);
***************
*** 390,394 ****
  
  void
! cm_defcodeindex ()
  {
    gen_defindex (1);
--- 380,384 ----
  
  void
! cm_defcodeindex (void)
  {
    gen_defindex (1);
***************
*** 399,403 ****
     first one have the same index as the second one. */
  void
! cm_synindex ()
  {
    int source, target;
--- 389,393 ----
     first one have the same index as the second one. */
  void
! cm_synindex (void)
  {
    int source, target;
***************
*** 429,433 ****
  
  void
! cm_pindex ()                    /* Pinhead index. */
  {
    index_add_arg ("pg");
--- 419,423 ----
  
  void
! cm_pindex (void)                    /* Pinhead index. */
  {
    index_add_arg ("pg");
***************
*** 435,439 ****
  
  void
! cm_vindex ()                    /* Variable index. */
  {
    index_add_arg ("vr");
--- 425,429 ----
  
  void
! cm_vindex (void)                    /* Variable index. */
  {
    index_add_arg ("vr");
***************
*** 441,445 ****
  
  void
! cm_kindex ()                    /* Key index. */
  {
    index_add_arg ("ky");
--- 431,435 ----
  
  void
! cm_kindex (void)                    /* Key index. */
  {
    index_add_arg ("ky");
***************
*** 447,451 ****
  
  void
! cm_cindex ()                    /* Concept index. */
  {
    index_add_arg ("cp");
--- 437,441 ----
  
  void
! cm_cindex (void)                    /* Concept index. */
  {
    index_add_arg ("cp");
***************
*** 453,457 ****
  
  void
! cm_findex ()                    /* Function index. */
  {
    index_add_arg ("fn");
--- 443,447 ----
  
  void
! cm_findex (void)                    /* Function index. */
  {
    index_add_arg ("fn");
***************
*** 459,463 ****
  
  void
! cm_tindex ()                    /* Data Type index. */
  {
    index_add_arg ("tp");
--- 449,453 ----
  
  void
! cm_tindex (void)                    /* Data Type index. */
  {
    index_add_arg ("tp");
***************
*** 465,479 ****
  
  int
! index_element_compare (element1, element2)
!      INDEX_ELT **element1, **element2;
  {
!   return index_compare_fn ((*element1)->entry, (*element2)->entry);
  }
  
  /* Force all index entries to be unique. */
! void
! make_index_entries_unique (array, count)
!      INDEX_ELT **array;
!      int count;
  {
    int i, j;
--- 455,469 ----
  
  int
! index_element_compare (const void *element1, const void *element2)
  {
!   INDEX_ELT **elt1 = (INDEX_ELT **) element1;
!   INDEX_ELT **elt2 = (INDEX_ELT **) element2;
! 
!   return index_compare_fn ((*elt1)->entry, (*elt2)->entry);
  }
  
  /* Force all index entries to be unique. */
! static void
! make_index_entries_unique (INDEX_ELT **array, int count)
  {
    int i, j;
***************
*** 534,540 ****
     elements.  The array is terminated with a NULL pointer.  */
  
! INDEX_ELT **
! sort_index (index)
!      INDEX_ELT *index;
  {
    INDEX_ELT **array;
--- 524,529 ----
     elements.  The array is terminated with a NULL pointer.  */
  
! static INDEX_ELT **
! sort_index (INDEX_ELT *index)
  {
    INDEX_ELT **array;
***************
*** 615,622 ****
  }
  
! void
! insert_index_output_line_no (line_number, output_line_number_len)
!      int line_number;
!      int output_line_number_len;
  {
    int last_column;
--- 604,609 ----
  }
  
! static void
! insert_index_output_line_no (int line_number, int output_line_number_len)
  {
    int last_column;
***************
*** 663,667 ****
     Outputs a menu of the sorted elements of the index. */
  void
! cm_printindex ()
  {
    char *index_name;
--- 650,654 ----
     Outputs a menu of the sorted elements of the index. */
  void
! cm_printindex (void)
  {
    char *index_name;
***************
*** 762,766 ****
            /* A pathological document might have an index entry outside of any
               node.  Don't crash; try using the section name instead.  */
!           const char *index_node = index->node;
  
            line_number = index->defining_line;
--- 749,753 ----
            /* A pathological document might have an index entry outside of any
               node.  Don't crash; try using the section name instead.  */
!           char *index_node = index->node;
  
            line_number = index->defining_line;
***************
*** 775,779 ****
                            index_name);
                if (html || !no_headers)
!                 index_node = _("(outside of any node)");
              }
  
--- 762,766 ----
                            index_name);
                if (html || !no_headers)
!                 index_node = (char *) _("(outside of any node)");
              }
  
***************
*** 876,880 ****
                    if (strlen (index->section) > 0)
                      { /* We got your number.  */
!                       insert_string (_("See "));
                        insert_string (index->section);
                      }
--- 863,867 ----
                    if (strlen (index->section) > 0)
                      { /* We got your number.  */
!                       insert_string ((char *) _("See "));
                        insert_string (index->section);
                      }
***************
*** 882,886 ****
                      { /* Sigh, index in an @unnumbered. :-\  */
                        insert_string ("\n          ");
!                       insert_string (_("See "));
                        insert_string ("``");
                        insert_string (expansion (index->section_name, 0));
--- 869,873 ----
                      { /* Sigh, index in an @unnumbered. :-\  */
                        insert_string ("\n          ");
!                       insert_string ((char *) _("See "));
                        insert_string ("``");
                        insert_string (expansion (index->section_name, 0));

Index: index.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/index.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** index.h     8 Jan 2004 19:15:49 -0000       1.2
--- index.h     13 Feb 2004 22:01:38 -0000      1.3
***************
*** 81,92 ****
  
  /* Initialize all indices.  */
! extern void init_indices ();
! 
! /* Function to compare index entries for sorting.  */
! extern int (*index_compare_fn) ();
  
  extern int defined_indices;
  
! INDEX_ELT *index_list ();
  
  #endif /* !INDEX_H */
--- 81,89 ----
  
  /* Initialize all indices.  */
! extern void init_indices (void);
  
  extern int defined_indices;
  
! INDEX_ELT *index_list (char *name);
  
  #endif /* !INDEX_H */

Index: insertion.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/insertion.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -d -r1.19 -r1.20
*** insertion.c 12 Feb 2004 20:52:37 -0000      1.19
--- insertion.c 13 Feb 2004 22:01:38 -0000      1.20
***************
*** 23,29 ****
--- 23,31 ----
  #include "defun.h"
  #include "float.h"
+ #include "html.h"
  #include "insertion.h"
  #include "macro.h"
  #include "makeinfo.h"
+ #include "multi.h"
  #include "xml.h"
  
[...1022 lines suppressed...]
    itemx_flag++;
--- 2314,2318 ----
  
  void
! cm_itemx (void)
  {
    itemx_flag++;
***************
*** 2344,2348 ****
  
  void
! cm_headitem ()
  {
    headitem_flag = 1;
--- 2324,2328 ----
  
  void
! cm_headitem (void)
  {
    headitem_flag = 1;

Index: insertion.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/insertion.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** insertion.h 6 Dec 2003 01:33:34 -0000       1.1.1.1
--- insertion.h 13 Feb 2004 22:01:38 -0000      1.2
***************
*** 44,53 ****
    int filling_enabled;
    int indented_fill;
!   enum insertion_type insertion;
    int inhibited;
    int in_fixed_width_font;
  } INSERTION_ELT;
  
- 
  extern int insertion_level;
  extern INSERTION_ELT *insertion_stack;
--- 44,52 ----
    int filling_enabled;
    int indented_fill;
!   int insertion;
    int inhibited;
    int in_fixed_width_font;
  } INSERTION_ELT;
  
  extern int insertion_level;
  extern INSERTION_ELT *insertion_stack;
***************
*** 60,69 ****
  extern int after_headitem;
  
! extern void command_name_condition ();
! extern void cm_ifdocbook (), cm_ifnotdocbook(), cm_docbook ();
! extern void cm_ifhtml (), cm_ifnothtml(), cm_html ();
! extern void cm_ifinfo (), cm_ifnotinfo ();
! extern void cm_ifplaintext (), cm_ifnotplaintext();
! extern void cm_iftex (), cm_ifnottex (), cm_tex ();
! extern void cm_ifxml (), cm_ifnotxml (), cm_xml ();
  #endif /* !INSERTION_H */
--- 59,78 ----
  extern int after_headitem;
  
! extern void init_insertion_stack (void);
! extern void command_name_condition (void);
! extern void cm_ifdocbook (void), cm_ifnotdocbook(void), cm_docbook (int arg);
! extern void cm_ifhtml (void), cm_ifnothtml(void), cm_html (int arg);
! extern void cm_ifinfo (void), cm_ifnotinfo (void);
! extern void cm_ifplaintext (void), cm_ifnotplaintext(void);
! extern void cm_iftex (void), cm_ifnottex (void), cm_tex (void);
! extern void cm_ifxml (void), cm_ifnotxml (void), cm_xml (int arg);
! extern void handle_verbatim_environment (int find_end_verbatim);
! extern void begin_insertion (enum insertion_type type);
! extern void pop_insertion (void);
! extern void discard_insertions (int specials_ok);
! 
! extern int is_in_insertion_of_type (int type);
! extern int command_needs_braces (char *cmd);
! 
! extern enum insertion_type find_type_from_name (char *name);
  #endif /* !INSERTION_H */

Index: lang.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/lang.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** lang.c      12 Feb 2004 22:32:51 -0000      1.7
--- lang.c      13 Feb 2004 22:01:38 -0000      1.8
***************
*** 425,430 ****
    { last_language_code, NULL, NULL }
  };
- 
- 
  
  /* @documentlanguage.  Maybe we'll do something useful with this in the
--- 425,428 ----
***************
*** 436,440 ****
     parser can make good use of it.  */
  void
! cm_documentlanguage ()
  {
    language_code_type c;
--- 434,438 ----
     parser can make good use of it.  */
  void
! cm_documentlanguage (void)
  {
    language_code_type c;
***************
*** 473,478 ****
  
  static int
! cm_search_iso_map (html)
!       char *html;
  {
    int i;
--- 471,475 ----
  
  static int
! cm_search_iso_map (char *html)
  {
    int i;
***************
*** 496,500 ****
  
  void
! cm_documentencoding ()
  {
    if (!handling_delayed_writes)
--- 493,497 ----
  
  void
! cm_documentencoding (void)
  {
    if (!handling_delayed_writes)
***************
*** 547,551 ****
  
  char *
! current_document_encoding ()
  {
    return xstrdup (encoding_table[document_encoding_code].encname);
--- 544,548 ----
  
  char *
! current_document_encoding (void)
  {
    return xstrdup (encoding_table[document_encoding_code].encname);
***************
*** 558,565 ****
     add INFO_STR.  */
  
! void
! add_encoded_char (html_str, info_str)
!       char *html_str;
!       char *info_str;
  {
    if (html)
--- 555,560 ----
     add INFO_STR.  */
  
! static void
! add_encoded_char (char *html_str, char *info_str)
  {
    if (html)
***************
*** 589,599 ****
  
  static void
! cm_accent_generic_html (arg, start, end, html_supported, single,
!                         html_solo_standalone, html_solo)
!      int arg, start, end;
!      char *html_supported;
!      int single;
!      int html_solo_standalone;
!      char *html_solo;
  {
    static int valid_html_accent; /* yikes */
--- 584,589 ----
  
  static void
! cm_accent_generic_html (int arg, int start, int end, char *html_supported,
!     int single, int html_solo_standalone, char *html_solo)
  {
    static int valid_html_accent; /* yikes */
***************
*** 659,666 ****
  
  static void
! cm_accent_generic_no_headers (arg, start, end, single, html_solo)
!      int arg, start, end;
!      int single;
!      char *html_solo;
  {
    if (arg == END)
--- 649,654 ----
  
  static void
! cm_accent_generic_no_headers (int arg, int start, int end, int single,
!     char *html_solo)
  {
    if (arg == END)
***************
*** 708,713 ****
  
  void
! cm_accent (arg)
!     int arg;
  {
    int old_escape_html = escape_html;
--- 696,700 ----
  
  void
! cm_accent (int arg)
  {
    int old_escape_html = escape_html;
***************
*** 751,761 ****
  
  static void
! cm_accent_generic (arg, start, end, html_supported, single,
!                    html_solo_standalone, html_solo)
!      int arg, start, end;
!      char *html_supported;
!      int single;
!      int html_solo_standalone;
!      char *html_solo;
  {
    /* Accentuating space characters makes no sense, so issue a warning.  */
--- 738,743 ----
  
  static void
! cm_accent_generic (int arg, int start, int end, char *html_supported,
!     int single, int html_solo_standalone, char *html_solo)
  {
    /* Accentuating space characters makes no sense, so issue a warning.  */
***************
*** 781,786 ****
  
  void
! cm_accent_umlaut (arg, start, end)
!      int arg, start, end;
  {
    cm_accent_generic (arg, start, end, "aouAOUEeIiy", '"', 1, "uml");
--- 763,767 ----
  
  void
! cm_accent_umlaut (int arg, int start, int end)
  {
    cm_accent_generic (arg, start, end, "aouAOUEeIiy", '"', 1, "uml");
***************
*** 788,793 ****
  
  void
! cm_accent_acute (arg, start, end)
!      int arg, start, end;
  {
    cm_accent_generic (arg, start, end, "AEIOUYaeiouy", '\'', 1, "acute");
--- 769,773 ----
  
  void
! cm_accent_acute (int arg, int start, int end)
  {
    cm_accent_generic (arg, start, end, "AEIOUYaeiouy", '\'', 1, "acute");
***************
*** 795,800 ****
  
  void
! cm_accent_cedilla (arg, start, end)
!      int arg, start, end;
  {
    cm_accent_generic (arg, start, end, "Cc", ',', 1, "cedil");
--- 775,779 ----
  
  void
! cm_accent_cedilla (int arg, int start, int end)
  {
    cm_accent_generic (arg, start, end, "Cc", ',', 1, "cedil");
***************
*** 802,807 ****
  
  void
! cm_accent_hat (arg, start, end)
!      int arg, start, end;
  {
    cm_accent_generic (arg, start, end, "AEIOUaeiou", '^', 0, "circ");
--- 781,785 ----
  
  void
! cm_accent_hat (int arg, int start, int end)
  {
    cm_accent_generic (arg, start, end, "AEIOUaeiou", '^', 0, "circ");
***************
*** 809,814 ****
  
  void
! cm_accent_grave (arg, start, end)
!      int arg, start, end;
  {
    cm_accent_generic (arg, start, end, "AEIOUaeiou", '`', 0, "grave");
--- 787,791 ----
  
  void
! cm_accent_grave (int arg, int start, int end)
  {
    cm_accent_generic (arg, start, end, "AEIOUaeiou", '`', 0, "grave");
***************
*** 816,821 ****
  
  void
! cm_accent_tilde (arg, start, end)
!      int arg, start, end;
  {
    cm_accent_generic (arg, start, end, "ANOano", '~', 0, "tilde");
--- 793,797 ----
  
  void
! cm_accent_tilde (int arg, int start, int end)
  {
    cm_accent_generic (arg, start, end, "ANOano", '~', 0, "tilde");
***************
*** 826,830 ****
  /* Non-English letters/characters that don't insert themselves.  */
  void
! cm_special_char (arg)
  {
    int old_escape_html = escape_html;
--- 802,806 ----
  /* Non-English letters/characters that don't insert themselves.  */
  void
! cm_special_char (int arg)
  {
    int old_escape_html = escape_html;
***************
*** 877,882 ****
  /* Dotless i or j.  */
  void
! cm_dotless (arg, start, end)
!     int arg, start, end;
  {
    if (arg == END)
--- 853,857 ----
  /* Dotless i or j.  */
  void
! cm_dotless (int arg, int start, int end)
  {
    if (arg == END)

Index: lang.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/lang.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** lang.h      13 Dec 2003 10:54:01 -0000      1.2
--- lang.h      13 Feb 2004 22:01:38 -0000      1.3
***************
*** 128,140 ****
  
  /* The commands.  */
! extern void cm_documentlanguage (), cm_documentencoding ();
  
  /* Accents, other non-English characters.  */
! void cm_accent (), cm_special_char (), cm_dotless ();
  
! extern void cm_accent_umlaut (), cm_accent_acute (), cm_accent_cedilla (),
!   cm_accent_hat (), cm_accent_grave (), cm_accent_tilde ();
  
! extern char *current_document_encoding ();
  
  #endif /* not LANG_H */
--- 128,146 ----
  
  /* The commands.  */
! extern void cm_documentlanguage (void),
!      cm_documentencoding (void);
  
  /* Accents, other non-English characters.  */
! void cm_accent (int arg), cm_special_char (int arg),
!      cm_dotless (int arg, int start, int end);
  
! extern void cm_accent_umlaut (int arg, int start, int end),
!      cm_accent_acute (int arg, int start, int end),
!      cm_accent_cedilla (int arg, int start, int end),
!      cm_accent_hat (int arg, int start, int end),
!      cm_accent_grave (int arg, int start, int end),
!      cm_accent_tilde (int arg, int start, int end);
  
! extern char *current_document_encoding (void);
  
  #endif /* not LANG_H */

Index: macro.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/macro.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** macro.c     6 Dec 2003 01:33:40 -0000       1.1.1.1
--- macro.c     13 Feb 2004 22:01:38 -0000      1.2
***************
*** 20,23 ****
--- 20,24 ----
  #include "system.h"
  #include "cmds.h"
+ #include "files.h"
  #include "macro.h"
  #include "makeinfo.h"
***************
*** 55,60 ****
  /* Return the length of the array in ARRAY. */
  int
! array_len (array)
!      char **array;
  {
    int i = 0;
--- 56,60 ----
  /* Return the length of the array in ARRAY. */
  int
! array_len (char **array)
  {
    int i = 0;
***************
*** 67,72 ****
  
  void
! free_array (array)
!      char **array;
  {
    if (array)
--- 67,71 ----
  
  void
! free_array (char **array)
  {
    if (array)
***************
*** 82,87 ****
  /* Return the macro definition of NAME or NULL if NAME is not defined. */
  MACRO_DEF *
! find_macro (name)
!      char *name;
  {
    int i;
--- 81,85 ----
  /* Return the macro definition of NAME or NULL if NAME is not defined. */
  MACRO_DEF *
! find_macro (char *name)
  {
    int i;
***************
*** 102,112 ****
     exists with NAME, then a warning is produced, and that previous
     definition is overwritten. */
! void
! add_macro (name, arglist, body, source_file, source_lineno, flags)
!      char *name;
!      char **arglist;
!      char *body;
!      char *source_file;
!      int source_lineno, flags;
  {
    MACRO_DEF *def;
--- 100,106 ----
     exists with NAME, then a warning is produced, and that previous
     definition is overwritten. */
! static void
! add_macro (char *name, char **arglist, char *body, char *source_file,
!     int source_lineno, int flags)
  {
    MACRO_DEF *def;
***************
*** 164,169 ****
  
  char **
! get_brace_args (quote_single)
!      int quote_single;
  {
    char **arglist, *word;
--- 158,162 ----
  
  char **
! get_brace_args (int quote_single)
  {
    char **arglist, *word;
***************
*** 244,250 ****
  }
  
! char **
! get_macro_args (def)
!     MACRO_DEF *def;
  {
    int i;
--- 237,242 ----
  }
  
! static char **
! get_macro_args (MACRO_DEF *def)
  {
    int i;
***************
*** 299,305 ****
     The named parameters which appear in BODY must by surrounded
     reverse slashes, as in \foo\. */
! char *
! apply (named, actuals, body)
!      char **named, **actuals, *body;
  {
    int i;
--- 291,296 ----
     The named parameters which appear in BODY must by surrounded
     reverse slashes, as in \foo\. */
! static char *
! apply (char **named, char **actuals, char *body)
  {
    int i;
***************
*** 392,397 ****
     return its expansion as a string.  */
  char *
! expand_macro (def)
!      MACRO_DEF *def;
  {
    char **arglist;
--- 383,387 ----
     return its expansion as a string.  */
  char *
! expand_macro (MACRO_DEF *def)
  {
    char **arglist;
***************
*** 423,428 ****
  /* Execute the macro passed in DEF, a pointer to a MACRO_DEF.  */
  void
! execute_macro (def)
!      MACRO_DEF *def;
  {
    char *execution_string;
--- 413,417 ----
  /* Execute the macro passed in DEF, a pointer to a MACRO_DEF.  */
  void
! execute_macro (MACRO_DEF *def)
  {
    char *execution_string;
***************
*** 464,473 ****
     tells us what the matching @end should be.  */
  static void
! define_macro (mactype, recursive)
!      char *mactype;
!      int recursive;
  {
    int i, start;
!   char *name, *line, *last_end;
    char *body = NULL;
    char **arglist = NULL;
--- 453,461 ----
     tells us what the matching @end should be.  */
  static void
! define_macro (char *mactype, int recursive)
  {
    int i, start;
!   char *name, *line;
!   char *last_end = NULL;
    char *body = NULL;
    char **arglist = NULL;
***************
*** 713,717 ****
  
  void 
! cm_macro ()
  {
    define_macro ("macro", 0);
--- 701,705 ----
  
  void 
! cm_macro (void)
  {
    define_macro ("macro", 0);
***************
*** 719,723 ****
  
  void 
! cm_rmacro ()
  {
    define_macro ("rmacro", 1);
--- 707,711 ----
  
  void 
! cm_rmacro (void)
  {
    define_macro ("rmacro", 1);
***************
*** 729,734 ****
  
  static MACRO_DEF *
! delete_macro (name)
!      char *name;
  {
    int i;
--- 717,721 ----
  
  static MACRO_DEF *
! delete_macro (char *name)
  {
    int i;
***************
*** 749,753 ****
  
  void
! cm_unmacro ()
  {
    int i;
--- 736,740 ----
  
  void
! cm_unmacro (void)
  {
    int i;
***************
*** 797,803 ****
  /* Set the value of POINTER's offset to OFFSET. */
  ITEXT *
! remember_itext (pointer, offset)
!      char *pointer;
!      int offset;
  {
    int i;
--- 784,788 ----
  /* Set the value of POINTER's offset to OFFSET. */
  ITEXT *
! remember_itext (char *pointer, int offset)
  {
    int i;
***************
*** 853,858 ****
  /* Forget the input text associated with POINTER. */
  void
! forget_itext (pointer)
!      char *pointer;
  {
    int i;
--- 838,842 ----
  /* Forget the input text associated with POINTER. */
  void
! forget_itext (char *pointer)
  {
    int i;
***************
*** 870,874 ****
     the character just before the command that we are currently executing. */
  void
! me_append_before_this_command ()
  {
    int i;
--- 854,858 ----
     the character just before the command that we are currently executing. */
  void
! me_append_before_this_command (void)
  {
    int i;
***************
*** 882,887 ****
     and remembers the input text location, etc. */
  void
! me_execute_string (execution_string)
!      char *execution_string;
  {
    int saved_escape_html = escape_html;
--- 866,870 ----
     and remembers the input text location, etc. */
  void
! me_execute_string (char *execution_string)
  {
    int saved_escape_html = escape_html;
***************
*** 915,920 ****
     leaves no traces in the Info output.  */
  void
! me_execute_string_keep_state (execution_string, append_string)
!      char *execution_string, *append_string;
  {
    int op_orig, opcol_orig, popen_orig;
--- 898,902 ----
     leaves no traces in the Info output.  */
  void
! me_execute_string_keep_state (char *execution_string, char *append_string)
  {
    int op_orig, opcol_orig, popen_orig;
***************
*** 946,951 ****
     the current OFFSET. */
  void
! append_to_expansion_output (offset)
!      int offset;
  {
    int i;
--- 928,932 ----
     the current OFFSET. */
  void
! append_to_expansion_output (int offset)
  {
    int i;
***************
*** 971,977 ****
  /* Only write this input text iff it appears in our itext list. */
  void
! maybe_write_itext (pointer, offset)
!      char *pointer;
!      int offset;
  {
    int i;
--- 952,956 ----
  /* Only write this input text iff it appears in our itext list. */
  void
! maybe_write_itext (char *pointer, int offset)
  {
    int i;
***************
*** 993,999 ****
  
  void
! write_region_to_macro_output (string, start, end)
!      char *string;
!      int start, end;
  {
    if (macro_expansion_output_stream)
--- 972,976 ----
  
  void
! write_region_to_macro_output (char *string, int start, int end)
  {
    if (macro_expansion_output_stream)
***************
*** 1015,1019 ****
  
  void
! cm_alias ()
  {
    alias_type *a = xmalloc (sizeof (alias_type));
--- 992,996 ----
  
  void
! cm_alias (void)
  {
    alias_type *a = xmalloc (sizeof (alias_type));
***************
*** 1033,1038 ****
  /* Perform an alias expansion.  Called from read_command.  */
  char *
! alias_expand (tok)
!      char *tok;
  {
    alias_type *findit = aliases;
--- 1010,1014 ----
  /* Perform an alias expansion.  Called from read_command.  */
  char *
! alias_expand (char *tok)
  {
    alias_type *findit = aliases;
***************
*** 1075,1079 ****
  /* @definfoenclose */
  void
! cm_definfoenclose ()
  {
    enclosure_type *e = xmalloc (sizeof (enclosure_type));
--- 1051,1055 ----
  /* @definfoenclose */
  void
! cm_definfoenclose (void)
  {
    enclosure_type *e = xmalloc (sizeof (enclosure_type));
***************
*** 1094,1099 ****
  
  int
! enclosure_command (tok)
!      char *tok;
  {
    enclosure_type *findit = enclosures;
--- 1070,1074 ----
  
  int
! enclosure_command (char *tok)
  {
    enclosure_type *findit = enclosures;
***************
*** 1117,1122 ****
  /* actually perform the enclosure expansion */
  void
! enclosure_expand (arg, start, end)
!      int arg, start, end;
  {
    if (arg == START)
--- 1092,1096 ----
  /* actually perform the enclosure expansion */
  void
! enclosure_expand (int arg, int start, int end)
  {
    if (arg == START)

Index: macro.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/macro.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** macro.h     6 Dec 2003 01:33:40 -0000       1.1.1.1
--- macro.h     13 Feb 2004 22:01:38 -0000      1.2
***************
*** 49,71 ****
  #define ME_QUOTE_ARG    0x02
  
! extern void execute_macro ();
! extern MACRO_DEF *find_macro ();
! extern char *expand_macro ();
  
! extern ITEXT *remember_itext ();
! extern void forget_itext ();
! extern void maybe_write_itext ();
! extern void write_region_to_macro_output ();
! extern void append_to_expansion_output ();
! extern void me_append_before_this_command ();
! extern void me_execute_string ();
  
! extern char *alias_expand ();
! extern int enclosure_command ();
! extern void enclosure_expand ();
  
  /* The @commands.  */
! extern void cm_macro (), cm_rmacro (), cm_unmacro ();
! extern void cm_alias (), cm_definfoenclose ();
  
  #endif /* not MACRO_H */
--- 49,77 ----
  #define ME_QUOTE_ARG    0x02
  
! extern void execute_macro (MACRO_DEF *def);
! extern MACRO_DEF *find_macro (char *name);
! extern char *expand_macro (MACRO_DEF *def);
  
! extern ITEXT *remember_itext (char *pointer, int offset);
! extern void forget_itext (char *pointer);
! extern void maybe_write_itext (char *pointer, int offset);
! extern void write_region_to_macro_output (char *string, int start, int end);
! extern void append_to_expansion_output (int offset);
! extern void me_append_before_this_command (void);
! extern void me_execute_string (char *execution_string);
! extern void me_execute_string_keep_state (char *execution_string,
!     char *append_string);
  
! extern char *alias_expand (char *tok);
! extern int enclosure_command (char *tok);
! extern void enclosure_expand (int arg, int start, int end);
  
  /* The @commands.  */
! extern void cm_macro (void), cm_rmacro (void), cm_unmacro (void);
! extern void cm_alias (void), cm_definfoenclose (void);
! 
! extern int array_len (char **array);
! extern void free_array (char **array);
! extern char **get_brace_args (int quote_single);
  
  #endif /* not MACRO_H */

Index: makeinfo.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/makeinfo.c,v
retrieving revision 1.43
retrieving revision 1.44
diff -C2 -d -r1.43 -r1.44
*** makeinfo.c  7 Feb 2004 11:36:39 -0000       1.43
--- makeinfo.c  13 Feb 2004 22:01:38 -0000      1.44
***************
*** 36,39 ****
--- 36,40 ----
  #include "macro.h"
  #include "node.h"
+ #include "sectioning.h"
  #include "toc.h"
  #include "xml.h"
***************
*** 154,208 ****
  BRACE_ELEMENT *brace_stack = NULL;
  
[...1345 lines suppressed...]
--- 3997,4001 ----
  
  char *
! text_expansion (char *str)
  {
    char *ret;
***************
*** 4131,4136 ****
     Returns 0 if successful, or nonzero if STRING isn't one of the above. */
  int
! set_paragraph_indent (string)
!      char *string;
  {
    if (strcmp (string, "asis") == 0 || strcmp (string, _("asis")) == 0)
--- 4024,4028 ----
     Returns 0 if successful, or nonzero if STRING isn't one of the above. */
  int
! set_paragraph_indent (char *string)
  {
    if (strcmp (string, "asis") == 0 || strcmp (string, _("asis")) == 0)

Index: makeinfo.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/makeinfo.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** makeinfo.h  3 Feb 2004 12:15:59 -0000       1.5
--- makeinfo.h  13 Feb 2004 22:01:39 -0000      1.6
***************
*** 39,44 ****
     stream, because it has already been written. */
  DECLARE (int, me_inhibit_expansion, 0);
- 
- extern char *expansion (), *text_expansion (), *full_expansion ();
  
  /* Current output stream. */
--- 39,42 ----
***************
*** 135,139 ****
  /* Nonzero means escape characters in HTML output. */
  DECLARE (int, escape_html, 1);
- extern char *escape_string (); /* do HTML escapes */
  
  /* Access key number for next menu entry to be generated (1 to 9, or 10 to
--- 133,136 ----
***************
*** 304,309 ****
    (strncmp (input_text + input_text_offset, string, strlen (string)) == 0)
  
  /* Possibly return Local Variables trailer for Info output.  */
! extern char *info_trailer ();
  
  #endif /* not MAKEINFO_H */
--- 301,374 ----
    (strncmp (input_text + input_text_offset, string, strlen (string)) == 0)
  
+ /* Any list with a member named `next'.  */
+ typedef struct generic_list {
+   struct generic_list *next;
+ } GENERIC_LIST;
+ 
+ /* Reverse the order of a list.  */
+ extern GENERIC_LIST * reverse_list (GENERIC_LIST *list);
+ 
  /* Possibly return Local Variables trailer for Info output.  */
! extern char *info_trailer (void),
!   *expansion (char *str, int implicit_code),
!   *text_expansion (char *str),
!   *full_expansion (char *str, int implicit_code);
! 
! extern void free_and_clear (char **pointer),
!   add_word (char *string),
!   add_char (int character),
!   add_meta_char (int character),
!   close_single_paragraph (void),
!   insert_string (char *string),
!   insert (int character),
!   get_rest_of_line (int expand, char **string),
!   add_html_block_elt (char *string),
!   get_until_in_braces (char *match, char **string),
!   get_until_in_line (int expand, char *match, char **string),
!   canon_white (char *string),
!   discard_until (char *string),
!   indent (int amount),
!   kill_self_indent (int count),
!   backup_input_pointer (void),
!   inhibit_output_flushing (void),
!   uninhibit_output_flushing (void),
!   flush_output (void),
!   start_paragraph (void),
!   close_paragraph (void),
!   close_insertion_paragraph (void),
!   init_paragraph (void),
!   ignore_blank_line (void),
!   reader_loop (void),
!   discard_braces (void),
!   replace_with_expansion (int from, int *to),
!   fix_whitespace (char *string),
!   add_html_elt (char *string);
! 
! extern int get_until (char *match, char **string),
!   set_paragraph_indent (char *string),
!   self_delimiting (int character),
!   search_forward (char *string, int from),
!   search_forward_until_pos (char *string, int from, int end_pos),
!   next_nonwhitespace_character (void),
!   fs_error (char *filename);
! 
! #if defined (VA_FPRINTF) && __STDC__
! /* Unfortunately we must use prototypes if we are to use <stdarg.h>.  */
! extern void add_word_args (const char *, ...),
!   add_html_block_elt_args (const char *, ...),
!   execute_string (char *, ...),
!   warning (const char *format, ...),
!   error (const char *format, ...),
!   line_error (const char *format, ...),
!   file_line_error (char *infile, int lno, const char *format, ...);
! #else
! extern void add_word_args (),
!   add_html_block_elt_args (),
!   execute_string (),
!   warning (),
!   error (),
!   line_error (),
!   file_line_error ();
! #endif /* no prototypes */
  
  #endif /* not MAKEINFO_H */

Index: multi.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/multi.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** multi.c     9 Feb 2004 23:20:24 -0000       1.5
--- multi.c     13 Feb 2004 22:01:39 -0000      1.6
***************
*** 22,27 ****
--- 22,29 ----
  
  #include "system.h"
+ #include "cmds.h"
  #include "insertion.h"
  #include "makeinfo.h"
+ #include "multi.h"
  #include "xml.h"
  
***************
*** 83,206 ****
  /* whether this is the first row. */
  static int first_row;
- 
- static void output_multitable_row ();
- 
- /* Output a row.  Calls insert, but also flushes the buffered output
-    when we see a newline, since in multitable every line is a separate
-    paragraph.  */
- static void
- out_char (ch)
-     int ch;
- {
-   if (html || xml)
-     add_char (ch);
-   else
-     {
-       int env = select_output_environment (0);
-       insert (ch);
-       if (ch == '\n')
-       {
-         uninhibit_output_flushing ();
-         flush_output ();
-         inhibit_output_flushing ();
-       }
-       select_output_environment (env);
-     }
- }
- 
- 
- void
- draw_horizontal_separator ()
- {
-   int i, j, s;
- 
-   if (html)
-     {
-       add_word ("<hr>");
-       return;
-     }
-   if (xml)
-     return;
- 
-   for (s = 0; s < envs[0].current_indent; s++)
-     out_char (' ');
-   if (vsep)
-     out_char ('+');
-   for (i = 1; i <= last_column; i++) {
-     for (j = 0; j <= envs[i].fill_column; j++)
-       out_char ('-');
-     if (vsep)
-       out_char ('+');
-   }
-   out_char ('\n');
- }
- 
  
- /* multitable strategy:
-     for each item {
-        for each column in an item {
-         initialize a new paragraph
-         do ordinary formatting into the new paragraph
-         save the paragraph away
-         repeat if there are more paragraphs in the column
-       }
-       dump out the saved paragraphs and free the storage
-     }
- 
-    For HTML we construct a simple HTML 3.2 table with <br>s inserted
-    to help non-tables browsers.  address@hidden' inserts a <tr> and 
address@hidden'
-    inserts <td>; we also try to close <tr>.  The only real
-    alternative is to rely on the info formatting engine and present
-    preformatted text.  */
- 
- void
- do_multitable ()
- {
-   int ncolumns;
- 
-   if (multitable_active)
-     {
-       line_error ("Multitables cannot be nested");
-       return;
-     }
- 
-   close_single_paragraph ();
- 
-   /* scan the current item function to get the field widths
-      and number of columns, and set up the output environment list
-      accordingly. */
-   /*  if (docbook)*/ /* 05-08 */
-   if (xml)
-     xml_no_para = 1;
-   ncolumns = setup_multitable_parameters ();
-   first_row = 1;
- 
-   /* <p> for non-tables browsers.  @multitable implicitly ends the
-      current paragraph, so this is ok.  */
-   if (html)
-     add_html_block_elt ("<p><table summary=\"\">");
-   /*  else if (docbook)*/ /* 05-08 */
-   else if (xml)
-     {
-       int *widths = xmalloc (ncolumns * sizeof (int));
-       int i;
-       for (i=0; i<ncolumns; i++)
-       widths[i] = envs[i+1].fill_column;
-       xml_begin_multitable (ncolumns, widths);
-       free (widths);
-     }
- 
-   if (hsep)
-     draw_horizontal_separator ();
- 
-   /* The next @item command will direct stdout into the first column
-      and start processing.  @tab will then switch to the next column,
-      and @item will flush out the saved output and return to the first
-      column.  Environment #1 is the first column.  (Environment #0 is
-      the normal output) */
- 
-   ++multitable_active;
- }
- 
  /* Called to handle a {...} template on the @multitable line.
     We're at the { and our first job is to find the matching }; as a side
--- 85,89 ----
***************
*** 208,213 ****
     expand the template text and return the width of that string.  */
  static unsigned
! find_template_width (params)
!      char **params;
  {
    char *template, *xtemplate;
--- 91,95 ----
     expand the template text and return the width of that string.  */
  static unsigned
! find_template_width (char **params)
  {
    char *template, *xtemplate;
***************
*** 249,258 ****
  }
  
  
  /* Read the parameters for a multitable from the current command
     line, save the parameters away, and return the
     number of columns. */
! int
! setup_multitable_parameters ()
  {
    char *params = insertion_stack->item_function;
--- 131,191 ----
  }
  
+ /* Direct current output to environment number N.  Used when
+    switching work from one column of a multitable to the next.
+    Returns previous environment number. */
+ static int 
+ select_output_environment (int n)
+ {
+   struct env *e = &envs[current_env_no];
+   int old_env_no = current_env_no;
+ 
+   /* stash current env info from global vars into the old environment */
+   e->output_paragraph = output_paragraph;
+   e->output_paragraph_offset = output_paragraph_offset;
+   e->meta_char_pos = meta_char_pos;
+   e->output_column = output_column;
+   e->paragraph_is_open = paragraph_is_open;
+   e->current_indent = current_indent;
+   e->fill_column = fill_column;
+ 
+   /* now copy new environment into global vars */
+   current_env_no = n;
+   e = &envs[current_env_no];
+   output_paragraph = e->output_paragraph;
+   output_paragraph_offset = e->output_paragraph_offset;
+   meta_char_pos = e->meta_char_pos;
+   output_column = e->output_column;
+   paragraph_is_open = e->paragraph_is_open;
+   current_indent = e->current_indent;
+   fill_column = e->fill_column;
+   return old_env_no;
+ }
+ 
+ /* Initialize environment number ENV_NO, of width WIDTH.
+    The idea is that we're going to use one environment for each column of
+    a multitable, so we can build them up separately and print them
+    all out at the end. */
+ static int
+ setup_output_environment (int env_no, int width)
+ {
+   int old_env = select_output_environment (env_no);
+ 
+   /* clobber old environment and set width of new one */
+   init_paragraph ();
+ 
+   /* make our change */
+   fill_column = width;
+ 
+   /* Save new environment and restore previous one. */
+   select_output_environment (old_env);
+ 
+   return env_no;
+ }
  
  /* Read the parameters for a multitable from the current command
     line, save the parameters away, and return the
     number of columns. */
! static int
! setup_multitable_parameters (void)
  {
    char *params = insertion_stack->item_function;
***************
*** 332,393 ****
  }
  
! /* Initialize environment number ENV_NO, of width WIDTH.
!    The idea is that we're going to use one environment for each column of
!    a multitable, so we can build them up separately and print them
!    all out at the end. */
! int
! setup_output_environment (env_no, width)
!     int env_no;
!     int width;
  {
!   int old_env = select_output_environment (env_no);
  
-   /* clobber old environment and set width of new one */
-   init_paragraph ();
  
!   /* make our change */
!   fill_column = width;
  
!   /* Save new environment and restore previous one. */
!   select_output_environment (old_env);
  
!   return env_no;
  }
  
! /* Direct current output to environment number N.  Used when
!    switching work from one column of a multitable to the next.
!    Returns previous environment number. */
! int 
! select_output_environment (n)
!     int n;
  {
!   struct env *e = &envs[current_env_no];
!   int old_env_no = current_env_no;
  
!   /* stash current env info from global vars into the old environment */
!   e->output_paragraph = output_paragraph;
!   e->output_paragraph_offset = output_paragraph_offset;
!   e->meta_char_pos = meta_char_pos;
!   e->output_column = output_column;
!   e->paragraph_is_open = paragraph_is_open;
!   e->current_indent = current_indent;
!   e->fill_column = fill_column;
  
!   /* now copy new environment into global vars */
!   current_env_no = n;
!   e = &envs[current_env_no];
!   output_paragraph = e->output_paragraph;
!   output_paragraph_offset = e->output_paragraph_offset;
!   meta_char_pos = e->meta_char_pos;
!   output_column = e->output_column;
!   paragraph_is_open = e->paragraph_is_open;
!   current_indent = e->current_indent;
!   fill_column = e->fill_column;
!   return old_env_no;
  }
  
  /* advance to the next environment number */
! void
! nselect_next_environment ()
  {
    if (current_env_no >= last_column) {
--- 265,387 ----
  }
  
! /* Output a row.  Calls insert, but also flushes the buffered output
!    when we see a newline, since in multitable every line is a separate
!    paragraph.  */
! static void
! out_char (int ch)
  {
!   if (html || xml)
!     add_char (ch);
!   else
!     {
!       int env = select_output_environment (0);
!       insert (ch);
!       if (ch == '\n')
!       {
!         uninhibit_output_flushing ();
!         flush_output ();
!         inhibit_output_flushing ();
!       }
!       select_output_environment (env);
!     }
! }
  
  
! static void
! draw_horizontal_separator (void)
! {
!   int i, j, s;
  
!   if (html)
!     {
!       add_word ("<hr>");
!       return;
!     }
!   if (xml)
!     return;
  
!   for (s = 0; s < envs[0].current_indent; s++)
!     out_char (' ');
!   if (vsep)
!     out_char ('+');
!   for (i = 1; i <= last_column; i++) {
!     for (j = 0; j <= envs[i].fill_column; j++)
!       out_char ('-');
!     if (vsep)
!       out_char ('+');
!   }
!   out_char ('\n');
  }
  
! 
! /* multitable strategy:
!     for each item {
!        for each column in an item {
!         initialize a new paragraph
!         do ordinary formatting into the new paragraph
!         save the paragraph away
!         repeat if there are more paragraphs in the column
!       }
!       dump out the saved paragraphs and free the storage
!     }
! 
!    For HTML we construct a simple HTML 3.2 table with <br>s inserted
!    to help non-tables browsers.  address@hidden' inserts a <tr> and 
address@hidden'
!    inserts <td>; we also try to close <tr>.  The only real
!    alternative is to rely on the info formatting engine and present
!    preformatted text.  */
! 
! void
! do_multitable (void)
  {
!   int ncolumns;
  
!   if (multitable_active)
!     {
!       line_error ("Multitables cannot be nested");
!       return;
!     }
  
!   close_single_paragraph ();
! 
!   /* scan the current item function to get the field widths
!      and number of columns, and set up the output environment list
!      accordingly. */
!   /*  if (docbook)*/ /* 05-08 */
!   if (xml)
!     xml_no_para = 1;
!   ncolumns = setup_multitable_parameters ();
!   first_row = 1;
! 
!   /* <p> for non-tables browsers.  @multitable implicitly ends the
!      current paragraph, so this is ok.  */
!   if (html)
!     add_html_block_elt ("<p><table summary=\"\">");
!   /*  else if (docbook)*/ /* 05-08 */
!   else if (xml)
!     {
!       int *widths = xmalloc (ncolumns * sizeof (int));
!       int i;
!       for (i=0; i<ncolumns; i++)
!       widths[i] = envs[i+1].fill_column;
!       xml_begin_multitable (ncolumns, widths);
!       free (widths);
!     }
! 
!   if (hsep)
!     draw_horizontal_separator ();
! 
!   /* The next @item command will direct stdout into the first column
!      and start processing.  @tab will then switch to the next column,
!      and @item will flush out the saved output and return to the first
!      column.  Environment #1 is the first column.  (Environment #0 is
!      the normal output) */
! 
!   ++multitable_active;
  }
  
  /* advance to the next environment number */
! static void
! nselect_next_environment (void)
  {
    if (current_env_no >= last_column) {
***************
*** 401,406 ****
  /* do anything needed at the beginning of processing a
     multitable column. */
! void
! init_column ()
  {
    /* don't indent 1st paragraph in the item */
--- 395,400 ----
  /* do anything needed at the beginning of processing a
     multitable column. */
! static void
! init_column (void)
  {
    /* don't indent 1st paragraph in the item */
***************
*** 411,492 ****
  }
  
- int after_headitem = 0;
- int headitem_row = 0;
- 
- /* start a new item (row) of a multitable */
- int
- multitable_item ()
- {
-   if (!multitable_active) {
-     line_error ("multitable_item internal error: no active multitable");
-     xexit (1);
-   }
- 
-   current_column_no = 1;
- 
-   if (html)
-     {
-       if (!first_row)
-         /* <br> for non-tables browsers. */
-       add_word_args ("<br></%s></tr>", after_headitem ? "th" : "td");
- 
-       if (seen_column_fractions)
-         add_word_args ("<tr align=\"left\"><%s valign=\"top\" 
width=\"%d%%\">",
-             headitem_flag ? "th" : "td",
-             envs[current_column_no].fill_column);
-       else
-         add_word_args ("<tr align=\"left\"><%s valign=\"top\">",
-             headitem_flag ? "th" : "td");
- 
-       if (headitem_flag)
-         after_headitem = 1;
-       else
-         after_headitem = 0;
-       first_row = 0;
-       headitem_row = headitem_flag;
-       headitem_flag = 0;
-       return 0;
-     }
-   /*  else if (docbook)*/ /* 05-08 */
-   else if (xml)
-     {
-       xml_end_multitable_row (first_row);
-       if (headitem_flag)
-         after_headitem = 1;
-       else
-         after_headitem = 0;
-       first_row = 0;
-       headitem_flag = 0;
-       return 0;
-     }
-   first_row = 0;
- 
-   if (current_env_no > 0) {
-     output_multitable_row ();
-   }
-   /* start at column 1 */
-   select_output_environment (1);
-   if (!output_paragraph) {
-     line_error (_("[unexpected] cannot select column #%d in multitable"),
-                 current_env_no);
-     xexit (1);
-   }
- 
-   init_column ();
- 
-   if (headitem_flag)
-     hsep++;
- 
-   if (headitem_flag)
-     after_headitem = 1;
-   else
-     after_headitem = 0;
-   headitem_flag = 0;
- 
-   return 0;
- }
- 
  static void
! output_multitable_row ()
  {
    /* offset in the output paragraph of the next char needing
--- 405,410 ----
  }
  
  static void
! output_multitable_row (void)
  {
    /* offset in the output paragraph of the next char needing
***************
*** 573,576 ****
--- 491,570 ----
  }
  
+ int after_headitem = 0;
+ int headitem_row = 0;
+ 
+ /* start a new item (row) of a multitable */
+ int
+ multitable_item (void)
+ {
+   if (!multitable_active) {
+     line_error ("multitable_item internal error: no active multitable");
+     xexit (1);
+   }
+ 
+   current_column_no = 1;
+ 
+   if (html)
+     {
+       if (!first_row)
+         /* <br> for non-tables browsers. */
+       add_word_args ("<br></%s></tr>", after_headitem ? "th" : "td");
+ 
+       if (seen_column_fractions)
+         add_word_args ("<tr align=\"left\"><%s valign=\"top\" 
width=\"%d%%\">",
+             headitem_flag ? "th" : "td",
+             envs[current_column_no].fill_column);
+       else
+         add_word_args ("<tr align=\"left\"><%s valign=\"top\">",
+             headitem_flag ? "th" : "td");
+ 
+       if (headitem_flag)
+         after_headitem = 1;
+       else
+         after_headitem = 0;
+       first_row = 0;
+       headitem_row = headitem_flag;
+       headitem_flag = 0;
+       return 0;
+     }
+   /*  else if (docbook)*/ /* 05-08 */
+   else if (xml)
+     {
+       xml_end_multitable_row (first_row);
+       if (headitem_flag)
+         after_headitem = 1;
+       else
+         after_headitem = 0;
+       first_row = 0;
+       headitem_flag = 0;
+       return 0;
+     }
+   first_row = 0;
+ 
+   if (current_env_no > 0) {
+     output_multitable_row ();
+   }
+   /* start at column 1 */
+   select_output_environment (1);
+   if (!output_paragraph) {
+     line_error (_("[unexpected] cannot select column #%d in multitable"),
+                 current_env_no);
+     xexit (1);
+   }
+ 
+   init_column ();
+ 
+   if (headitem_flag)
+     hsep++;
+ 
+   if (headitem_flag)
+     after_headitem = 1;
+   else
+     after_headitem = 0;
+   headitem_flag = 0;
+ 
+   return 0;
+ }
+ 
  #undef CHAR_AT
  #undef CHAR_ADDR
***************
*** 578,582 ****
  /* select a new column in current row of multitable */
  void
! cm_tab ()
  {
    if (!multitable_active)
--- 572,576 ----
  /* select a new column in current row of multitable */
  void
! cm_tab (void)
  {
    if (!multitable_active)
***************
*** 609,613 ****
     whatever needs resetting */
  void
! end_multitable ()
  {
    if (!html && !docbook) 
--- 603,607 ----
     whatever needs resetting */
  void
! end_multitable (void)
  {
    if (!html && !docbook) 

Index: node.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/node.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** node.c      3 Feb 2004 12:15:59 -0000       1.15
--- node.c      13 Feb 2004 22:01:39 -0000      1.16
***************
*** 32,36 ****
  #include "xml.h"
  
- 
  /* See comments in node.h.  */
  NODE_REF *node_references = NULL;
--- 32,35 ----
***************
*** 45,49 ****
  /* Start a new tag table. */
  void
! init_tag_table ()
  {
    while (tag_table)
--- 44,48 ----
  /* Start a new tag table. */
  void
! init_tag_table (void)
  {
    while (tag_table)
***************
*** 63,68 ****
     table is direct or indirect).  */
  static void
! write_tag_table_internal (indirect_p)
!      int indirect_p;
  {
    TAG_ENTRY *node;
--- 62,66 ----
     table is direct or indirect).  */
  static void
! write_tag_table_internal (int indirect_p)
  {
    TAG_ENTRY *node;
***************
*** 114,119 ****
  
  void
! write_tag_table (filename)
!      char *filename;
  {
    output_stream = fopen (filename, "a");
--- 112,116 ----
  
  void
! write_tag_table (char *filename)
  {
    output_stream = fopen (filename, "a");
***************
*** 130,135 ****
  }
  
! void
! write_tag_table_indirect ()
  {
    write_tag_table_internal (1);
--- 127,132 ----
  }
  
! static void
! write_tag_table_indirect (void)
  {
    write_tag_table_internal (1);
***************
*** 138,143 ****
  /* Convert "top" and friends into "Top". */
  static void
! normalize_node_name (string)
!      char *string;
  {
    if (strcasecmp (string, "Top") == 0)
--- 135,139 ----
  /* Convert "top" and friends into "Top". */
  static void
! normalize_node_name (char *string)
  {
    if (strcasecmp (string, "Top") == 0)
***************
*** 145,151 ****
  }
  
! char *
! get_node_token (expand)
!       int expand;
  {
    char *string;
--- 141,146 ----
  }
  
! static char *
! get_node_token (int expand)
  {
    char *string;
***************
*** 167,172 ****
     return the expanded name as an malloc'ed string.  */
  char *
! expand_node_name (node)
!      char *node;
  {
    char *result = node;
--- 162,166 ----
     return the expanded name as an malloc'ed string.  */
  char *
! expand_node_name (char *node)
  {
    char *result = node;
***************
*** 188,193 ****
     tag_entry.  If the node is not in the table return NULL. */
  TAG_ENTRY *
! find_node (name)
!      char *name;
  {
    TAG_ENTRY *tag = tag_table;
--- 182,186 ----
     tag_entry.  If the node is not in the table return NULL. */
  TAG_ENTRY *
! find_node (char *name)
  {
    TAG_ENTRY *tag = tag_table;
***************
*** 236,242 ****
     return the associated tag_entry.  If there's no such node in the
     table, return NULL. */
! TAG_ENTRY *
! find_node_by_fname (fname)
!      char *fname;
  {
    TAG_ENTRY *tag = tag_table;
--- 229,234 ----
     return the associated tag_entry.  If there's no such node in the
     table, return NULL. */
! static TAG_ENTRY *
! find_node_by_fname (char *fname)
  {
    TAG_ENTRY *tag = tag_table;
***************
*** 254,259 ****
     don't care about most of the entries. */
  static void
! remember_node_node_reference (node)
!      char *node;
  {
    NODE_REF *temp = xmalloc (sizeof (NODE_REF));
--- 246,250 ----
     don't care about most of the entries. */
  static void
! remember_node_node_reference (char *node)
  {
    NODE_REF *temp = xmalloc (sizeof (NODE_REF));
***************
*** 276,283 ****
  
  /* Remember NODE and associates. */
! void
! remember_node (node, prev, next, up, position, line_no, fname, flags)
!      char *node, *prev, *next, *up, *fname;
!      int position, line_no, flags;
  {
    /* Check for existence of this tag already. */
--- 267,272 ----
  
  /* Remember NODE and associates. */
! static void
! remember_node (char *node, char *prev, char *next, char *up, int position, 
int line_no, char *fname, int flags)
  {
    /* Check for existence of this tag already. */
***************
*** 343,350 ****
     contents of `node_references' as a list of nodes to validate.  */
  void
! remember_node_reference (node, line, type)
!      char *node;
!      int line;
!      enum reftype type;
  {
    NODE_REF *temp = xmalloc (sizeof (NODE_REF));
--- 332,336 ----
     contents of `node_references' as a list of nodes to validate.  */
  void
! remember_node_reference (char *node, int line, enum reftype type)
  {
    NODE_REF *temp = xmalloc (sizeof (NODE_REF));
***************
*** 370,375 ****
  
  static void
! isolate_nodename (nodename)
!      char *nodename;
  {
    int i, c;
--- 356,360 ----
  
  static void
! isolate_nodename (char *nodename)
  {
    int i, c;
***************
*** 430,436 ****
  #define MENU_STARTER "* "
  char *
! glean_node_from_menu (remember_ref, ref_type)
!      int remember_ref;
!      enum reftype ref_type;
  {
    int i, orig_offset = input_text_offset;
--- 415,419 ----
  #define MENU_STARTER "* "
  char *
! glean_node_from_menu (int remember_ref, enum reftype ref_type)
  {
    int i, orig_offset = input_text_offset;
***************
*** 486,491 ****
  /* Set the name of the current output file.  */
  void
! set_current_output_filename (fname)
!      const char *fname;
  {
    if (current_output_filename)
--- 469,473 ----
  /* Set the name of the current output file.  */
  void
! set_current_output_filename (const char *fname)
  {
    if (current_output_filename)
***************
*** 501,505 ****
     The defaults come from the menu in this node's parent. */
  void
! cm_node ()
  {
    static long epilogue_len = 0L;
--- 483,487 ----
     The defaults come from the menu in this node's parent. */
  void
! cm_node (void)
  {
    static long epilogue_len = 0L;
***************
*** 954,958 ****
              {
                tem = expansion (next, 0);
!             add_word (_("Next:"));
                add_word ("&nbsp;");
                
--- 936,940 ----
              {
                tem = expansion (next, 0);
!             add_word ((char *) _("Next:"));
                add_word ("&nbsp;");
                
***************
*** 970,974 ****
              {
                tem = expansion (prev, 0);
!             add_word (_("Previous:"));
                add_word ("&nbsp;");
              add_word ("<a rel=\"previous\" accesskey=\"p\" href=\"");
--- 952,956 ----
              {
                tem = expansion (prev, 0);
!             add_word ((char *) _("Previous:"));
                add_word ("&nbsp;");
              add_word ("<a rel=\"previous\" accesskey=\"p\" href=\"");
***************
*** 984,988 ****
              {
                tem = expansion (up, 0);
!             add_word (_("Up:"));
                add_word ("&nbsp;");
              add_word ("<a rel=\"up\" accesskey=\"u\" href=\"");
--- 966,970 ----
              {
                tem = expansion (up, 0);
!             add_word ((char *) _("Up:"));
                add_word ("&nbsp;");
              add_word ("<a rel=\"up\" accesskey=\"u\" href=\"");
***************
*** 1058,1068 ****
    filling_enabled = 1;
    in_fixed_width_font--;
-   node_has_listoffloats = 0;
  }
  
  /* Cross-reference target at an arbitrary spot.  */
  void
! cm_anchor (arg)
!      int arg;
  {
    char *anchor;
--- 1040,1048 ----
    filling_enabled = 1;
    in_fixed_width_font--;
  }
  
  /* Cross-reference target at an arbitrary spot.  */
  void
! cm_anchor (int arg)
  {
    char *anchor;
***************
*** 1200,1206 ****
  /* Find NODE in REF_LIST. */
  static NODE_REF *
! find_node_reference (node, ref_list)
!      char *node;
!      NODE_REF *ref_list;
  {
    NODE_REF *orig_ref_list = ref_list;
--- 1180,1184 ----
  /* Find NODE in REF_LIST. */
  static NODE_REF *
! find_node_reference (char *node, NODE_REF *ref_list)
  {
    NODE_REF *orig_ref_list = ref_list;
***************
*** 1240,1244 ****
  
  void
! free_node_references ()
  {
    NODE_REF *list, *temp;
--- 1218,1222 ----
  
  void
! free_node_references (void)
  {
    NODE_REF *list, *temp;
***************
*** 1258,1262 ****
  
  void
! free_node_node_references ()
  {
    NODE_REF *list, *temp;
--- 1236,1240 ----
  
  void
! free_node_node_references (void)
  {
    NODE_REF *list, *temp;
***************
*** 1277,1282 ****
     or node_references list or zero if no number has been assigned. */
  int
! number_of_node (node)
!      char *node;
  {
    NODE_REF *temp_ref;
--- 1255,1259 ----
     or node_references list or zero if no number has been assigned. */
  int
! number_of_node (char *node)
  {
    NODE_REF *temp_ref;
***************
*** 1300,1307 ****
  
  static int
! validate (tag, line, label)
!      char *tag;
!      int line;
!      char *label;
  {
    TAG_ENTRY *result;
--- 1277,1281 ----
  
  static int
! validate (char *tag, int line, const char *label)
  {
    TAG_ENTRY *result;
***************
*** 1329,1334 ****
     translated.  */
  static const char *
! reftype_type_string (type)
!      enum reftype type;
  {
    switch (type)
--- 1303,1307 ----
     translated.  */
  static const char *
! reftype_type_string (enum reftype type)
  {
    switch (type)
***************
*** 1344,1349 ****
  
  static void
! validate_other_references (ref_list)
!      NODE_REF *ref_list;
  {
    char *old_input_filename = input_filename;
--- 1317,1321 ----
  
  static void
! validate_other_references (NODE_REF *ref_list)
  {
    char *old_input_filename = input_filename;
***************
*** 1374,1379 ****
     then the Next node must have a Prev pointing at this node. */
  void
! validate_file (tag_table)
!      TAG_ENTRY *tag_table;
  {
    char *old_input_filename = input_filename;
--- 1346,1350 ----
     then the Next node must have a Prev pointing at this node. */
  void
! validate_file (TAG_ENTRY *tag_table)
  {
    char *old_input_filename = input_filename;
***************
*** 1620,1625 ****
  
  static int
! last_node_p (tags)
!      TAG_ENTRY *tags;
  {
    int last = 1;
--- 1591,1595 ----
  
  static int
! last_node_p (TAG_ENTRY *tags)
  {
    int last = 1;
***************
*** 1639,1647 ****
  
  
! char *
! enumerate_filename (pathname, basename, number)
!      char *pathname;
!      char *basename;
!      int number;
  {
    /* Do we need to generate names of subfiles which don't exceed 8+3 limits? 
*/
--- 1609,1614 ----
  
  
! static char *
! enumerate_filename (char *pathname, char *basename, int number)
  {
    /* Do we need to generate names of subfiles which don't exceed 8+3 limits? 
*/
***************
*** 1682,1687 ****
     lingering parts of shrinked documents.  */
  void
! clean_old_split_files (filename)
!      char *filename;
  {
    char *root_filename = filename_part (filename);
--- 1649,1653 ----
     lingering parts of shrinked documents.  */
  void
! clean_old_split_files (char *filename)
  {
    char *root_filename = filename_part (filename);
***************
*** 1720,1729 ****
     in any single split file. */
  void
! split_file (filename, size)
!      char *filename;
!      int size;
  {
    char *root_filename, *root_pathname;
!   char *the_file, *filename_part ();
    struct stat fileinfo;
    long file_size;
--- 1686,1693 ----
     in any single split file. */
  void
! split_file (char *filename, int size)
  {
    char *root_filename, *root_pathname;
!   char *the_file;
    struct stat fileinfo;
    long file_size;

Index: node.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/node.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** node.h      6 Jan 2004 18:42:10 -0000       1.2
--- node.h      13 Feb 2004 22:01:39 -0000      1.3
***************
*** 95,99 ****
  extern int outstanding_node;
  
! extern TAG_ENTRY *find_node ();
  
  /* A search string which is used to find a line defining a node. */
--- 95,99 ----
  extern int outstanding_node;
  
! extern TAG_ENTRY *find_node (char *name);
  
  /* A search string which is used to find a line defining a node. */
***************
*** 101,115 ****
  
  /* Extract node name from a menu item. */
! extern char *glean_node_from_menu ();
  
  /* Remember a node for later validation.  */
! extern void remember_node_reference ();
  
  /* Remember the name of the current output file.  */
! extern void set_current_output_filename ();
  
  /* Expand macros and commands in the node name and canonicalize
     whitespace in the resulting expansion.  */
! extern char *expand_node_name ();
  
  #endif /* NODE_H */
--- 101,125 ----
  
  /* Extract node name from a menu item. */
! extern char *glean_node_from_menu (int remember_ref, enum reftype ref_type);
  
  /* Remember a node for later validation.  */
! extern void remember_node_reference (char *node, int line, enum reftype type);
  
  /* Remember the name of the current output file.  */
! extern void set_current_output_filename (const char *fname);
  
  /* Expand macros and commands in the node name and canonicalize
     whitespace in the resulting expansion.  */
! extern char *expand_node_name (char *node);
! 
! extern int number_of_node (char *node);
! 
! extern void init_tag_table (void);
! extern void write_tag_table (char *filename);
! extern void free_node_references (void);
! extern void free_node_node_references (void);
! extern void validate_file (TAG_ENTRY *tag_table);
! extern void split_file (char *filename, int size);
! extern void clean_old_split_files (char *filename);
  
  #endif /* NODE_H */

Index: sectioning.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/sectioning.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** sectioning.c        25 Jan 2004 15:16:52 -0000      1.8
--- sectioning.c        13 Feb 2004 22:01:39 -0000      1.9
***************
*** 89,101 ****
  /* Last title used by sectioning_underscore, etc.  */
  static char *last_sectioning_title = "";
- 
  
  /* num == ENUM_SECT_NO  means unnumbered (should never call this)
     num == ENUM_SECT_YES means numbered
     num == ENUM_SECT_APP means numbered like A.1 and so on */
! char *
! get_sectioning_number (level, num)
!       int level;
!       int num;
  {
    static char s[100]; /* should ever be enough for 99.99.99.99
--- 89,98 ----
  /* Last title used by sectioning_underscore, etc.  */
  static char *last_sectioning_title = "";
  
  /* num == ENUM_SECT_NO  means unnumbered (should never call this)
     num == ENUM_SECT_YES means numbered
     num == ENUM_SECT_APP means numbered like A.1 and so on */
! static char *
! get_sectioning_number (int level, int num)
  {
    static char s[100]; /* should ever be enough for 99.99.99.99
***************
*** 138,143 ****
  /* Set the level of @top to LEVEL.  Return the old level of @top. */
  int
! set_top_section_level (level)
!      int level;
  {
    int i, result = -1;
--- 135,139 ----
  /* Set the level of @top to LEVEL.  Return the old level of @top. */
  int
! set_top_section_level (int level)
  {
    int i, result = -1;
***************
*** 155,161 ****
  
  /* return the index of the given sectioning command in section_alist */
! int
! search_sectioning (text)
!      char *text;
  {
    int i;
--- 151,156 ----
  
  /* return the index of the given sectioning command in section_alist */
! static int
! search_sectioning (char *text)
  {
    int i;
***************
*** 182,188 ****
     corresponding section name.  */
  int
! what_section (text, secname)
!      char *text;
!      char **secname;
  {
    int index, j;
--- 177,181 ----
     corresponding section name.  */
  int
! what_section (char *text, char **secname)
  {
    int index, j;
***************
*** 258,262 ****
     - For appendices, returns A, B, etc. */
  char *
! current_chapter_number ()
  {
    if (enum_marker == UNNUMBERED_MAGIC)
--- 251,255 ----
     - For appendices, returns A, B, etc. */
  char *
! current_chapter_number (void)
  {
    if (enum_marker == UNNUMBERED_MAGIC)
***************
*** 278,282 ****
  /* Returns number of the last sectioning command used.  */
  char *
! current_sectioning_number ()
  {
    if (enum_marker == UNNUMBERED_MAGIC || !number_sections)
--- 271,275 ----
  /* Returns number of the last sectioning command used.  */
  char *
! current_sectioning_number (void)
  {
    if (enum_marker == UNNUMBERED_MAGIC || !number_sections)
***************
*** 288,292 ****
  /* Returns arguments of the last sectioning command used.  */
  char *
! current_sectioning_name ()
  {
    return xstrdup (last_sectioning_title);
--- 281,285 ----
  /* Returns arguments of the last sectioning command used.  */
  char *
! current_sectioning_name (void)
  {
    return xstrdup (last_sectioning_title);
***************
*** 296,302 ****
  
  static char *
! handle_enum_increment (level, index)
!      int level;
!      int index;
  {
    /* Here is how TeX handles enumeration:
--- 289,293 ----
  
  static char *
! handle_enum_increment (int level, int index)
  {
    /* Here is how TeX handles enumeration:
***************
*** 325,330 ****
  
  void
! sectioning_underscore (cmd)
!      char *cmd;
  {
    char *temp, *secname;
--- 316,320 ----
  
  void
! sectioning_underscore (char *cmd)
  {
    char *temp, *secname;
***************
*** 419,426 ****
     line of WITH_CHAR, the same length of the inserted text. */
  void
! insert_and_underscore (level, with_char, cmd)
!      int level;
!      int with_char;
!      char *cmd;
  {
    int i, len;
--- 409,413 ----
     line of WITH_CHAR, the same length of the inserted text. */
  void
! insert_and_underscore (int level, int with_char, char *cmd)
  {
    int i, len;
***************
*** 496,502 ****
  
  void
! sectioning_html (level, cmd)
!      int level;
!      char *cmd;
  {
    static int toc_ref_count = 0;
--- 483,487 ----
  
  void
! sectioning_html (int level, char *cmd)
  {
    static int toc_ref_count = 0;
***************
*** 586,590 ****
  /* Shift the meaning of @section to @chapter. */
  void
! cm_raisesections ()
  {
    discard_until ("\n");
--- 571,575 ----
  /* Shift the meaning of @section to @chapter. */
  void
! cm_raisesections (void)
  {
    discard_until ("\n");
***************
*** 594,598 ****
  /* Shift the meaning of @chapter to @section. */
  void
! cm_lowersections ()
  {
    discard_until ("\n");
--- 579,583 ----
  /* Shift the meaning of @chapter to @section. */
  void
! cm_lowersections (void)
  {
    discard_until ("\n");
***************
*** 602,607 ****
  /* The command still works, but prints a warning message in addition. */
  void
! cm_ideprecated (arg, start, end)
!      int arg, start, end;
  {
    warning (_("%c%s is obsolete; use %c%s instead"),
--- 587,591 ----
  /* The command still works, but prints a warning message in addition. */
  void
! cm_ideprecated (int arg, int start, int end)
  {
    warning (_("%c%s is obsolete; use %c%s instead"),
***************
*** 614,618 ****
     in node defaulting. */
  void
! cm_top ()
  {
    /* It is an error to have more than one @top. */
--- 598,602 ----
     in node defaulting. */
  void
! cm_top (void)
  {
    /* It is an error to have more than one @top. */
***************
*** 693,697 ****
  /* The remainder of the text on this line is a chapter heading. */
  void
! cm_chapter ()
  {
    enum_marker = 0;
--- 677,681 ----
  /* The remainder of the text on this line is a chapter heading. */
  void
! cm_chapter (void)
  {
    enum_marker = 0;
***************
*** 701,705 ****
  /* The remainder of the text on this line is a section heading. */
  void
! cm_section ()
  {
    sectioning_underscore ("section");
--- 685,689 ----
  /* The remainder of the text on this line is a section heading. */
  void
! cm_section (void)
  {
    sectioning_underscore ("section");
***************
*** 708,712 ****
  /* The remainder of the text on this line is a subsection heading. */
  void
! cm_subsection ()
  {
    sectioning_underscore ("subsection");
--- 692,696 ----
  /* The remainder of the text on this line is a subsection heading. */
  void
! cm_subsection (void)
  {
    sectioning_underscore ("subsection");
***************
*** 715,719 ****
  /* The remainder of the text on this line is a subsubsection heading. */
  void
! cm_subsubsection ()
  {
    sectioning_underscore ("subsubsection");
--- 699,703 ----
  /* The remainder of the text on this line is a subsubsection heading. */
  void
! cm_subsubsection (void)
  {
    sectioning_underscore ("subsubsection");
***************
*** 722,726 ****
  /* The remainder of the text on this line is an unnumbered heading. */
  void
! cm_unnumbered ()
  {
    enum_marker = UNNUMBERED_MAGIC;
--- 706,710 ----
  /* The remainder of the text on this line is an unnumbered heading. */
  void
! cm_unnumbered (void)
  {
    enum_marker = UNNUMBERED_MAGIC;
***************
*** 730,734 ****
  /* The remainder of the text on this line is an unnumbered section heading. */
  void
! cm_unnumberedsec ()
  {
    sectioning_underscore ("unnumberedsec");
--- 714,718 ----
  /* The remainder of the text on this line is an unnumbered section heading. */
  void
! cm_unnumberedsec (void)
  {
    sectioning_underscore ("unnumberedsec");
***************
*** 738,742 ****
     subsection heading. */
  void
! cm_unnumberedsubsec ()
  {
    sectioning_underscore ("unnumberedsubsec");
--- 722,726 ----
     subsection heading. */
  void
! cm_unnumberedsubsec (void)
  {
    sectioning_underscore ("unnumberedsubsec");
***************
*** 746,750 ****
     subsubsection heading. */
  void
! cm_unnumberedsubsubsec ()
  {
    sectioning_underscore ("unnumberedsubsubsec");
--- 730,734 ----
     subsubsection heading. */
  void
! cm_unnumberedsubsubsec (void)
  {
    sectioning_underscore ("unnumberedsubsubsec");
***************
*** 753,757 ****
  /* The remainder of the text on this line is an appendix heading. */
  void
! cm_appendix ()
  {
    /* Reset top level number so we start from Appendix A */
--- 737,741 ----
  /* The remainder of the text on this line is an appendix heading. */
  void
! cm_appendix (void)
  {
    /* Reset top level number so we start from Appendix A */
***************
*** 764,768 ****
  /* The remainder of the text on this line is an appendix section heading. */
  void
! cm_appendixsec ()
  {
    sectioning_underscore ("appendixsec");
--- 748,752 ----
  /* The remainder of the text on this line is an appendix section heading. */
  void
! cm_appendixsec (void)
  {
    sectioning_underscore ("appendixsec");
***************
*** 771,775 ****
  /* The remainder of the text on this line is an appendix subsection heading. 
*/
  void
! cm_appendixsubsec ()
  {
    sectioning_underscore ("appendixsubsec");
--- 755,759 ----
  /* The remainder of the text on this line is an appendix subsection heading. 
*/
  void
! cm_appendixsubsec (void)
  {
    sectioning_underscore ("appendixsubsec");
***************
*** 779,783 ****
     subsubsection heading. */
  void
! cm_appendixsubsubsec ()
  {
    sectioning_underscore ("appendixsubsubsec");
--- 763,767 ----
     subsubsection heading. */
  void
! cm_appendixsubsubsec (void)
  {
    sectioning_underscore ("appendixsubsubsec");
***************
*** 786,790 ****
  /* Compatibility functions substitute for chapter, section, etc. */
  void
! cm_majorheading ()
  {
    sectioning_underscore ("majorheading");
--- 770,774 ----
  /* Compatibility functions substitute for chapter, section, etc. */
  void
! cm_majorheading (void)
  {
    sectioning_underscore ("majorheading");
***************
*** 792,796 ****
  
  void
! cm_chapheading ()
  {
    sectioning_underscore ("chapheading");
--- 776,780 ----
  
  void
! cm_chapheading (void)
  {
    sectioning_underscore ("chapheading");
***************
*** 798,802 ****
  
  void
! cm_heading ()
  {
    sectioning_underscore ("heading");
--- 782,786 ----
  
  void
! cm_heading (void)
  {
    sectioning_underscore ("heading");
***************
*** 804,808 ****
  
  void
! cm_subheading ()
  {
    sectioning_underscore ("subheading");
--- 788,792 ----
  
  void
! cm_subheading (void)
  {
    sectioning_underscore ("subheading");
***************
*** 810,814 ****
  
  void
! cm_subsubheading ()
  {
    sectioning_underscore ("subsubheading");
--- 794,798 ----
  
  void
! cm_subsubheading (void)
  {
    sectioning_underscore ("subsubheading");

Index: sectioning.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/sectioning.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** sectioning.h        6 Dec 2003 01:33:53 -0000       1.1.1.1
--- sectioning.h        13 Feb 2004 22:01:39 -0000      1.2
***************
*** 24,46 ****
  
  /* Sectioning.  */
! extern void
!   cm_chapter (), cm_unnumbered (), cm_appendix (), cm_top (),
!   cm_section (), cm_unnumberedsec (), cm_appendixsec (),
!   cm_subsection (), cm_unnumberedsubsec (), cm_appendixsubsec (),
!   cm_subsubsection (), cm_unnumberedsubsubsec (), cm_appendixsubsubsec (),
!   cm_heading (), cm_chapheading (), cm_subheading (), cm_subsubheading (),
!   cm_majorheading (), cm_raisesections (), cm_lowersections (),
!   cm_ideprecated ();
  
  extern void
!   sectioning_underscore (), insert_and_underscore ();
  
  /* needed in node.c */
! extern int set_top_section_level ();
  
! extern void sectioning_html ();
! extern int what_section ();
! extern char *current_chapter_number (), *current_sectioning_number (),
!   *current_sectioning_name ();
  
  /* The argument of @settitle, used for HTML. */
--- 24,72 ----
  
  /* Sectioning.  */
! 
! /* Level 4.  */
! extern void cm_chapter (void),
!   cm_unnumbered (void),
!   cm_appendix (void),
!   cm_top (void);
! 
! /* Level 3.  */
! extern void cm_section (void),
!   cm_unnumberedsec (void),
!   cm_appendixsec (void);
! 
! /* Level 2.  */
! extern void cm_subsection (void),
!   cm_unnumberedsubsec (void),
!   cm_appendixsubsec (void);
! 
! /* Level 1.  */
! extern void cm_subsubsection (void),
!   cm_unnumberedsubsubsec (void),
!   cm_appendixsubsubsec (void);
! 
! /* Headings.  */
! extern void cm_heading (void),
!   cm_chapheading (void),
!   cm_subheading (void),
!   cm_subsubheading (void),
!   cm_majorheading (void);
! 
! extern void cm_raisesections (void),
!   cm_lowersections (void),
!   cm_ideprecated (int arg, int start, int end);
  
  extern void
!   sectioning_underscore (char *cmd),
!   insert_and_underscore (int level, int with_char, char *cmd);
  
  /* needed in node.c */
! extern int set_top_section_level (int level);
  
! extern void sectioning_html (int level, char *cmd);
! extern int what_section (char *text, char **secname);
! extern char *current_chapter_number (void),
!   *current_sectioning_number (void),
!   *current_sectioning_name (void);
  
  /* The argument of @settitle, used for HTML. */

Index: toc.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/toc.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** toc.c       15 Jan 2004 22:35:19 -0000      1.6
--- toc.c       13 Feb 2004 22:01:39 -0000      1.7
***************
*** 33,38 ****
  #include "xml.h"
  
- 
- 
  /* array of toc entries */
  static TOC_ENTRY_ELT **toc_entry_alist = NULL;
--- 33,36 ----
***************
*** 40,57 ****
  /* toc_counter start from 0 ... n for every @chapter, @section ... */
  static int toc_counter = 0;
- 
- static const char lots_of_stars[] =
- "***************************************************************************";
- 
  
  /* Routine to add an entry to the table of contents */
  int
! toc_add_entry (tocname, level, node_name, anchor)
!      char *tocname;
!      int level;
!      char *node_name;
!      char *anchor;
  {
!   char *tocname_and_node, *expanded_node, *s, *d;
    char *filename = NULL;
  
--- 38,48 ----
  /* toc_counter start from 0 ... n for every @chapter, @section ... */
  static int toc_counter = 0;
  
  /* Routine to add an entry to the table of contents */
  int
! toc_add_entry (char *tocname, int level, char *node_name, char *anchor)
  {
!   char *tocname_and_node, *expanded_node, *d;
!   char *s = NULL;
    char *filename = NULL;
  
***************
*** 159,164 ****
     or if they have a node without any structuring commands.  */
  char *
! toc_find_section_of_node (node)
!      char *node;
  {
    int i;
--- 150,154 ----
     or if they have a node without any structuring commands.  */
  char *
! toc_find_section_of_node (char *node)
  {
    int i;
***************
*** 175,179 ****
  /* free up memory used by toc entries */
  void
! toc_free ()
  {
    int i;
--- 165,169 ----
  /* free up memory used by toc entries */
  void
! toc_free (void)
  {
    int i;
***************
*** 197,201 ****
  
  static void
! contents_update_html ()
  {
    int i;
--- 187,191 ----
  
  static void
! contents_update_html (void)
  {
    int i;
***************
*** 274,278 ****
     May be we should create a new command line switch --ascii ? */
  static void
! contents_update_info ()
  {
    int i;
--- 264,268 ----
     May be we should create a new command line switch --ascii ? */
  static void
! contents_update_info (void)
  {
    int i;
***************
*** 282,286 ****
        return;
  
!   insert_string (_("Table of Contents"));
    insert ('\n');
    for (i = 0; i < strlen (_("Table of Contents")); i++)
--- 272,276 ----
        return;
  
!   insert_string ((char *) _("Table of Contents"));
    insert ('\n');
    for (i = 0; i < strlen (_("Table of Contents")); i++)
***************
*** 306,314 ****
  /* shortcontents in HTML; Should this produce a standalone file? */
  static void
! shortcontents_update_html (contents_filename)
!      char *contents_filename;
  {
    int i;
!   char *toc_file;
  
    /* does exist any toc? */
--- 296,303 ----
  /* shortcontents in HTML; Should this produce a standalone file? */
  static void
! shortcontents_update_html (char *contents_filename)
  {
    int i;
!   char *toc_file = NULL;
  
    /* does exist any toc? */
***************
*** 342,346 ****
  /* short contents in ASCII (--no-headers).  */
  static void
! shortcontents_update_info ()
  {
    int i;
--- 331,335 ----
  /* short contents in ASCII (--no-headers).  */
  static void
! shortcontents_update_info (void)
  {
    int i;
***************
*** 349,353 ****
        return;
  
!   insert_string (_("Short Contents"));
    insert ('\n');
    for (i = 0; i < strlen (_("Short Contents")); i++)
--- 338,342 ----
        return;
  
!   insert_string ((char *) _("Short Contents"));
    insert ('\n');
    for (i = 0; i < strlen (_("Short Contents")); i++)
***************
*** 367,372 ****
  
  void
! cm_contents (arg)
!      int arg;
  {
    /* the file where we found the @contents directive */
--- 356,360 ----
  
  void
! cm_contents (int arg)
  {
    /* the file where we found the @contents directive */

Index: toc.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/toc.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** toc.h       8 Jan 2004 15:12:21 -0000       1.2
--- toc.h       13 Feb 2004 22:01:39 -0000      1.3
***************
*** 36,44 ****
  /* all routines which have relationship with TOC should start with
     toc_ (this is a kind of name-space) */
! extern int toc_add_entry (); /* return the number for the toc-entry */
! extern void toc_free ();
! extern char *toc_find_section_of_node ();
  
! extern void cm_contents ();
  
  #endif /* not TOC_H */
--- 36,45 ----
  /* all routines which have relationship with TOC should start with
     toc_ (this is a kind of name-space) */
! extern int toc_add_entry (char *tocname, int level,
!     char *node_name, char *anchor); /* return the number for the toc-entry */
! extern void toc_free (void);
! extern char *toc_find_section_of_node (char *node);
  
! extern void cm_contents (int arg);
  
  #endif /* not TOC_H */

Index: xml.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/xml.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -d -r1.23 -r1.24
*** xml.c       2 Feb 2004 12:04:56 -0000       1.23
--- xml.c       13 Feb 2004 22:01:39 -0000      1.24
***************
*** 34,40 ****
  int xml_index_divisions = 1;
  
- 
- void xml_close_sections (/* int level */);
- 
  typedef struct _element
  {
--- 34,37 ----
***************
*** 546,562 ****
  static int in_secondary = 0;
  static int in_indexterm = 0;
! 
! static int xml_current_element ();
! 
! void
! #if defined (VA_FPRINTF) && __STDC__
! xml_insert_element_with_attribute (int elt, int arg, char *format, ...);
! #else
! xml_insert_element_with_attribute ();
! #endif
! 
  char *
! xml_id (id)
!     char *id;
  {
    char *tem = xmalloc (strlen (id) + 1);
--- 543,549 ----
  static int in_secondary = 0;
  static int in_indexterm = 0;
! 
  char *
! xml_id (char *id)
  {
    char *tem = xmalloc (strlen (id) + 1);
***************
*** 579,584 ****
  
  int
! xml_element (name)
!     char *name;
  {
    int i;
--- 566,570 ----
  
  int
! xml_element (char *name)
  {
    int i;
***************
*** 593,598 ****
  
  void
! xml_begin_document (output_filename)
!     char *output_filename;
  {
    if (book_started)
--- 579,583 ----
  
  void
! xml_begin_document (char *output_filename)
  {
    if (book_started)
***************
*** 643,649 ****
  static int element_stack_index = 0;
  
  static void
! xml_push_current_element (elt)
!     int elt;
  {
    element_stack[element_stack_index++] = elt;
--- 628,639 ----
  static int element_stack_index = 0;
  
+ static int
+ xml_current_element (void)
+ {
+   return element_stack[element_stack_index-1];
+ }
+ 
  static void
! xml_push_current_element (int elt)
  {
    element_stack[element_stack_index++] = elt;
***************
*** 654,659 ****
  }
  
! void
! xml_pop_current_element ()
  {
    element_stack_index--;
--- 644,649 ----
  }
  
! static void
! xml_pop_current_element (void)
  {
    element_stack_index--;
***************
*** 664,675 ****
  }
  
- static int
- xml_current_element ()
- {
-   return element_stack[element_stack_index-1];
- }
- 
  int
! xml_current_stack_index ()
  {
    return element_stack_index;
--- 654,659 ----
  }
  
  int
! xml_current_stack_index (void)
  {
    return element_stack_index;
***************
*** 677,681 ****
  
  void
! xml_end_current_element ()
  {
    xml_insert_element (xml_current_element (), END);
--- 661,665 ----
  
  void
! xml_end_current_element (void)
  {
    xml_insert_element (xml_current_element (), END);
***************
*** 683,687 ****
  
  static void
! xml_indent ()
  {
    if (xml_indentation_increment > 0)
--- 667,671 ----
  
  static void
! xml_indent (void)
  {
    if (xml_indentation_increment > 0)
***************
*** 695,711 ****
  }
  
- static void
- xml_indent_end_para ()
- {
-   if (xml_indentation_increment > 0)
-     {
-       int i;
-       for (i = 0; i < element_stack_index * xml_indentation_increment; i++)
-         insert (' ');
-     }
- }
- 
  void
! xml_start_para ()
  {
    if (xml_in_para || xml_in_footnote)
--- 679,684 ----
  }
  
  void
! xml_start_para (void)
  {
    if (xml_in_para || xml_in_footnote)
***************
*** 725,729 ****
  
  void
! xml_end_para ()
  {
    if (!xml_in_para || xml_in_footnote)
--- 698,702 ----
  
  void
! xml_end_para (void)
  {
    if (!xml_in_para || xml_in_footnote)
***************
*** 740,744 ****
  
  void
! xml_end_document ()
  {
    if (xml_node_open)
--- 713,717 ----
  
  void
! xml_end_document (void)
  {
    if (xml_node_open)
***************
*** 822,836 ****
  
    if (!xml_dont_touch_items_defs && arg == START)
!     if (xml_after_table_term && elt != TABLETERM)
!       {
!         xml_after_table_term = 0;
!         xml_insert_element (ITEM, START);
!       }
!     else if (xml_after_def_term && elt != DEFINITIONTERM)
!       {
!         xml_after_def_term = 0;
!         xml_insert_element (DEFINITIONITEM, START);
!         xml_in_def_item[xml_definition_level] = 1;
!       }
  
    if (docbook && !only_macro_expansion && (in_menu || in_detailmenu))
--- 795,811 ----
  
    if (!xml_dont_touch_items_defs && arg == START)
!     {
!       if (xml_after_table_term && elt != TABLETERM)
!         {
!           xml_after_table_term = 0;
!           xml_insert_element (ITEM, START);
!         }
!       else if (xml_after_def_term && elt != DEFINITIONTERM)
!         {
!           xml_after_def_term = 0;
!           xml_insert_element (DEFINITIONITEM, START);
!           xml_in_def_item[xml_definition_level] = 1;
!         }
!     }
  
    if (docbook && !only_macro_expansion && (in_menu || in_detailmenu))
***************
*** 1001,1005 ****
  
  void
! xml_begin_node ()
  {
    first_section_opened = 1;
--- 976,980 ----
  
  void
! xml_begin_node (void)
  {
    first_section_opened = 1;
***************
*** 1028,1033 ****
  
  void
! xml_close_sections (level)
!     int level;
  {
    if (!first_section_opened)
--- 1003,1007 ----
  
  void
! xml_close_sections (int level)
  {
    if (!first_section_opened)
***************
*** 1058,1064 ****
  
  void
! xml_open_section (level, name)
!     int level;
!     char *name;
  {
    xml_section *sect = (xml_section *) xmalloc (sizeof (xml_section));
--- 1032,1036 ----
  
  void
! xml_open_section (int level, char *name)
  {
    xml_section *sect = (xml_section *) xmalloc (sizeof (xml_section));
***************
*** 1086,1091 ****
  
  char *
! xml_get_assoc_for_id (id)
!   char *id;
  { /* Return the title, if its id matches the parameter.  */
    UNNUMBERED_LABEL *temp = unnumbered_labels;
--- 1058,1062 ----
  
  char *
! xml_get_assoc_for_id (char *id)
  { /* Return the title, if its id matches the parameter.  */
    UNNUMBERED_LABEL *temp = unnumbered_labels;
***************
*** 1103,1109 ****
  
  void
! xml_associate_title_with_id (nodename, title)
!   char *nodename;
!   char *title;
  { /* Check to see if this node already has an associated title with it.  */
    UNNUMBERED_LABEL *temp;
--- 1074,1078 ----
  
  void
! xml_associate_title_with_id (char *nodename, char *title)
  { /* Check to see if this node already has an associated title with it.  */
    UNNUMBERED_LABEL *temp;
***************
*** 1121,1126 ****
  
  void
! xml_start_menu_entry (tem)
!     char *tem;
  {
    char *string;
--- 1090,1094 ----
  
  void
! xml_start_menu_entry (char *tem)
  {
    char *string;
***************
*** 1173,1177 ****
  
  void
! xml_end_menu ()
  {
    if (xml_in_menu_entry)
--- 1141,1145 ----
  
  void
! xml_end_menu (void)
  {
    if (xml_in_menu_entry)
***************
*** 1192,1197 ****
  
  void
! xml_add_char (character)
!     int character;
  {
    if (!book_started)
--- 1160,1164 ----
  
  void
! xml_add_char (int character)
  {
    if (!book_started)
***************
*** 1230,1244 ****
  
    if (!xml_sort_index && !xml_in_xref_token && !xml_dont_touch_items_defs)
!     if (xml_after_table_term)
!       {
!         xml_after_table_term = 0;
!         xml_insert_element (ITEM, START);
!       }
!     else if (xml_after_def_term)
!       {
!         xml_after_def_term = 0;
!         xml_insert_element (DEFINITIONITEM, START);
!         xml_in_def_item[xml_definition_level] = 1;
!       }
  
    if (xml_just_after_element && !xml_in_para && 
!inhibit_paragraph_indentation)
--- 1197,1213 ----
  
    if (!xml_sort_index && !xml_in_xref_token && !xml_dont_touch_items_defs)
!     {
!       if (xml_after_table_term)
!         {
!           xml_after_table_term = 0;
!           xml_insert_element (ITEM, START);
!         }
!       else if (xml_after_def_term)
!         {
!           xml_after_def_term = 0;
!           xml_insert_element (DEFINITIONITEM, START);
!           xml_in_def_item[xml_definition_level] = 1;
!         }
!     }
  
    if (xml_just_after_element && !xml_in_para && 
!inhibit_paragraph_indentation)
***************
*** 1298,1303 ****
  
  void
! xml_insert_footnote (note)
!     char *note;
  {
    xml_in_footnote = 1;
--- 1267,1271 ----
  
  void
! xml_insert_footnote (char *note)
  {
    xml_in_footnote = 1;
***************
*** 1322,1328 ****
  
  void
! xml_insert_quotation (type, arg)
!   char *type;
!   int arg;
  {
    int quotation_started = 0;
--- 1290,1294 ----
  
  void
! xml_insert_quotation (char *type, int arg)
  {
    int quotation_started = 0;
***************
*** 1380,1385 ****
     and id attributes, and inserts title.  */
  void
! xml_begin_docbook_float (elt)
!     int elt;
  {
    if (current_float_used_title ())    /* in a nested float */
--- 1346,1350 ----
     and id attributes, and inserts title.  */
  void
! xml_begin_docbook_float (int elt)
  {
    if (current_float_used_title ())    /* in a nested float */
***************
*** 1417,1423 ****
   */
  void
! xml_begin_table (type, item_function)
!     enum insertion_type type;
!     char *item_function;
  {
    switch (type)
--- 1382,1386 ----
   */
  void
! xml_begin_table (int type, char *item_function)
  {
    switch (type)
***************
*** 1462,1467 ****
  
  void
! xml_end_table (type)
!     enum insertion_type type;
  {
    switch (type)
--- 1425,1429 ----
  
  void
! xml_end_table (int type)
  {
    switch (type)
***************
*** 1501,1505 ****
  
  void
! xml_begin_item ()
  {
    if (xml_in_item[xml_table_level])
--- 1463,1467 ----
  
  void
! xml_begin_item (void)
  {
    if (xml_in_item[xml_table_level])
***************
*** 1511,1515 ****
  
  void
! xml_begin_table_item ()
  {
    if (!xml_after_table_term)
--- 1473,1477 ----
  
  void
! xml_begin_table_item (void)
  {
    if (!xml_after_table_term)
***************
*** 1533,1537 ****
  
  void
! xml_continue_table_item ()
  {
    xml_insert_element (TABLETERM, END);
--- 1495,1499 ----
  
  void
! xml_continue_table_item (void)
  {
    xml_insert_element (TABLETERM, END);
***************
*** 1540,1545 ****
  
  void
! xml_begin_enumerate (enum_arg)
!     char *enum_arg;
  {
    if (!docbook)
--- 1502,1506 ----
  
  void
! xml_begin_enumerate (char *enum_arg)
  {
    if (!docbook)
***************
*** 1586,1590 ****
  
  void
! xml_end_enumerate ()
  {
    if (xml_in_item[xml_table_level])
--- 1547,1551 ----
  
  void
! xml_end_enumerate (void)
  {
    if (xml_in_item[xml_table_level])
***************
*** 1598,1603 ****
  
  static void
! xml_insert_text_file (name_arg)
!     char *name_arg;
  {
    char *fullname = xmalloc (strlen (name_arg) + 4 + 1);
--- 1559,1563 ----
  
  static void
! xml_insert_text_file (char *name_arg)
  {
    char *fullname = xmalloc (strlen (name_arg) + 4 + 1);
***************
*** 1643,1648 ****
  
  void
! xml_insert_docbook_image (name_arg)
!     char *name_arg;
  {
    if (is_in_insertion_of_type (floatenv))
--- 1603,1607 ----
  
  void
! xml_insert_docbook_image (char *name_arg)
  {
    if (is_in_insertion_of_type (floatenv))
***************
*** 1670,1674 ****
  
  void
! xml_asterisk ()
  {
  }
--- 1629,1633 ----
  
  void
! xml_asterisk (void)
  {
  }
***************
*** 1692,1698 ****
  
  void
! xml_insert_indexterm (indexterm, index)
!     char *indexterm;
!     char *index;
  {
    /* @index commands can appear between @item and @itemx, @deffn and @deffnx. 
 */
--- 1651,1655 ----
  
  void
! xml_insert_indexterm (char *indexterm, char *index)
  {
    /* @index commands can appear between @item and @itemx, @deffn and @deffnx. 
 */
***************
*** 1717,1721 ****
    else
      {
!       char *primary = NULL, *secondary;
        if (strstr (indexterm+1, INDEX_SEP))
          {
--- 1674,1678 ----
    else
      {
!       char *primary = NULL, *secondary = NULL;
        if (strstr (indexterm+1, INDEX_SEP))
          {
***************
*** 1752,1756 ****
  
  static void
! xml_close_indexentry ()
  {
    if (!in_indexentry)
--- 1709,1713 ----
  
  static void
! xml_close_indexentry (void)
  {
    if (!in_indexentry)
***************
*** 1764,1768 ****
  
  void
! xml_begin_index ()
  {
    typedef struct xml_index_title {
--- 1721,1725 ----
  
  void
! xml_begin_index (void)
  {
    typedef struct xml_index_title {
***************
*** 1823,1827 ****
        if (!xml_index_titles_reversed)
          {
!           xml_index_titles = (XML_INDEX_TITLE *) reverse_list 
(xml_index_titles);
            xml_index_titles_reversed = 1;
          }
--- 1780,1785 ----
        if (!xml_index_titles_reversed)
          {
!           xml_index_titles = (XML_INDEX_TITLE *) reverse_list
!             ((GENERIC_LIST *) xml_index_titles);
            xml_index_titles_reversed = 1;
          }
***************
*** 1848,1852 ****
  
  void
! xml_end_index ()
  {
    xml_close_indexentry ();
--- 1806,1810 ----
  
  void
! xml_end_index (void)
  {
    xml_close_indexentry ();
***************
*** 1856,1862 ****
  }
  
! void
! xml_index_divide (entry)
!     char *entry;
  {
    char c;
--- 1814,1819 ----
  }
  
! static void
! xml_index_divide (char *entry)
  {
    char c;
***************
*** 1882,1888 ****
  
  void
! xml_insert_indexentry (entry, node)
!     char *entry;
!     char *node;
  {
    char *primary = NULL, *secondary;
--- 1839,1843 ----
  
  void
! xml_insert_indexentry (char *entry, char *node)
  {
    char *primary = NULL, *secondary;
***************
*** 1945,1951 ****
  
  void
! xml_synindex (from, to)
!   char *from;
!   char *to;
  {
    int i, slot;
--- 1900,1904 ----
  
  void
! xml_synindex (char *from, char *to)
  {
    int i, slot;
***************
*** 1981,1987 ****
  
  void
! xml_begin_multitable (ncolumns, column_widths)
!     int ncolumns;
!     int *column_widths;
  {
    int i;
--- 1934,1938 ----
  
  void
! xml_begin_multitable (int ncolumns, int *column_widths)
  {
    int i;
***************
*** 2013,2018 ****
  }
  
! void
! xml_begin_multitable_group ()
  {
    int i;
--- 1964,1969 ----
  }
  
! static void
! xml_begin_multitable_group (void)
  {
    int i;
***************
*** 2030,2035 ****
  
  void
! xml_end_multitable_row (first_row)
!     int first_row;
  {
    if (!first_row)
--- 1981,1985 ----
  
  void
! xml_end_multitable_row (int first_row)
  {
    if (!first_row)
***************
*** 2071,2075 ****
  
  void
! xml_end_multitable_column ()
  {
    xml_insert_element (ENTRY, END);
--- 2021,2025 ----
  
  void
! xml_end_multitable_column (void)
  {
    xml_insert_element (ENTRY, END);
***************
*** 2078,2082 ****
  
  void
! xml_end_multitable ()
  {
    xml_insert_element (ENTRY, END);
--- 2028,2032 ----
  
  void
! xml_end_multitable (void)
  {
    xml_insert_element (ENTRY, END);
***************
*** 2107,2113 ****
  
  void
! xml_process_defun_args (defun_args, auto_var_p)
!      char **defun_args;
!      int auto_var_p;
  {
    int pending_space = 0;
--- 2057,2061 ----
  
  void
! xml_process_defun_args (char **defun_args, int auto_var_p)
  {
    int pending_space = 0;
***************
*** 2179,2183 ****
  
  void
! xml_begin_definition ()
  {
    xml_insert_element (DEFINITION, START);
--- 2127,2131 ----
  
  void
! xml_begin_definition (void)
  {
    xml_insert_element (DEFINITION, START);
***************
*** 2187,2191 ****
  
  void
! xml_end_definition ()
  {
    if (xml_in_def_item[xml_definition_level])
--- 2135,2139 ----
  
  void
! xml_end_definition (void)
  {
    if (xml_in_def_item[xml_definition_level])
***************
*** 2200,2210 ****
  
  void
! xml_begin_def_term (base_type, category, defined_name,
!     type_name, type_name2)
!   int base_type;
!   char *category;
!   char *defined_name;
!   char *type_name;
!   char *type_name2;
  {
    xml_after_def_term = 0;
--- 2148,2153 ----
  
  void
! xml_begin_def_term (int base_type, const char *category,
!     char *defined_name, char *type_name, char *type_name2)
  {
    xml_after_def_term = 0;
***************
*** 2320,2324 ****
  
  void
! xml_end_def_term ()
  {
    xml_insert_element (DEFINITIONTERM, END);
--- 2263,2267 ----
  
  void
! xml_end_def_term (void)
  {
    xml_insert_element (DEFINITIONTERM, END);

Index: xml.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/xml.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** xml.h       25 Jan 2004 14:26:48 -0000      1.9
--- xml.h       13 Feb 2004 22:01:39 -0000      1.10
***************
*** 100,106 ****
  };
  
! extern void xml_insert_element (/* int name, int arg */);
! extern char *xml_id (/* char *id */);
! extern char *xml_get_assoc_for_id (/* char *id */);
  
  #endif /* XML_H */
--- 100,157 ----
  };
  
! extern void xml_add_char (int character),
!   xml_asterisk (void),
!   xml_insert_element (int elt, int arg),
!   xml_insert_entity (char *entity_name),
!   xml_insert_footnote (char *note),
!   xml_insert_quotation (char *type, int arg),
!   xml_insert_indexentry (char *entry, char *node),
!   xml_insert_indexterm (char *indexterm, char *index),
!   xml_insert_docbook_image (char *name_arg),
!   xml_synindex (char *from, char *to),
!   xml_start_para (void),
!   xml_end_para (void),
!   xml_begin_document (char *output_filename),
!   xml_end_document (void),
!   xml_start_menu_entry (char *tem),
!   xml_end_menu (void),
!   xml_end_current_element (void),
!   xml_open_section (int level, char *name),
!   xml_close_sections (int level),
!   xml_begin_node (void),
!   xml_begin_index (void),
!   xml_end_index (void),
!   xml_begin_multitable (int ncolumns, int *column_widths),
!   xml_end_multitable (void),
!   xml_end_multitable_row (int first_row),
!   xml_end_multitable_column (void),
!   xml_begin_table (int type, char *item_function),
!   xml_end_table (int type),
!   xml_begin_item (void),
!   xml_begin_table_item (void),
!   xml_continue_table_item (void),
!   xml_begin_enumerate (char *enum_arg),
!   xml_end_enumerate (void),
!   xml_begin_docbook_float (int elt),
!   xml_associate_title_with_id (char *nodename, char *title);
! 
! extern char *xml_id (char *id),
!   *xml_get_assoc_for_id (char *id);
! 
! extern void xml_begin_definition (void),
!   xml_end_definition (void),
!   xml_process_defun_args (char **defun_args, int auto_var_p),
!   xml_begin_def_term (int base_type, const char *category,
!       char *defined_name, char *type_name, char *type_name2),
!   xml_end_def_term (void);
! 
! extern int xml_current_stack_index (void),
!   xml_element (char *name);
! 
! #if defined (VA_FPRINTF) && __STDC__
! void xml_insert_element_with_attribute (int elt, int arg, char *format, ...);
! #else
! void xml_insert_element_with_attribute ();
! #endif
  
  #endif /* XML_H */

Index: xref.c
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/xref.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** xref.c      7 Feb 2004 10:24:41 -0000       1.5
--- xref.c      13 Feb 2004 22:01:39 -0000      1.6
***************
*** 21,26 ****
--- 21,28 ----
  #include "cmds.h"
  #include "float.h"
+ #include "html.h"
  #include "macro.h"
  #include "makeinfo.h"
+ #include "node.h"
  #include "xml.h"
  #include "xref.h"
***************
*** 30,39 ****
  int ref_flag = 0;
  
- 
  /* Called in the multiple-argument case to make sure we generate a valid
     Info reference.  In the single-argument case, the :: we output
     suffices for the Info readers to find the end of the reference.  */
  static void
! add_xref_punctuation ()
  {
    if (px_ref_flag || ref_flag)  /* user inserts punct after @xref */
--- 32,40 ----
  int ref_flag = 0;
  
  /* Called in the multiple-argument case to make sure we generate a valid
     Info reference.  In the single-argument case, the :: we output
     suffices for the Info readers to find the end of the reference.  */
  static void
! add_xref_punctuation (void)
  {
    if (px_ref_flag || ref_flag)  /* user inserts punct after @xref */
***************
*** 59,64 ****
     looking for the next comma.  */
  char *
! get_xref_token (expand)
!      int expand;
  {
    char *string = 0;
--- 60,64 ----
     looking for the next comma.  */
  char *
! get_xref_token (int expand)
  {
    char *string = 0;
***************
*** 110,114 ****
  /* Make a cross reference. */
  void
! cm_xref (arg)
  {
    if (arg == START)
--- 110,114 ----
  /* Make a cross reference. */
  void
! cm_xref (int arg)
  {
    if (arg == START)
***************
*** 378,383 ****
  
  void
! cm_pxref (arg)
!      int arg;
  {
    if (arg == START)
--- 378,382 ----
  
  void
! cm_pxref (int arg)
  {
    if (arg == START)
***************
*** 394,399 ****
  
  void
! cm_ref (arg)
!      int arg;
  {
    /* See the comments in cm_pxref about the checks for punctuation.  */
--- 393,397 ----
  
  void
! cm_ref (int arg)
  {
    /* See the comments in cm_pxref about the checks for punctuation.  */
***************
*** 407,412 ****
  
  void
! cm_inforef (arg)
!      int arg;
  {
    if (arg == START)
--- 405,409 ----
  
  void
! cm_inforef (int arg)
  {
    if (arg == START)
***************
*** 442,446 ****
            char *tem;
  
!           add_word (_("see "));
            /* html fixxme: revisit this */
            add_html_elt ("<a href=");
--- 439,443 ----
            char *tem;
  
!           add_word ((char *) _("see "));
            /* html fixxme: revisit this */
            add_html_elt ("<a href=");
***************
*** 472,477 ****
  /* A URL reference.  */
  void
! cm_uref (arg)
!      int arg;
  {
    if (arg == START)
--- 469,473 ----
  /* A URL reference.  */
  void
! cm_uref (int arg)
  {
    if (arg == START)
***************
*** 555,560 ****
  /* An email reference.  */
  void
! cm_email (arg)
!      int arg;
  {
    if (arg == START)
--- 551,555 ----
  /* An email reference.  */
  void
! cm_email (int arg)
  {
    if (arg == START)

Index: xref.h
===================================================================
RCS file: /cvsroot/texinfo/texinfo/makeinfo/xref.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** xref.h      6 Jan 2004 18:42:10 -0000       1.1
--- xref.h      13 Feb 2004 22:01:39 -0000      1.2
***************
*** 26,30 ****
  };
  
! extern char *get_xref_token ();
  
  #endif /* not XREF_H */
--- 26,30 ----
  };
  
! extern char *get_xref_token (int expand);
  
  #endif /* not XREF_H */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]