|
@@ -30,6 +30,7 @@
|
|
|
* !Ifilename
|
|
|
* !Dfilename
|
|
|
* !Ffilename
|
|
|
+ * !Pfilename
|
|
|
*
|
|
|
*/
|
|
|
|
|
@@ -57,6 +58,7 @@ FILEONLY *symbolsonly;
|
|
|
typedef void FILELINE(char * file, char * line);
|
|
|
FILELINE * singlefunctions;
|
|
|
FILELINE * entity_system;
|
|
|
+FILELINE * docsection;
|
|
|
|
|
|
#define MAXLINESZ 2048
|
|
|
#define MAXFILES 250
|
|
@@ -288,13 +290,37 @@ void singfunc(char * filename, char * line)
|
|
|
exec_kernel_doc(vec);
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * Insert specific documentation section from a file.
|
|
|
+ * Call kernel-doc with the following parameters:
|
|
|
+ * kernel-doc -docbook -function "doc section" filename
|
|
|
+ */
|
|
|
+void docsect(char *filename, char *line)
|
|
|
+{
|
|
|
+ char *vec[6]; /* kerneldoc -docbook -function "section" file NULL */
|
|
|
+ char *s;
|
|
|
+
|
|
|
+ for (s = line; *s; s++)
|
|
|
+ if (*s == '\n')
|
|
|
+ *s = '\0';
|
|
|
+
|
|
|
+ vec[0] = KERNELDOC;
|
|
|
+ vec[1] = DOCBOOK;
|
|
|
+ vec[2] = FUNCTION;
|
|
|
+ vec[3] = line;
|
|
|
+ vec[4] = filename;
|
|
|
+ vec[5] = NULL;
|
|
|
+ exec_kernel_doc(vec);
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* Parse file, calling action specific functions for:
|
|
|
* 1) Lines containing !E
|
|
|
* 2) Lines containing !I
|
|
|
* 3) Lines containing !D
|
|
|
* 4) Lines containing !F
|
|
|
- * 5) Default lines - lines not matching the above
|
|
|
+ * 5) Lines containing !P
|
|
|
+ * 6) Default lines - lines not matching the above
|
|
|
*/
|
|
|
void parse_file(FILE *infile)
|
|
|
{
|
|
@@ -328,6 +354,15 @@ void parse_file(FILE *infile)
|
|
|
s++;
|
|
|
singlefunctions(line +2, s);
|
|
|
break;
|
|
|
+ case 'P':
|
|
|
+ /* filename */
|
|
|
+ while (*s && !isspace(*s)) s++;
|
|
|
+ *s++ = '\0';
|
|
|
+ /* DOC: section name */
|
|
|
+ while (isspace(*s))
|
|
|
+ s++;
|
|
|
+ docsection(line + 2, s);
|
|
|
+ break;
|
|
|
default:
|
|
|
defaultline(line);
|
|
|
}
|
|
@@ -374,6 +409,7 @@ int main(int argc, char *argv[])
|
|
|
externalfunctions = find_export_symbols;
|
|
|
symbolsonly = find_export_symbols;
|
|
|
singlefunctions = noaction2;
|
|
|
+ docsection = noaction2;
|
|
|
parse_file(infile);
|
|
|
|
|
|
/* Rewind to start from beginning of file again */
|
|
@@ -383,6 +419,7 @@ int main(int argc, char *argv[])
|
|
|
externalfunctions = extfunc;
|
|
|
symbolsonly = printline;
|
|
|
singlefunctions = singfunc;
|
|
|
+ docsection = docsect;
|
|
|
|
|
|
parse_file(infile);
|
|
|
}
|
|
@@ -396,6 +433,7 @@ int main(int argc, char *argv[])
|
|
|
externalfunctions = adddep;
|
|
|
symbolsonly = adddep;
|
|
|
singlefunctions = adddep2;
|
|
|
+ docsection = adddep2;
|
|
|
parse_file(infile);
|
|
|
printf("\n");
|
|
|
}
|