aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/basic/docproc.c
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/basic/docproc.c')
-rw-r--r--scripts/basic/docproc.c34
1 files changed, 18 insertions, 16 deletions
diff --git a/scripts/basic/docproc.c b/scripts/basic/docproc.c
index f4d2f68452ba..e5c6ac7bde9b 100644
--- a/scripts/basic/docproc.c
+++ b/scripts/basic/docproc.c
@@ -10,8 +10,10 @@
10 * documentation-frontend 10 * documentation-frontend
11 * Scans the template file and call kernel-doc for 11 * Scans the template file and call kernel-doc for
12 * all occurrences of ![EIF]file 12 * all occurrences of ![EIF]file
13 * Beforehand each referenced file are scanned for 13 * Beforehand each referenced file is scanned for
14 * any exported sympols "EXPORT_SYMBOL()" statements. 14 * any symbols that are exported via these macros:
15 * EXPORT_SYMBOL(), EXPORT_SYMBOL_GPL(), &
16 * EXPORT_SYMBOL_GPL_FUTURE()
15 * This is used to create proper -function and 17 * This is used to create proper -function and
16 * -nofunction arguments in calls to kernel-doc. 18 * -nofunction arguments in calls to kernel-doc.
17 * Usage: docproc doc file.tmpl 19 * Usage: docproc doc file.tmpl
@@ -73,7 +75,7 @@ void usage (void)
73} 75}
74 76
75/* 77/*
76 * Execute kernel-doc with parameters givin in svec 78 * Execute kernel-doc with parameters given in svec
77 */ 79 */
78void exec_kernel_doc(char **svec) 80void exec_kernel_doc(char **svec)
79{ 81{
@@ -82,7 +84,7 @@ void exec_kernel_doc(char **svec)
82 char real_filename[PATH_MAX + 1]; 84 char real_filename[PATH_MAX + 1];
83 /* Make sure output generated so far are flushed */ 85 /* Make sure output generated so far are flushed */
84 fflush(stdout); 86 fflush(stdout);
85 switch(pid=fork()) { 87 switch (pid=fork()) {
86 case -1: 88 case -1:
87 perror("fork"); 89 perror("fork");
88 exit(1); 90 exit(1);
@@ -133,6 +135,7 @@ struct symfile * add_new_file(char * filename)
133 symfilelist[symfilecnt++].filename = strdup(filename); 135 symfilelist[symfilecnt++].filename = strdup(filename);
134 return &symfilelist[symfilecnt - 1]; 136 return &symfilelist[symfilecnt - 1];
135} 137}
138
136/* Check if file already are present in the list */ 139/* Check if file already are present in the list */
137struct symfile * filename_exist(char * filename) 140struct symfile * filename_exist(char * filename)
138{ 141{
@@ -156,8 +159,8 @@ void noaction2(char * file, char * line) { file = file; line = line; }
156void printline(char * line) { printf("%s", line); } 159void printline(char * line) { printf("%s", line); }
157 160
158/* 161/*
159 * Find all symbols exported with EXPORT_SYMBOL and EXPORT_SYMBOL_GPL 162 * Find all symbols in filename that are exported with EXPORT_SYMBOL &
160 * in filename. 163 * EXPORT_SYMBOL_GPL (& EXPORT_SYMBOL_GPL_FUTURE implicitly).
161 * All symbols located are stored in symfilelist. 164 * All symbols located are stored in symfilelist.
162 */ 165 */
163void find_export_symbols(char * filename) 166void find_export_symbols(char * filename)
@@ -179,15 +182,15 @@ void find_export_symbols(char * filename)
179 perror(real_filename); 182 perror(real_filename);
180 exit(1); 183 exit(1);
181 } 184 }
182 while(fgets(line, MAXLINESZ, fp)) { 185 while (fgets(line, MAXLINESZ, fp)) {
183 char *p; 186 char *p;
184 char *e; 187 char *e;
185 if (((p = strstr(line, "EXPORT_SYMBOL_GPL")) != 0) || 188 if (((p = strstr(line, "EXPORT_SYMBOL_GPL")) != NULL) ||
186 ((p = strstr(line, "EXPORT_SYMBOL")) != 0)) { 189 ((p = strstr(line, "EXPORT_SYMBOL")) != NULL)) {
187 /* Skip EXPORT_SYMBOL{_GPL} */ 190 /* Skip EXPORT_SYMBOL{_GPL} */
188 while (isalnum(*p) || *p == '_') 191 while (isalnum(*p) || *p == '_')
189 p++; 192 p++;
190 /* Remove paranteses and additional ws */ 193 /* Remove parentheses & additional whitespace */
191 while (isspace(*p)) 194 while (isspace(*p))
192 p++; 195 p++;
193 if (*p != '(') 196 if (*p != '(')
@@ -211,7 +214,7 @@ void find_export_symbols(char * filename)
211 * Document all external or internal functions in a file. 214 * Document all external or internal functions in a file.
212 * Call kernel-doc with following parameters: 215 * Call kernel-doc with following parameters:
213 * kernel-doc -docbook -nofunction function_name1 filename 216 * kernel-doc -docbook -nofunction function_name1 filename
214 * function names are obtained from all the src files 217 * Function names are obtained from all the src files
215 * by find_export_symbols. 218 * by find_export_symbols.
216 * intfunc uses -nofunction 219 * intfunc uses -nofunction
217 * extfunc uses -function 220 * extfunc uses -function
@@ -262,7 +265,7 @@ void singfunc(char * filename, char * line)
262 vec[idx++] = KERNELDOC; 265 vec[idx++] = KERNELDOC;
263 vec[idx++] = DOCBOOK; 266 vec[idx++] = DOCBOOK;
264 267
265 /* Split line up in individual parameters preceeded by FUNCTION */ 268 /* Split line up in individual parameters preceded by FUNCTION */
266 for (i=0; line[i]; i++) { 269 for (i=0; line[i]; i++) {
267 if (isspace(line[i])) { 270 if (isspace(line[i])) {
268 line[i] = '\0'; 271 line[i] = '\0';
@@ -292,7 +295,7 @@ void parse_file(FILE *infile)
292{ 295{
293 char line[MAXLINESZ]; 296 char line[MAXLINESZ];
294 char * s; 297 char * s;
295 while(fgets(line, MAXLINESZ, infile)) { 298 while (fgets(line, MAXLINESZ, infile)) {
296 if (line[0] == '!') { 299 if (line[0] == '!') {
297 s = line + 2; 300 s = line + 2;
298 switch (line[1]) { 301 switch (line[1]) {
@@ -351,9 +354,9 @@ int main(int argc, char *argv[])
351 { 354 {
352 /* Need to do this in two passes. 355 /* Need to do this in two passes.
353 * First pass is used to collect all symbols exported 356 * First pass is used to collect all symbols exported
354 * in the various files. 357 * in the various files;
355 * Second pass generate the documentation. 358 * Second pass generate the documentation.
356 * This is required because function are declared 359 * This is required because some functions are declared
357 * and exported in different files :-(( 360 * and exported in different files :-((
358 */ 361 */
359 /* Collect symbols */ 362 /* Collect symbols */
@@ -396,4 +399,3 @@ int main(int argc, char *argv[])
396 fflush(stdout); 399 fflush(stdout);
397 return exitstatus; 400 return exitstatus;
398} 401}
399