X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/b54b38e682d25aca4993918af592eb02d2ff42da..d9df5bffac090389cdd163ba04feeb11f0e2d8b8:/lib-src/sorted-doc.c diff --git a/lib-src/sorted-doc.c b/lib-src/sorted-doc.c index c14f13c37c..cb04be2684 100644 --- a/lib-src/sorted-doc.c +++ b/lib-src/sorted-doc.c @@ -1,15 +1,37 @@ -/* Give this program DOCSTR.mm.nn as standard input - and it outputs to standard output - a file of texinfo input containing the doc strings. - - This version sorts the output by function name. - */ +/* Give this program DOC-mm.nn.oo as standard input and it outputs to + standard output a file of texinfo input containing the doc strings. + + Copyright (C) 1989, 1992, 1994, 1996, 1999, 2000, 2001, 2002, 2003, + 2004, 2005 Free Software Foundation, Inc. + + This file is part of GNU Emacs. + + GNU Emacs is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU Emacs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Emacs; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + This version sorts the output by function name. */ + +#ifdef HAVE_CONFIG_H +#include +#endif #include #include - +#ifndef HAVE_STDLIB_H /* config.h includes stdlib. */ extern char *malloc (); -char *xmalloc (); +#endif #define NUL '\0' #define MARKER '\037' @@ -35,17 +57,9 @@ struct docstr /* Allocated thing for an entry. */ }; -/* Print error message and exit. */ - -fatal (s1, s2) - char *s1, *s2; -{ - error (s1, s2); - exit (1); -} - /* Print error message. `s1' is printf control string, `s2' is arg for it. */ +void error (s1, s2) char *s1, *s2; { @@ -54,6 +68,16 @@ error (s1, s2) fprintf (stderr, "\n"); } +/* Print error message and exit. */ + +void +fatal (s1, s2) + char *s1, *s2; +{ + error (s1, s2); + exit (EXIT_FAILURE); +} + /* Like malloc but get fatal error if memory is exhausted. */ char * @@ -67,7 +91,7 @@ xmalloc (size) } char * -strsav (str) +xstrdup (str) char * str; { char *buf = xmalloc (strlen (str) + 1); @@ -97,19 +121,19 @@ char *states[] = { "WAITING", "BEG_NAME", "NAME_GET", "BEG_DESC", "DESC_GET" }; - + +int main () { register DOCSTR *dp = NULL; /* allocated DOCSTR */ register LINE *lp = NULL; /* allocated line */ register char *bp; /* ptr inside line buffer */ - int notfirst = 0; /* set after read something */ register enum state state = WAITING; /* state at start */ int cnt = 0; /* number of DOCSTRs read */ DOCSTR *docs; /* chain of allocated DOCSTRS */ char buf[512]; /* line buffer */ - + while (1) /* process one char at a time */ { /* this char from the DOCSTR file */ @@ -157,7 +181,7 @@ main () bp = buf; state = DESC_GET; } - + /* process gets */ if (state == NAME_GET || state == DESC_GET) @@ -169,7 +193,7 @@ main () else /* saving and changing state */ { *bp = NUL; - bp = strsav (buf); + bp = xstrdup (buf); if (state == NAME_GET) dp->name = bp; @@ -203,8 +227,25 @@ main () printf ("\\input texinfo @c -*-texinfo-*-\n"); printf ("@setfilename ../info/summary\n"); printf ("@settitle Command Summary for GNU Emacs\n"); + printf ("@finalout\n"); printf ("@unnumbered Command Summary for GNU Emacs\n"); printf ("@table @asis\n"); + printf ("\n"); + printf ("@iftex\n"); + printf ("@global@let@ITEM@item\n"); + printf ("@def@item{@filbreak@vskip5pt@ITEM}\n"); + printf ("@font@tensy cmsy10 scaled @magstephalf\n"); + printf ("@font@teni cmmi10 scaled @magstephalf\n"); + printf ("@def\\{{@tensy@char110}}\n"); /* this backslash goes with cmr10 */ + printf ("@def|{{@tensy@char106}}\n"); + printf ("@def@{{{@tensy@char102}}\n"); + printf ("@def@}{{@tensy@char103}}\n"); + printf ("@def<{{@teni@char62}}\n"); + printf ("@def>{{@teni@char60}}\n"); + printf ("@chardef@@64\n"); + printf ("@catcode43=12\n"); + printf ("@tableindent-0.2in\n"); + printf ("@end iftex\n"); /* print each function from the array */ @@ -228,11 +269,20 @@ main () putchar ('\n'); } printf("@end display\n"); + /* Try to avoid a save size overflow in the TeX output + routine. */ + if (i%100 == 0 && i > 0 && i != cnt) + printf("\n@end table\n@table @asis\n"); } printf ("@end table\n"); printf ("@bye\n"); } - return 0; + return EXIT_SUCCESS; } + +/* arch-tag: ce28f204-1e70-4b34-8210-3d54a5662071 + (do not change this comment) */ + +/* sorted-doc.c ends here */