From: Thomas Roessler Date: Wed, 17 May 2000 12:26:56 +0000 (+0000) Subject: Add a little tool to help with building tags files my editor groks. X-Git-Tag: mutt-1-3-1-rel~15 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3b4b3edb4f7ee43d676a2f92cf7c6c469931fcac;p=mutt Add a little tool to help with building tags files my editor groks. --- diff --git a/Makefile.am b/Makefile.am index 18662afb..2be8e604 100644 --- a/Makefile.am +++ b/Makefile.am @@ -194,3 +194,8 @@ stamp-doc-rc: $(srcdir)/init.h makedoc Muttrc.head $(srcdir)/init.h | ./makedoc -c | cat Muttrc.head - > Muttrc touch stamp-doc-rc + +jtags: TAGS mkjtags + ( ./mkjtags TAGS > tags.$$$$ && mv tags.$$$$ tags ) + +.PHONY: jtags diff --git a/mkjtags.c b/mkjtags.c new file mode 100644 index 00000000..da74a44d --- /dev/null +++ b/mkjtags.c @@ -0,0 +1,73 @@ +/* + * convert multi-file etags files to something + * which can be used by jed. + * + * Thomas Roessler + * + */ + +#include +#include +#include + +void doit (const char *fname, const char *prefix, int crlf_pending); + + +int main (int argc, char *argv[]) +{ + if (argc < 2) + { + fprintf (stderr, "usage: %s filename\n", argv[0]); + exit (1); + } + + doit (argv[1], NULL, 0); + return 0; +} + +void doit (const char *fname, const char *prefix, int crlf_pending) +{ + char buffer[2048]; + char tmpf[2048]; + FILE *fp; + char *cp; + + size_t l; + + if (!(fp = fopen (fname, "r"))) + { + perror (fname); + exit (1); + } + + while (fgets (buffer, sizeof (buffer), fp)) + { + l = strlen (buffer); + if (*buffer == '\f') + { + if (!crlf_pending) + fputs (buffer, stdout); + } + else if (crlf_pending && l > 9 && !strcmp (buffer + l - 9, ",include\n")) + { + if ((cp = strrchr (buffer, ','))) + *cp = 0; + strcpy (tmpf, buffer); + + if ((cp = strrchr (buffer, '/'))) + *cp = 0; + + doit (tmpf, buffer, crlf_pending); + } + else if (crlf_pending && prefix) + printf ("%s/%s", prefix, buffer); + else + fputs (buffer, stdout); + + crlf_pending = (*buffer == '\f'); + } + + fclose (fp); +} + +