--- update/nuweb/nuweb.w 2004-08-13 09:39:06.000000000 +0200 +++ nuweb.w 2004-08-16 17:46:31.000000000 +0200 @@ -31,6 +31,8 @@ % % Notes: +% Updates on 2004-08-12 from Javier Goizueta +% -- old modifications merged into latest version % Updates on 2004-02-23 from Gregor Goldbach % -- new command line option -r which will make nuweb typeset each NWtarget and NWlink % instance with \LaTeX-commands from the hyperref package. This gives clickable scrap @@ -120,7 +122,7 @@ \lstset{extendedchars=true,keepspaces=true,language=C} -\title{Nuweb Version 1.1b \\ A Simple Literate Programming Tool} +\title{Nuweb Version 1.1c \\ A Simple Literate Programming Tool} \date{} \author{Preston Briggs\thanks{This work has been supported by ARPA, through ONR grant N00014-91-J-1989.} @@ -875,9 +877,11 @@ extern char * path_sep; /* How to join path to filename */ extern int listings_flag; /* if TRUE, use listings package for scrap formatting */ extern int hyperref_flag; /* if TRUE, use hyperref formatting for targets and links */ +extern int undefined_flag; /* if TRUE, emit undefined macro names to output */ +extern int arglabels_flag; /* if TRUE, label macro parameters passed */ @| tex_flag html_flag output_flag compare_flag verbose_flag number_flag scrap_flag dangling_flag -listings_flag hyperref_flag @} +listings_flag hyperref_flag undefined_flag arglabels_flag @} The flags are all initialized for correct default behavior. @@ -895,6 +899,8 @@ char * path_sep = PATH_SEP_CHAR; int listings_flag = FALSE; int hyperref_flag = FALSE; +int undefined_flag = FALSE; +int arglabels_flag = FALSE; @} A global variable \verb|nw_char| will be used for the nuweb @@ -963,6 +969,10 @@ break; case 'r': hyperref_flag = TRUE; break; + case 'u': undefined_flag = TRUE; + break; + case 'a': arglabels_flag = TRUE; + break; default: fprintf(stderr, "%s: unexpected argument ignored. ", command_name); fprintf(stderr, "Usage is: %s [-clnortv] [-p path] file...\n", @@ -1425,6 +1435,20 @@ } *parameters = res; } +else + { + Parameters res = arena_getmem(sizeof(*res)); + int *p2 = res->p; + int count = 0; + + res->parent = 0; + + while (count < 10) { + *p2++ = 0; + count++; + } + *parameters = res; + } @} These are used in \verb|write_tex| and \verb|write_html| to output the @@ -1439,6 +1463,7 @@ fputc(sep,file); fputs("{\\footnotesize ", file); + if (arglabels_flag) write_single_scrap_ref(file, scraps + 1); fprintf(file, "\\label{scrap%d}\n", scraps + 1); fputs(" }", file); @@ -3016,7 +3041,8 @@ @ else { remove(real_name); - rename(temp_name, real_name); + if (rename(temp_name, real_name)==-1) + remove(temp_name); } }@} @@ -3037,7 +3063,8 @@ remove(temp_name); else { remove(real_name); - rename(temp_name, real_name); + if (rename(temp_name, real_name)==-1) + remove(temp_name); } } else @@ -3210,7 +3237,7 @@ do c = getc(source_file); while (c == ' ' || c == '\t'); - while (isgraph((signed char)c)) { + while (isgraph(c)) { *p++ = c; c = getc(source_file); } @@ -3881,12 +3908,14 @@ } else { + if (undefined_flag) { int ln = fprintf(file, "%c<%s%c>", nw_char, name->spelling, nw_char); for (; --ln >= 0;) { indent_chars[global_indent + indent] = ' '; indent++; } + } if (!tex_flag) fprintf(stderr, "%s: macro never defined <%s>\n", command_name, name->spelling); @@ -4379,6 +4408,7 @@ }@} +%JG-CHAR-CHR8 Terminated by \verb+@@>+ @o names.c @{Name *collect_scrap_name()