X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fexamples%2FLiterate.lyx;h=9ad85287ced8b5dab0d17146a3843c0f7544f948;hb=84353366d17614f1220210b95496d1bc9125956c;hp=47db33766a1c829d19bdb7035ceb1ed603bfc7da;hpb=27de1486ca34aaad446adb798d71a77d6f6304da;p=lyx.git diff --git a/lib/examples/Literate.lyx b/lib/examples/Literate.lyx index 47db33766a..9ad85287ce 100644 --- a/lib/examples/Literate.lyx +++ b/lib/examples/Literate.lyx @@ -1,8 +1,7 @@ -#This file was created by Tue Feb 23 22:25:52 1999 -#LyX 1.0 (C) 1995-1999 Matthias Ettrich and the LyX Team -\lyxformat 2.15 +#LyX 1.2 created this file. For more info see http://www.lyx.org/ +\lyxformat 220 \textclass literate-article -\language default +\language english \inputencoding default \fontscheme default \graphics default @@ -12,6 +11,8 @@ \paperpackage a4 \use_geometry 0 \use_amsmath 0 +\use_natbib 0 +\use_numerical_citations 0 \paperorientation portrait \secnumdepth 3 \tocdepth 3 @@ -33,17 +34,46 @@ An example program Edmar Wienskoski Jr. \newline edmar-w-jr@technologist.com +\begin_inset Foot +collapsed true + +\layout Standard + +Modified by Bernard Michael Hurley bernardh@westherts.ac.uk ---- Don't blame + Edmar for any errors that have crept in! +\end_inset + + +\layout Abstract + + +\series bold +Note: +\series default + This example program is provided for educational use only. + The functionality in this C program has been superceded by the equivalent + Python code in +\emph on +examples/listerrors.lyx +\emph default + which should be installed in the LyX scripts directory. \layout Date -\latex latex +\begin_inset ERT +status Collapsed + +\layout Standard \backslash today +\end_inset + + \layout Standard -\begin_inset LatexCommand \tableofcontents +\begin_inset LatexCommand \tableofcontents{} \end_inset @@ -70,12 +100,12 @@ In this document we present a filter that recognizes compilation error messages The filter is required to read from standard input, parse for error messages and copy the error messages to the standard output. - During the output process, the filter must present the error messages in a - format that LyX can interpret, currently, the LaTeX error message format. - Of course, nothing will prevent future LyX releases from being able to read - other formats as well (like gcc error messages for example). - This mechanism is necessary to fully explore the literate programming - tool's capabilities. + During the output process, the filter must present the error messages in + a format that LyX can interpret, currently, the LaTeX error message format. + Of course, nothing will prevent future LyX releases from being able to + read other formats as well (like gcc error messages for example). + This mechanism is necessary to fully explore the literate programming tool's + capabilities. \layout Section Algorithm @@ -89,219 +119,51 @@ main (int argc, char **argv) \newline { \newline - -\protected_separator - if (argc == 2) { + if (argc == 2) { \newline - -\protected_separator - -\protected_separator - -\protected_separator - switch (argv[1][0]) { + switch (argv[1][0]) { \newline - -\protected_separator - -\protected_separator - -\protected_separator - case 'n': + case 'n': \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - <> + <> \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - break; + break; \newline - -\protected_separator - -\protected_separator - -\protected_separator - case 'x': + case 'x': \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - <> + <> \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - break; + break; \newline - -\protected_separator - -\protected_separator - -\protected_separator - case 'a': + case 'a': \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator -<> + <> \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - break; + break; \newline - -\protected_separator - -\protected_separator - -\protected_separator - case 's': + case 's': \newline - -\protected_separator - -\protected_separator - -\protected_separator - case 'b': + case 'b': \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - <> + <> \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - break; + break; \newline - -\protected_separator - -\protected_separator - -\protected_separator - case 'g': + case 'g': \newline - -\protected_separator - -\protected_separator - -\protected_separator - default: + default: \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - <> + <> \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - break; + break; \newline - -\protected_separator - -\protected_separator - -\protected_separator - } + } \newline - -\protected_separator - } else { + } else { \newline - -\protected_separator - -\protected_separator - -\protected_separator - <> + <> \newline - -\protected_separator - } + } \newline } \newline @@ -326,43 +188,13 @@ We resort to some global variables to allow access from several different <>= \newline -char -\protected_separator - -\protected_separator - -\protected_separator - buffer[200][200]; +char buffer[200][200]; \newline -int -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - last_buf_line; +int last_buf_line; \newline -int -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - last_err_line; +int last_err_line; \newline -int -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - err_line; +int err_line; \newline @ \layout Section @@ -370,7 +202,7 @@ int The output format \layout Standard -The output format mimics the LaTeX error messages format. +The output format mimics the TeX error messages format. This function prints a number of lines residing in the global variable \family typewriter @@ -378,6 +210,18 @@ buffer \family default , a program name and line number. There is no special requirement on the input strings, they can be anything. +\begin_inset Foot +collapsed true + +\layout Standard + +This function has been slightly changed from EW's original to make scanning + a bit easier with LaTeX::scanLogFile(). + The test has been added because LyX can crash if empty lines are allowed + here --- I can't figure out why! --- BMH +\end_inset + + \layout Scrap <>= @@ -388,52 +232,36 @@ output_error (int buf_size, int error_line, char *tool) \newline { \newline - -\protected_separator - int -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - i; + int i; \newline - -\protected_separator - + \newline - -\protected_separator - fprintf(stdout, "! Build Error: ==> %s ==> + fprintf(stdout, "! Build Error: ==> %s ==> \backslash n", tool); \newline - -\protected_separator - for (i=0; i >, or any of the above strings. + < <\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +> >, or any of the above strings \layout Scrap <>= @@ -581,161 +368,69 @@ noweb_try (int buf_line) \newline { \newline - -\protected_separator - char -\protected_separator - -\protected_separator - -\protected_separator - *s, *b; + char *s, *t, *b; \newline - -\protected_separator - int -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - i; + int i; \newline -\protected_separator - \newline - -\protected_separator - b = buffer[buf_line]; + b = buffer[buf_line]; \newline - -\protected_separator - s = strstr(b, "<<"); + err_line = 0; \newline -\protected_separator - if (s != NULL) { \newline - -\protected_separator - -\protected_separator - -\protected_separator - s = strstr(s+2, ">>"); + for (i=0; i<1; i++) { \newline - -\protected_separator - -\protected_separator - -\protected_separator - if (s != NULL) + s = (char *)strstr (b, noweb_msgs_mimic_gcc[i]); \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - return 1; + if (s != NULL) { \newline - -\protected_separator - } else { + t = (char *)strchr(buffer[buf_line], ':'); \newline - -\protected_separator - -\protected_separator - -\protected_separator - for (i=0; i<12; i++) { + err_line = atoi(t+1); \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - s = strstr (b, noweb_msgs[i]); + t = buffer[buf_line]; \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - if (s != NULL) + ++s; \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator -break; + while (*(t++) = *(s++)); \newline - -\protected_separator - -\protected_separator - -\protected_separator - } + return 1; \newline - -\protected_separator - -\protected_separator - -\protected_separator - if (s != NULL) + } \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - return 1; + } \newline - -\protected_separator - } + s = (char *)strstr(b, "<<"); \newline - -\protected_separator - return 0; + if (s != NULL) { +\newline + s = (char *)strstr(s+2, ">>"); +\newline + if (s != NULL) { +\newline + return 1; +\newline + } +\newline + } else { +\newline + for (i = 0; i < 12; ++i) { +\newline + s = (char *)strstr (b, noweb_msgs[i]); +\newline + if (s != NULL) { +\newline + return 1; +\newline + } +\newline + } +\newline + } +\newline + return 0; \newline } \newline @@ -754,43 +449,19 @@ The xlc compiler always outputs one single line for each error found, thus line at a time. \layout Scrap -<>= -\protected_separator - +<>= \newline { \newline - -\protected_separator - last_buf_line = 0; + last_buf_line = 0; \newline - -\protected_separator - while (fgets(buffer[last_buf_line], 200, stdin)) { + while (fgets(buffer[last_buf_line], 200, stdin)) { \newline - -\protected_separator - -\protected_separator - -\protected_separator - if (xlc_try(0)) + if (xlc_try(0)) \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - output_error(1, err_line, "xlc"); + output_error(1, err_line, "xlc"); \newline - -\protected_separator - } + } \newline } \newline @@ -819,65 +490,29 @@ xlc_try (int buf_line) \newline { \newline - -\protected_separator - char -\protected_separator - -\protected_separator - -\protected_separator - *s, *t; + char *s, *t; \newline - -\protected_separator - + \newline - -\protected_separator - t = buffer[buf_line]; + t = buffer[buf_line]; \newline - -\protected_separator - s = t+1; + s = t+1; \newline - -\protected_separator - while (*s != '"' && *s != ' ' && *s != ' + while (*s != '"' && *s != ' ' && *s != ' \backslash 0') \newline - -\protected_separator - -\protected_separator - -\protected_separator - s++; + s++; \newline - -\protected_separator - if (*t != '"' || *s != '"' || strncmp(s+1, ", line ", 7) != 0) + if (*t != '"' || *s != '"' || strncmp(s+1, ", line ", 7) != 0) \newline - -\protected_separator - -\protected_separator - -\protected_separator - return 0; + return 0; \newline - -\protected_separator - s += 8; + s += 8; \newline - -\protected_separator - err_line = atoi(s); + err_line = atoi(s); \newline - -\protected_separator - return 1; + return 1; \newline } \newline @@ -929,223 +564,53 @@ Every gcc error message contains a string with no space followed by a \newline { \newline - -\protected_separator - char -\protected_separator - -\protected_separator - -\protected_separator - *s, *t; + char *s, *t; \newline - -\protected_separator - + \newline - -\protected_separator - last_buf_line = 0; + last_buf_line = 0; \newline - -\protected_separator - while (fgets(buffer[last_buf_line], 200, stdin)) { + while (fgets(buffer[last_buf_line], 200, stdin)) { \newline - -\protected_separator - -\protected_separator - -\protected_separator - /****** Skip lines until I find an error */ + /****** Skip lines until I find an error */ \newline - -\protected_separator - -\protected_separator - -\protected_separator - s = strpbrk(buffer[last_buf_line], " :"); + s = (char *)strpbrk(buffer[last_buf_line], " :"); \newline - -\protected_separator - -\protected_separator - -\protected_separator - if (s == NULL || *s == ' ') + if (s == NULL || *s == ' ') \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - continue; /* No gcc error found here */ + continue; /* No gcc error found here */ \newline - -\protected_separator - -\protected_separator - -\protected_separator - do { + do { \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator -<> + <> \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - /****** OK It is an error message, get line number */ + /****** OK It is an error message, get line number */ \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - err_line = atoi(s+1); + err_line = atoi(s+1); \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - if (last_err_line == 0 || last_err_line == err_line) { + if (last_err_line == 0 || last_err_line == err_line) { \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator -last_err_line = err_line; + last_err_line = err_line; \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator -continue; /* It's either a header or a continuation, don't output yet */ + continue; /* It's either a header or a continuation, don't output + yet */ \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - } + } \newline - -\protected_separator - -\protected_separator - -\protected_separator - /****** Completed the scan of one error message, output it to LyX */ + /****** Completed the scan of one error message, output it to LyX + */ \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - discharge_buffer(1); + discharge_buffer(1); \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - break; + break; \newline - -\protected_separator - -\protected_separator - -\protected_separator - } while (fgets(buffer[last_buf_line], 200, stdin)); + } while (fgets(buffer[last_buf_line], 200, stdin)); \newline - -\protected_separator - } + } \newline - -\protected_separator - -\protected_separator -/****** EOF completes the scan of whatever was being scanned */ + /****** EOF completes the scan of whatever was being scanned */ \newline - -\protected_separator - discharge_buffer(0); + discharge_buffer(0); \newline } \newline @@ -1156,35 +621,29 @@ continue; /* It's either a header or a continuation, don't output yet */ \newline /****** Search first ":" in the error number */ \newline -s = strpbrk(buffer[last_buf_line], " :"); +s = (char *)strpbrk(buffer[last_buf_line], " :"); \newline last_buf_line++; \newline if (s == NULL || *s == ' ') \newline - -\protected_separator - <> \newline /****** Search second ":" in the error number */ \newline -t = strpbrk(s+1, " :"); +t = (char *)strpbrk(s+1, " :"); \newline if (t == NULL || *t == ' ') \newline - -\protected_separator - <> \newline /****** Verify if is all digits between ":" */ \newline if (t != s+1+strspn(s+1, "0123456789")) \newline - -\protected_separator - <> \newline @ @@ -1195,23 +654,11 @@ if (t != s+1+strspn(s+1, "0123456789")) \newline { \newline - -\protected_separator - -\protected_separator -err_line = 0; + err_line = 0; \newline - -\protected_separator - -\protected_separator -discharge_buffer(1); + discharge_buffer(1); \newline - -\protected_separator - -\protected_separator -continue; + continue; \newline } \newline @@ -1241,121 +688,118 @@ discharge_buffer (int save_last) \newline { \newline - -\protected_separator - if (last_err_line != 0) { + if (last_err_line != 0) { \newline - -\protected_separator - -\protected_separator - -\protected_separator - if (save_last != 0) { + clean_gcc_messages(); \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - output_error(last_buf_line-1, last_err_line, "gcc"); + if (save_last != 0) { \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - strcpy (buffer[0], buffer[last_buf_line-1]); + output_error(last_buf_line-1, last_err_line, "gcc"); \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - last_err_line = err_line; + strcpy (buffer[0], buffer[last_buf_line-1]); \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - last_buf_line = 1; + last_err_line = err_line; \newline - -\protected_separator - -\protected_separator - -\protected_separator - } else { + last_buf_line = 1; \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - output_error (last_buf_line, last_err_line, "gcc"); + } else { \newline + ++last_buf_line; +\newline + clean_gcc_messages(); +\newline + output_error(last_buf_line-1, last_err_line, "gcc"); +\newline + last_err_line = 0; +\newline + last_buf_line = 0; +\newline + } +\newline + } +\newline +} +\newline +@ +\layout Scrap -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - last_err_line = 0; +<>= +\newline +void discharge_buffer (int save_last); \newline +@ +\layout Standard -\protected_separator +The next function +\begin_inset Quotes eld +\end_inset -\protected_separator +cleans +\begin_inset Quotes erd +\end_inset -\protected_separator + superfluous information from gcc messages, namely the name of the noweb + file and the line number of the Error. +\begin_inset Foot +collapsed true -\protected_separator +\layout Standard -\protected_separator - last_buf_line = 0; -\newline +More could be done. + For instance, some way of distinguishing between gcc Errors and Warnings + should be devised. +\end_inset -\protected_separator -\protected_separator +\layout Scrap -\protected_separator - } +<>= \newline - -\protected_separator - } +void +\newline +clean_gcc_messages () +\newline +{ +\newline + int index; +\newline + char search [30]; +\newline + char *tail, *head; +\newline + int search_len = sprintf(search, ".nw:%d:", last_err_line); +\newline + +\newline + for (index = 0; index < last_buf_line-1; index++) { +\newline + tail = (char *)strstr (buffer[index], search); +\newline + if ( tail == NULL) { +\newline + tail = (char *) strstr (buffer[index], ".nw:"); +\newline + if (tail) { +\newline + tail += 4; +\newline + } +\newline + } else { +\newline + tail += search_len; +\newline + } +\newline + if (tail != NULL) { +\newline + head = buffer[index]; +\newline + while (*(head++) = *(tail++)); +\newline + } +\newline + } \newline } \newline @@ -1364,7 +808,7 @@ discharge_buffer (int save_last) <>= \newline -void discharge_buffer (int save_last); +void clean_gcc_messages (); \newline @ \layout Standard @@ -1378,57 +822,19 @@ To combine the scan of noweb error messages and xlc error messages is very \newline { \newline - -\protected_separator - last_buf_line = 0; + last_buf_line = 0; \newline - -\protected_separator - while (fgets(buffer[0], 200, stdin)) { + while (fgets(buffer[0], 200, stdin)) { \newline - -\protected_separator - -\protected_separator - -\protected_separator - if (noweb_try(0)) + if (noweb_try(0)) \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - output_error(1, 0, "noweb"); + output_error(1, err_line, "noweb"); \newline - -\protected_separator - -\protected_separator - -\protected_separator - else if (xlc_try(0)) + else if (xlc_try(0)) \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - output_error(1, err_line, "xlc"); + output_error(1, err_line, "xlc"); \newline - -\protected_separator - } + } \newline } \newline @@ -1436,8 +842,8 @@ To combine the scan of noweb error messages and xlc error messages is very \layout Standard To combine the scan of noweb error messages and gcc error messages is simple - if we realize that it is not possible to find a noweb error message - in the middle of a gcc error message. + if we realize that it is not possible to find a noweb error message in + the middle of a gcc error message. So we just repeat the gcc procedure and test for noweb error messages in the beginning of the scan: \layout Scrap @@ -1446,263 +852,61 @@ To combine the scan of noweb error messages and gcc error messages is simple \newline { \newline - -\protected_separator - char -\protected_separator - -\protected_separator - -\protected_separator - *s, *t; + char *s, *t; \newline - -\protected_separator - + \newline - -\protected_separator - last_buf_line = 0; + last_buf_line = 0; \newline - -\protected_separator - while (fgets(buffer[last_buf_line], 200, stdin)) { + while (fgets(buffer[last_buf_line], 200, stdin)) { \newline - -\protected_separator - -\protected_separator - -\protected_separator - /****** Skip lines until I find an error */ + /****** Skip lines until I find an error */ \newline - -\protected_separator - -\protected_separator - -\protected_separator - if (last_buf_line == 0 && noweb_try(0)) { + if (last_buf_line == 0 && noweb_try(0)) { \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - output_error(1, 0, "noweb"); + output_error(1, err_line, "noweb"); \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - continue; + continue; \newline - -\protected_separator - -\protected_separator - -\protected_separator - } + } \newline - -\protected_separator - -\protected_separator - -\protected_separator - s = strpbrk(buffer[last_buf_line], " :"); + s = (char *)strpbrk(buffer[last_buf_line], " :"); \newline - -\protected_separator - -\protected_separator - -\protected_separator - if (s == NULL || *s == ' ') + if (s == NULL || *s == ' ') \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - continue; /* No gcc error found here */ + continue; /* No gcc error found here */ \newline - -\protected_separator - -\protected_separator - -\protected_separator - do { + do { \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator -<> + <> \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - /****** OK It is an error, get line number */ + /****** OK It is an error, get line number */ \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - err_line = atoi(s+1); + err_line = atoi(s+1); \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - if (last_err_line == 0 || last_err_line == err_line) { + if (last_err_line == 0 || last_err_line == err_line) { \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator -last_err_line = err_line; + last_err_line = err_line; \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator -continue; /* It's either a header or a continuation, don't output yet */ + continue; /* It's either a header or a continuation, don't output + yet */ \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - } + } \newline - -\protected_separator - -\protected_separator - -\protected_separator - /****** Completed the scan of one error message, output it to LyX */ + /****** Completed the scan of one error message, output it to LyX + */ \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - discharge_buffer(1); + discharge_buffer(1); \newline - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - -\protected_separator - break; + break; \newline - -\protected_separator - -\protected_separator - -\protected_separator - } while (fgets(buffer[last_buf_line], 200, stdin)); + } while (fgets(buffer[last_buf_line], 200, stdin)); \newline - -\protected_separator - } + } \newline - -\protected_separator - -\protected_separator -/****** EOF completes the scan of whatever was being scanned */ + /****** EOF completes the scan of whatever was being scanned */ \newline - -\protected_separator - discharge_buffer(0); + discharge_buffer(0); \newline } \newline @@ -1716,17 +920,9 @@ Wrapping the code into a file \newline #include \newline -#include -\protected_separator - -\protected_separator - -\protected_separator - +#include \newline - -\protected_separator - + \newline <> \newline @@ -1767,9 +963,11 @@ listerrors.c <>= \newline -#!/usr/local/bin/bash +#!/bin/sh +\newline +if [ -z "$NOWEB_SOURCE" ]; then NOWEB_SOURCE=Literate.nw; fi \newline -notangle -L -Rlisterrors.c Literate.nw > listerrors.c +notangle -L -Rlisterrors.c ${NOWEB_SOURCE} > listerrors.c \newline gcc -g -o listerrors listerrors.c \newline @@ -1792,11 +990,7 @@ build-script #!/bin/sh \newline -notangle -Rbuild-script $1 | sh -\the_end - - - - - +notangle -Rbuild-script $1 | env NOWEB_SOURCE=$1 sh +\layout LyX-Code +\the_end