patch-2.3.99-pre1 linux/scripts/docproc.c
Next file: linux/scripts/gen-all-syms
Previous file: linux/scripts/docgen
Back to the patch index
Back to the overall index
- Lines: 79
- Date:
Sun Mar 12 19:39:47 2000
- Orig file:
v2.3.51/linux/scripts/docproc.c
- Orig date:
Wed Dec 31 16:00:00 1969
diff -u --recursive --new-file v2.3.51/linux/scripts/docproc.c linux/scripts/docproc.c
@@ -0,0 +1,78 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+/*
+ * A simple filter for the templates
+ */
+
+int main(int argc, char *argv[])
+{
+ char buf[1024];
+ char *vec[1024];
+ char type[64];
+ int i;
+ int vp=2;
+ pid_t pid;
+
+
+ if(chdir(getenv("TOPDIR")))
+ {
+ perror("chdir");
+ exit(1);
+ }
+
+ /*
+ * Build the exec array ahead of time.
+ */
+ vec[0]="kernel-doc";
+ vec[1]="-docbook";
+ for(i=1;vp<1021;i++)
+ {
+ if(argv[i]==NULL)
+ break;
+ vec[vp++]=type;
+ vec[vp++]=argv[i];
+ }
+ vec[vp++]=buf+2;
+ vec[vp++]=NULL;
+
+ /*
+ * Now process the template
+ */
+
+ while(fgets(buf, 1024, stdin))
+ {
+ if(*buf!='!')
+ printf("%s", buf);
+ else
+ {
+ fflush(stdout);
+ if(buf[1]=='E')
+ strcpy(type, "-function");
+ else if(buf[1]=='I')
+ strcpy(type, "-nofunction");
+ else
+ {
+ fprintf(stderr, "Unknown ! escape.\n");
+ exit(1);
+ }
+ switch(pid=fork())
+ {
+ case -1:
+ perror("fork");
+ exit(1);
+ case 0:
+ execvp("scripts/kernel-doc", vec);
+ perror("exec");
+ exit(1);
+ default:
+ waitpid(pid, NULL,0);
+ }
+ }
+ }
+ exit(0);
+}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)