/*
- * convert multi-file etags files to something
+ * $Id$
+ *
+ * Convert multi-file etags files to something
* which can be used by jed.
*
* Thomas Roessler <roessler@guug.de>
#include <stdlib.h>
#include <string.h>
-void doit (const char *fname, const char *prefix, int crlf_pending);
+#include <unistd.h>
+
+void doit (const char *fname, char *prefix, int crlf_pending);
+
+char Cwd[2048];
+size_t Cwdl;
-
int main (int argc, char *argv[])
{
if (argc < 2)
fprintf (stderr, "usage: %s filename\n", argv[0]);
exit (1);
}
+
+ if (getcwd (Cwd, sizeof (Cwd)) == NULL)
+ {
+ fprintf (stderr, "%s: Your current working directory has a really long name.\n", argv[0]);
+ exit (1);
+ }
+
+ Cwdl = strlen (Cwd);
- doit (argv[1], NULL, 0);
+ doit (argv[1], Cwd, 0);
return 0;
}
-void doit (const char *fname, const char *prefix, int crlf_pending)
+void doit (const char *fname, char *prefix, int crlf_pending)
{
char buffer[2048];
char tmpf[2048];
FILE *fp;
char *cp;
-
size_t l;
+
+ if (strncmp (prefix, Cwd, Cwdl) == 0)
+ {
+ prefix += Cwdl;
+ if (*prefix == '/')
+ prefix++;
+ }
+
+ if (!*prefix)
+ prefix = NULL;
+
if (!(fp = fopen (fname, "r")))
{
perror (fname);
while (fgets (buffer, sizeof (buffer), fp))
{
l = strlen (buffer);
- if (*buffer == '\f')
- {
- if (!crlf_pending)
- fputs (buffer, stdout);
- }
+
+ if (*buffer == '\f' && !crlf_pending)
+ fputs (buffer, stdout);
else if (crlf_pending && l > 9 && !strcmp (buffer + l - 9, ",include\n"))
{
if ((cp = strrchr (buffer, ',')))
fclose (fp);
}
-
-