diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2007-10-24 18:08:48 -0400 |
---|---|---|
committer | Sam Ravnborg <sam@ravnborg.org> | 2008-01-28 17:14:35 -0500 |
commit | e662af4281af27f95b1ec2c5eff056328a672fd7 (patch) | |
tree | 9cf7a5cf5e62c72082b5f8e5630669c195e66d22 /scripts/basic/docproc.c | |
parent | 2e95972c44ca7b3dd3c5d6ff08745b56ddfa55bc (diff) |
kernel-doc: new P directive for DOC: sections
The !P directive includes the contents of a DOC: section
given by title, e.g.
!Pfilename Title of the section
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'scripts/basic/docproc.c')
-rw-r--r-- | scripts/basic/docproc.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/scripts/basic/docproc.c b/scripts/basic/docproc.c index 7eae53419a48..35bdc68b6e66 100644 --- a/scripts/basic/docproc.c +++ b/scripts/basic/docproc.c | |||
@@ -30,6 +30,7 @@ | |||
30 | * !Ifilename | 30 | * !Ifilename |
31 | * !Dfilename | 31 | * !Dfilename |
32 | * !Ffilename | 32 | * !Ffilename |
33 | * !Pfilename | ||
33 | * | 34 | * |
34 | */ | 35 | */ |
35 | 36 | ||
@@ -57,6 +58,7 @@ FILEONLY *symbolsonly; | |||
57 | typedef void FILELINE(char * file, char * line); | 58 | typedef void FILELINE(char * file, char * line); |
58 | FILELINE * singlefunctions; | 59 | FILELINE * singlefunctions; |
59 | FILELINE * entity_system; | 60 | FILELINE * entity_system; |
61 | FILELINE * docsection; | ||
60 | 62 | ||
61 | #define MAXLINESZ 2048 | 63 | #define MAXLINESZ 2048 |
62 | #define MAXFILES 250 | 64 | #define MAXFILES 250 |
@@ -289,12 +291,36 @@ void singfunc(char * filename, char * line) | |||
289 | } | 291 | } |
290 | 292 | ||
291 | /* | 293 | /* |
294 | * Insert specific documentation section from a file. | ||
295 | * Call kernel-doc with the following parameters: | ||
296 | * kernel-doc -docbook -function "doc section" filename | ||
297 | */ | ||
298 | void docsect(char *filename, char *line) | ||
299 | { | ||
300 | char *vec[6]; /* kerneldoc -docbook -function "section" file NULL */ | ||
301 | char *s; | ||
302 | |||
303 | for (s = line; *s; s++) | ||
304 | if (*s == '\n') | ||
305 | *s = '\0'; | ||
306 | |||
307 | vec[0] = KERNELDOC; | ||
308 | vec[1] = DOCBOOK; | ||
309 | vec[2] = FUNCTION; | ||
310 | vec[3] = line; | ||
311 | vec[4] = filename; | ||
312 | vec[5] = NULL; | ||
313 | exec_kernel_doc(vec); | ||
314 | } | ||
315 | |||
316 | /* | ||
292 | * Parse file, calling action specific functions for: | 317 | * Parse file, calling action specific functions for: |
293 | * 1) Lines containing !E | 318 | * 1) Lines containing !E |
294 | * 2) Lines containing !I | 319 | * 2) Lines containing !I |
295 | * 3) Lines containing !D | 320 | * 3) Lines containing !D |
296 | * 4) Lines containing !F | 321 | * 4) Lines containing !F |
297 | * 5) Default lines - lines not matching the above | 322 | * 5) Lines containing !P |
323 | * 6) Default lines - lines not matching the above | ||
298 | */ | 324 | */ |
299 | void parse_file(FILE *infile) | 325 | void parse_file(FILE *infile) |
300 | { | 326 | { |
@@ -328,6 +354,15 @@ void parse_file(FILE *infile) | |||
328 | s++; | 354 | s++; |
329 | singlefunctions(line +2, s); | 355 | singlefunctions(line +2, s); |
330 | break; | 356 | break; |
357 | case 'P': | ||
358 | /* filename */ | ||
359 | while (*s && !isspace(*s)) s++; | ||
360 | *s++ = '\0'; | ||
361 | /* DOC: section name */ | ||
362 | while (isspace(*s)) | ||
363 | s++; | ||
364 | docsection(line + 2, s); | ||
365 | break; | ||
331 | default: | 366 | default: |
332 | defaultline(line); | 367 | defaultline(line); |
333 | } | 368 | } |
@@ -374,6 +409,7 @@ int main(int argc, char *argv[]) | |||
374 | externalfunctions = find_export_symbols; | 409 | externalfunctions = find_export_symbols; |
375 | symbolsonly = find_export_symbols; | 410 | symbolsonly = find_export_symbols; |
376 | singlefunctions = noaction2; | 411 | singlefunctions = noaction2; |
412 | docsection = noaction2; | ||
377 | parse_file(infile); | 413 | parse_file(infile); |
378 | 414 | ||
379 | /* Rewind to start from beginning of file again */ | 415 | /* Rewind to start from beginning of file again */ |
@@ -383,6 +419,7 @@ int main(int argc, char *argv[]) | |||
383 | externalfunctions = extfunc; | 419 | externalfunctions = extfunc; |
384 | symbolsonly = printline; | 420 | symbolsonly = printline; |
385 | singlefunctions = singfunc; | 421 | singlefunctions = singfunc; |
422 | docsection = docsect; | ||
386 | 423 | ||
387 | parse_file(infile); | 424 | parse_file(infile); |
388 | } | 425 | } |
@@ -396,6 +433,7 @@ int main(int argc, char *argv[]) | |||
396 | externalfunctions = adddep; | 433 | externalfunctions = adddep; |
397 | symbolsonly = adddep; | 434 | symbolsonly = adddep; |
398 | singlefunctions = adddep2; | 435 | singlefunctions = adddep2; |
436 | docsection = adddep2; | ||
399 | parse_file(infile); | 437 | parse_file(infile); |
400 | printf("\n"); | 438 | printf("\n"); |
401 | } | 439 | } |