-#LyX 1.6.0 created this file. For more info see http://www.lyx.org/
-\lyxformat 345
+#LyX 2.0 created this file. For more info see http://www.lyx.org/
+\lyxformat 413
\begin_document
\begin_header
-\use_default_options false
\textclass literate-article
+\use_default_options false
+\maintain_unincluded_children false
\language english
+\language_package default
\inputencoding default
+\fontencoding global
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
+\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
+
\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\use_geometry false
\use_amsmath 0
\use_esint 0
+\use_mhchem 1
+\use_mathdots 1
\cite_engine basic
\use_bibtopic false
+\use_indices false
\paperorientation portrait
+\suppress_date false
+\use_refstyle 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
-\defskip medskip
+\paragraph_indentation default
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
-\author ""
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
\end_header
\begin_body
\begin_layout Scrap
<<Function bodies>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
int
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
main (int argc, char **argv)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
{
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (argc == 2) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
switch (argv[1][0]) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
case 'n':
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Scan input for noweb error messages>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
break;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
case 'x':
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Scan input for xlc error messages>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
break;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
case 'a':
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<AIX system using both noweb and xlc>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
break;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
case 's':
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
case 'b':
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Solaris and Linux systems using both noweb and gcc>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
break;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
case 'g':
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
default:
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Scan input for gcc error messages>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
break;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
} else {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Scan input for gcc error messages>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Function prototypes>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
int main (int argc, char **argv);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Global variables>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
char buffer[200][200];
\begin_inset Newline newline
\end_inset
\begin_layout Scrap
<<Function bodies>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
void
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
output_error (int buf_size, int error_line, char *tool)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
{
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
int i;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
fprintf(stdout, "! Build Error: ==> %s ==>
\backslash
n", tool);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
fprintf(stdout, " ...
\backslash
n
nl.%d ...
\backslash
n", error_line);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
for (i=0; i<buf_size; i++)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (strlen(buffer[i]) != 0)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
fprintf(stdout, "%s", buffer[i]);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
fprintf(stdout, "
\backslash
n");
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Function prototypes>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
void output_error (int buf_size, int error_line, char *tool);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Scan input for noweb error messages>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
{
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
last_buf_line = 0;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
while (fgets(buffer[0], 200, stdin)) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (noweb_try(0))
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
output_error(1, err_line, "noweb");
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
array.
\end_layout
+\begin_layout Scrap
+
+\end_layout
+
\begin_layout Scrap
<<Global variables>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
char *noweb_msgs[] = {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"couldn't open file",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"couldn't open temporary file",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"error writing temporary file",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"ill-formed option",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"unknown option",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"Bad format sequence",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"Can't open output file",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"Can't open temporary file",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"Capacity exceeded:",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"Ignoring unknown option -",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"This can't happen:",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"non-numeric line number in"
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
};
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
char *noweb_msgs_mimic_gcc[] = {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
": unescaped << in documentation chunk"
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
};
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
> >, or any of the above strings
\end_layout
+\begin_layout Scrap
+
+\end_layout
+
\begin_layout Scrap
<<Function bodies>>=
\begin_inset Newline newline
\begin_layout Scrap
<<Function prototypes>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
int noweb_try (int buf_line);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Scan input for xlc error messages>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
{
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
last_buf_line = 0;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
while (fgets(buffer[last_buf_line], 200, stdin)) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (xlc_try(0))
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
output_error(1, err_line, "xlc");
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
The following routine tests if a given buffer line matches this criteria:
\end_layout
+\begin_layout Scrap
+
+\end_layout
+
+\begin_layout Scrap
+
+\end_layout
+
\begin_layout Scrap
<<Function bodies>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
int
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
xlc_try (int buf_line)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
{
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
char *s, *t;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
t = buffer[buf_line];
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
s = t+1;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
while (*s != '"' && *s != ' ' && *s != '
\backslash
0')
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
s++;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (*t != '"' || *s != '"' || strncmp(s+1, ", line ", 7) != 0)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
return 0;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
s += 8;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
err_line = atoi(s);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
return 1;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Function prototypes>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
int xlc_try (int buf_line);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Scan input for gcc error messages>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
{
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
char *s, *t;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
last_buf_line = 0;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
while (fgets(buffer[last_buf_line], 200, stdin)) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
/****** Skip lines until I find an error */
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
s = (char *)strpbrk(buffer[last_buf_line], " :");
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (s == NULL || *s == ' ')
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
continue; /* No gcc error found here */
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
do {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<gcc error message criteria is to find a "...:999:" or a "...: ">>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
/****** OK It is an error message, get line number */
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
err_line = atoi(s+1);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (last_err_line == 0 || last_err_line == err_line) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
last_err_line = err_line;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
continue; /* It's either a header or a continuation, don't output
yet */
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
/****** Completed the scan of one error message, output it to LyX
*/
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
discharge_buffer(1);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
break;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
} while (fgets(buffer[last_buf_line], 200, stdin));
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
/****** EOF completes the scan of whatever was being scanned */
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
discharge_buffer(0);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<gcc error message criteria is to find a "...:999:" or a "...: ">>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
/****** Search first ":" in the error number */
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
s = (char *)strpbrk(buffer[last_buf_line], " :");
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
last_buf_line++;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (s == NULL || *s == ' ')
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<No gcc error found here, but it might terminate the scanning of a previous
one>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
/****** Search second ":" in the error number */
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
t = (char *)strpbrk(s+1, " :");
\begin_inset Newline newline
\end_inset
@
\end_layout
+\begin_layout Scrap
+
+\end_layout
+
+\begin_layout Scrap
+
+\end_layout
+
\begin_layout Scrap
<<No gcc error found here, but it might terminate the scanning of a previous
one>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
{
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
err_line = 0;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
discharge_buffer(1);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
continue;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
In those cases we empty the buffer completely.
\end_layout
+\begin_layout Scrap
+
+\end_layout
+
+\begin_layout Scrap
+
+\end_layout
+
\begin_layout Scrap
<<Function bodies>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
void
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
discharge_buffer (int save_last)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
{
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (last_err_line != 0) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
clean_gcc_messages();
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (save_last != 0) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
output_error(last_buf_line-1, last_err_line, "gcc");
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
strcpy (buffer[0], buffer[last_buf_line-1]);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
last_err_line = err_line;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
last_buf_line = 1;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
} else {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
++last_buf_line;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
clean_gcc_messages();
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
output_error(last_buf_line-1, last_err_line, "gcc");
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
last_err_line = 0;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
last_buf_line = 0;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Function prototypes>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
void discharge_buffer (int save_last);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Function bodies>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
void
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
clean_gcc_messages ()
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
{
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
int index;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
char search [30];
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
char *tail, *head;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
int search_len = sprintf(search, ".nw:%d:", last_err_line);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
for (index = 0; index < last_buf_line-1; index++) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
tail = (char *)strstr (buffer[index], search);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if ( tail == NULL) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
tail = (char *) strstr (buffer[index], ".nw:");
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (tail) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
tail += 4;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
} else {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
tail += search_len;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (tail != NULL) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
head = buffer[index];
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
while (*(head++) = *(tail++));
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Function prototypes>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
void clean_gcc_messages ();
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<AIX system using both noweb and xlc>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
{
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
last_buf_line = 0;
\begin_inset Newline newline
\end_inset
\begin_layout Scrap
<<Solaris and Linux systems using both noweb and gcc>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
{
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
char *s, *t;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
last_buf_line = 0;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
while (fgets(buffer[last_buf_line], 200, stdin)) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
/****** Skip lines until I find an error */
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (last_buf_line == 0 && noweb_try(0)) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
output_error(1, err_line, "noweb");
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
continue;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
s = (char *)strpbrk(buffer[last_buf_line], " :");
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (s == NULL || *s == ' ')
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
continue; /* No gcc error found here */
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
do {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<gcc error message criteria is to find a "...:999:" or a "...: ">>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
/****** OK It is an error, get line number */
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
err_line = atoi(s+1);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (last_err_line == 0 || last_err_line == err_line) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
last_err_line = err_line;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
continue; /* It's either a header or a continuation, don't output
yet */
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
/****** Completed the scan of one error message, output it to LyX
*/
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
discharge_buffer(1);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
break;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
} while (fgets(buffer[last_buf_line], 200, stdin));
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
/****** EOF completes the scan of whatever was being scanned */
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
discharge_buffer(0);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<listerrors.c>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
#include <stdio.h>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
#include <strings.h>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Global variables>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Function prototypes>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Function bodies>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<build-script>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
#!/bin/sh
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if [ -z "$NOWEB_SOURCE" ]; then NOWEB_SOURCE=Literate.nw; fi
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
notangle -L -Rlisterrors.c ${NOWEB_SOURCE} > listerrors.c
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
gcc -g -o listerrors listerrors.c
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
-#LyX 1.6.0 created this file. For more info see http://www.lyx.org/
-\lyxformat 345
+#LyX 2.0 created this file. For more info see http://www.lyx.org/
+\lyxformat 413
\begin_document
\begin_header
-\use_default_options false
\textclass amsbook
+\use_default_options false
\begin_modules
theorems-ams
+eqs-within-sections
+figs-within-sections
theorems-ams-extended
\end_modules
+\maintain_unincluded_children false
\language english
+\language_package default
\inputencoding default
+\fontencoding global
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
+\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
+
\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\use_geometry false
\use_amsmath 0
\use_esint 0
+\use_mhchem 1
+\use_mathdots 1
\cite_engine basic
\use_bibtopic false
+\use_indices false
\paperorientation portrait
+\suppress_date false
+\use_refstyle 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
-\defskip medskip
+\paragraph_indentation default
\quotes_language english
\papercolumns 1
\papersides 2
\paperpagestyle default
\tracking_changes false
\output_changes false
-\author ""
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
\end_header
\begin_body
\end_layout
\begin_layout Address
-Department of Mathematics
-\begin_inset Newline newline
-\end_inset
+Department of Mathematics,
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+newline
+\end_layout
-Lehigh University
-\begin_inset Newline newline
\end_inset
-Bethlehem, PA 18015
+Lehigh University, Bethlehem, PA 18015
\end_layout
\begin_layout Current Address
\end_layout
\begin_layout Bibliography
+\labelwidthstring References
\begin_inset CommandInset bibitem
LatexCommand bibitem
key "1"
\end_layout
\begin_layout Bibliography
+\labelwidthstring References
\begin_inset CommandInset bibitem
LatexCommand bibitem
key "2"
\end_layout
\begin_layout Bibliography
+\labelwidthstring References
\begin_inset CommandInset bibitem
LatexCommand bibitem
key "3"
-#LyX 1.6.0 created this file. For more info see http://www.lyx.org/
-\lyxformat 345
+#LyX 2.0 created this file. For more info see http://www.lyx.org/
+\lyxformat 413
\begin_document
\begin_header
-\use_default_options false
\textclass literate-article
\begin_preamble
%
\def\nwendcode{\endtrivlist \endgroup \vfil\penalty10\vfilneg}
\let\nwdocspar=\smallbreak
\end_preamble
+\use_default_options false
+\maintain_unincluded_children false
\language english
+\language_package default
\inputencoding auto
+\fontencoding global
\font_roman times
\font_sans helvet
\font_typewriter courier
\font_default_family default
+\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
+
\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\use_geometry false
\use_amsmath 0
\use_esint 0
+\use_mhchem 1
+\use_mathdots 1
\cite_engine basic
\use_bibtopic false
+\use_indices false
\paperorientation portrait
+\suppress_date false
+\use_refstyle 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
-\defskip medskip
+\paragraph_indentation default
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
-\author ""
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
\end_header
\begin_body
\begin_layout Scrap
<<listerrors>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
#!/usr/bin/python -tt
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"""reformat noweb and compiler errors for LyX.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
Expects to read from stdin and output to stdout.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"""
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
__author__ = "Kayvan A.
Sylvan <kayvan@sylvan.com>"
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
__date__ = "$Date: 2005/07/18 09:42:26 $"
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
__version__ = "$Revision: 1.5 $"
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
__credits__ = """Edmar Wienskoski Jr.
<edmar-w-jr@technologist.com>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
original Literate support for LyX.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
Bernard Michael Hurley <berhardh@westherts.ac.uk>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
modifications to original listerrors."""
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
__copyright__ = "Copyright 2002 - Kayvan Sylvan."
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
import sys, string
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Function Bodies>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if __name__ == "__main__":
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
main()
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Function Bodies>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
def write_error(msg, tool = "noweb", line_number = 1):
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"""Write out the given message in TeX error style.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Scrap
+\end_layout
+
+\begin_layout Scrap
called like: write_error(msg, tool, line_number)."""
\begin_inset Newline newline
\end_inset
\begin_layout Scrap
<<Function Bodies>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
__lines = [] # lines pushed back
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
def getline(file = sys.stdin):
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"""read a line from internal stack or from file.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
optional file argument defaults to sys.stdin."""
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
global __lines
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
lines = __lines
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if lines:
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
line = lines.pop()
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
else:
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
line = file.readline()
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
return line
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@ %def getline
\end_layout
\begin_layout Scrap
<<Function Bodies>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
def pushline(line):
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"push a line onto the pushback stack."
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Scrap
+\end_layout
+
+\begin_layout Scrap
global __lines
\begin_inset Newline newline
\end_inset
\begin_layout Scrap
<<Function Bodies>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
def main():
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"""Entry point for listerrors.
Takes no options.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
Reads stdin and writes to stdout.
Filter errors"""
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
while 1:
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
line = getline()
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if line == "": break
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Check line against patterns and take action>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@ %def main
\end_layout
\begin_layout Scrap
<<Check line against patterns and take action>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Scrap
+\end_layout
+
+\begin_layout Scrap
try_patterns_dispatch = [ noweb_try, gcc_try, xlc_try ]
\begin_inset Newline newline
\end_inset
\begin_layout Scrap
<<Function Bodies>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
def noweb_try(line):
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"""see if line is a noweb error.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
Returns 1 on success, 0 otherwise.
Outputs on stdout."""
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
retval = 0
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Look for the unescaped angle-brackets in documentation>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Look for anything with double angle brackets>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Last ditch effort scan for specific strings>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
return retval
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@ %def noweb_try
\end_layout
This is the only message with an associated line number from noweb.
\end_layout
+\begin_layout Scrap
+
+\end_layout
+
\begin_layout Scrap
<<Look for the unescaped angle-brackets in documentation>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if string.find(line, ": unescaped << in documentation chunk") != -1:
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
line_parts = string.split(line, ':')
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
num_str = line_parts[1]
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
num_len = len(num_str)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
i = 0
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
while i < num_len and (num_str[i] in string.digits): i = i + 1
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if i == num_len:
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
write_error(":" + line_parts[2], "noweb", int(num_str))
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
retval = 1
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Look for anything with double angle brackets>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Scrap
+\end_layout
+
+\begin_layout Scrap
if (not retval):
\begin_inset Newline newline
\end_inset
\begin_layout Scrap
<<Last ditch effort scan for specific strings>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (not retval):
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
msgs_to_try = ("couldn't open file",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"couldn't open temporary file",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"error writing temporary file",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"ill-formed option",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"unknown option",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"Bad format sequence",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"Can't open output file",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"Can't open temporary file",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"Capacity exceeded:",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"Ignoring unknown option -",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"This can't happen:",
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"non-numeric line number in")
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
for msg in msgs_to_try:
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if string.find(line, msg) != -1:
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
write_error(line, "noweb")
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
retval = 1
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
break
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout LyX-Code
foo.c: In function `main':
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
foo.c:3: `bar' undeclared (first use in this function)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
foo.c:3: (Each undeclared identifier is reported only once
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Scrap
+
+\end_layout
+\begin_layout Scrap
foo.c:3: for each function it appears in.)
\begin_inset Newline newline
\end_inset
\begin_layout Scrap
<<Function Bodies>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
def gcc_try(line):
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"""See if line is a gcc error.
Read ahead to handle all the lines.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
Returns 1 on success, 0 otherwise.
Outputs on stdout."""
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
retval = 0
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Handle the gcc error message>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
return retval
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@ %def gcc_try
\end_layout
\begin_layout Scrap
<<Accumulate gcc error lines and print it>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
num_str = next_line[first_space:num_end]
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
msgs = [line[first_space:]]
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
msgs.append(next_line[num_end + 1:])
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
header_to_see = next_line[:num_end]
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
next_line = getline()
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
while next_line and next_line[:num_end] == header_to_see:
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
msgs.append(next_line[num_end + 1:])
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
next_line = getline()
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if next_line: pushline(next_line)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
write_error(msgs, "gcc", int(num_str))
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
retval = 1
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\end_layout
+\begin_layout Scrap
+
+\end_layout
+
+\begin_layout Scrap
+
+\end_layout
+
\begin_layout Scrap
<<Function Bodies>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
def xlc_try(line):
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
"""see if line is an xlc error.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
Returns 1 on success, 0 otherwise.
Outputs on stdout."""
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
retval = 0
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if line[0] == '"': # This is the first character of all xlc errors
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
next_quote = string.find(line, '"', 1)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
first_space = string.find(line, ' ')
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (next_quote != -1) and (first_space > next_quote): # no space inisde
quotes
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if line[first_space - 1:first_space + 6] == ", line ":
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
num_start = num_end = first_space + 6
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
while line[num_end] in string.digits: num_end = num_end + 1
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if num_end > num_start:
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
write_error(line, "xlc", int(line[num_start : num_end]))
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
retval = 1
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
return retval
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@ %def xlc_try
\end_layout
\begin_layout Scrap
<<build-script>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
#!/bin/sh
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if [ -z "$NOWEB_SOURCE" ]; then NOWEB_SOURCE=listerrors.nw; fi
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
notangle -Rlisterrors ${NOWEB_SOURCE} > listerrors
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
chmod +x listerrors
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
-#LyX 1.6.0 created this file. For more info see http://www.lyx.org/
-\lyxformat 345
+#LyX 2.0 created this file. For more info see http://www.lyx.org/
+\lyxformat 413
\begin_document
\begin_header
-\use_default_options false
\textclass literate-article
\begin_preamble
%
\def\nwendcode{\endtrivlist \endgroup}
\let\nwdocspar=\smallbreak
\end_preamble
+\use_default_options false
+\maintain_unincluded_children false
\language english
+\language_package default
\inputencoding default
+\fontencoding global
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
+\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
+
\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\use_geometry false
\use_amsmath 0
\use_esint 0
+\use_mhchem 1
+\use_mathdots 1
\cite_engine basic
\use_bibtopic false
+\use_indices false
\paperorientation portrait
+\suppress_date false
+\use_refstyle 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
-\defskip medskip
+\paragraph_indentation default
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
-\author ""
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
\end_header
\begin_body
\begin_layout Scrap
<<noweb2lyx.in>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
#!@PERL@
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
#
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
# Copyright (C) 1999 Kayvan A.
Sylvan <kayvan@sylvan.com>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
# You are free to use and modify this code under the terms of
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
# the GNU General Public Licence version 2 or later.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
#
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
# Written with assistance from:
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
# Edmar Wienskoski Jr.
<edmar-w-jr@technologist.com>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
# Amir Karger <karger@post.harvard.edu>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
#
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
# $Id: noweb2lyx.lyx,v 1.5 2005/07/18 09:42:27 jamatos Exp $
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
#
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
# NOTE: This file was automatically generated from noweb2lyx.lyx using noweb.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
#
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Setup variables from user supplied args>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Subroutines>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Convert noweb to LyX>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout LyX-Code
@ Here is some documentation.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Scrap
+\end_layout
+
+\begin_layout Scrap
We can do arbitrary LaTeX code here.
\begin_inset Newline newline
\end_inset
\begin_layout Scrap
<<Convert noweb to LyX>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (!$post_only) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Transform noweb for reLyX>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if ((!$pre_only) && (!$post_only)) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Run reLyX on intermediate file>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (!$pre_only) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Fix up LyX file>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Clean up>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
This algorithm is outlined in the code that follows:
\end_layout
+\begin_layout Scrap
+
+\end_layout
+
\begin_layout Scrap
<<Transform noweb for reLyX>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Setup INPUT and OUTPUT>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
inputline: while(<INPUT>)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
{
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (/^
\backslash
s*
>
\backslash
>=/) { # Beginning of a noweb scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Read in and output the noweb code chunk>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
} elsif (/^@
\backslash
s+(.*)/) { # Beginning of a documentation chunk
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
print OUTPUT $1; # We do not need the ``@'' part
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
} elsif (/
\backslash
[
]
\backslash
]/) { # noweb quoted code
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Perform special input quoting of [[var]]>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
} else {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
print OUTPUT; # Just let the line pass through
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Close INPUT and OUTPUT>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Perform special input quoting of [[var]]>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
s/
\backslash
[
\begin_layout Scrap
<<Read in and output the noweb code chunk>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Save the beginning of the scrap to savedScrap>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Concatenate the rest of the scrap>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<print out the scrap in a reLyXskip block>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Setup INPUT and OUTPUT>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if ($pre_only) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
&setup_files($input_file, $output_file);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
} else {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
$relyx_file = "temp$$";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
&setup_files($input_file, $relyx_file);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Subroutines>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
sub setup_files {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
my($in, $out) = @_;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
open(INPUT, "<$in") || die "Cannot read $in: $!
\backslash
n";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
open(OUTPUT, ">$out") || die "Cannot write $out: $!
\backslash
n";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@ %def setup_files
\end_layout
\begin_layout Scrap
<<Save the beginning of the scrap to savedScrap>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
$savedScrap = $_;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
$endLine = "";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<print out the scrap in a reLyXskip block>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
print OUTPUT "
\backslash
begin{reLyXskip}
\backslash
n";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
print OUTPUT $savedScrap;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
print OUTPUT "
\backslash
n
\backslash
n";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
print OUTPUT "$endLine";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Close INPUT and OUTPUT>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
close(INPUT);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
close(OUTPUT);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Run reLyX on intermediate file>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Parse for document class>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Run reLyX with document class>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Parse for document class>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
open(INPUT, "<$relyx_file") ||
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
die "Cannot read $relyx_file: $!
\backslash
n";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
$class = "article"; # default if none found
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
parse: while(<INPUT>) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (/
\backslash
\backslash
docu[m]entclass{(.*)}/) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
$class = $1;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
last parse;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
close(INPUT);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Fix up LyX file>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Setup INPUT and OUTPUT for the final output>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
line: while(<INPUT>)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
{
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Fix code chunks in latex layout>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Fix [[var]] noweb construct>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
print OUTPUT; # default
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Close INPUT and OUTPUT>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Setup INPUT and OUTPUT for the final output>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if ($post_only) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
&setup_files("$input_file", "$output_file");
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
} else {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
&setup_files("$relyx_file.lyx", "$output_file");
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Fix code chunks in latex layout>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (/
\backslash
\backslash
latex latex/) { # Beginning of some latex code
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (($line = <INPUT>) =~ /^
\backslash
s*<</) { # code scrap
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
<<Transform this chunk into layout scrap>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
} else {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
# print the
\backslash
latex latex line + next line
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
print OUTPUT "$_$line";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
next line;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Transform this chunk into layout scrap>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Scrap
+
+\end_layout
+\begin_layout Scrap
$savedScrap = "
\backslash
\begin_layout Scrap
<<Slurp up to the end of the latex layout>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
slurp: while (<INPUT>) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
last slurp if /
\backslash
\backslash
latex /;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
next slurp if /
\backslash
\backslash
newline/;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
next slurp if /^
\backslash
s*$/;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
warn "confused by line: $_";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Fix [[var]] noweb construct>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if (/
\backslash
[
]
\backslash
]/) { # special code for [[var]]
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
s/
\backslash
[
latex default
\backslash
n/g;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
print OUTPUT;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
next line;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Clean up>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
system("rm -f $relyx_file*") unless ($post_only || $pre_only);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
\begin_layout Scrap
<<Setup variables from user supplied args>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
&usage() if ($#ARGV < 1); # zero or one argument
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
if ($ARGV[0] eq "-pre") {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
&usage unless ($#ARGV == 2);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
$input_file = $ARGV[1]; $output_file = $ARGV[2]; $pre_only = 1;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
} elsif ($ARGV[0] eq "-post") {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
&usage unless ($#ARGV == 2);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
$input_file = $ARGV[1]; $output_file = $ARGV[2]; $post_only = 1;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
} else {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
&usage unless ($#ARGV == 1);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
$input_file = $ARGV[0]; $output_file = $ARGV[1];
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
$pre_only = 0; $post_only = 0;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
}
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@ %def input_file output_file pre_only post_only
\end_layout
\begin_layout Scrap
<<Subroutines>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
sub usage() {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
print "Usage: noweb2lyx [-pre | -post] input-file output-file
-\begin_inset Newline newline
-\end_inset
-
+\end_layout
+\begin_layout Scrap
\begin_inset Newline newline
\end_inset
\begin_layout Scrap
<<build-script>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
PREFIX=/usr
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
notangle -Rnoweb2lyx.in noweb2lyx.nw > noweb2lyx.in
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
sed -e "s=@PERL@=$PREFIX/bin/perl=" noweb2lyx.in > noweb2lyx
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
chmod +x noweb2lyx
-\begin_inset Newline newline
-\end_inset
+\end_layout
+\begin_layout Scrap
@
\end_layout
Input amsdefs.inc
# Unwanted styles from the includes
-NoStyle Address
NoStyle Verse
# Chapter is _not_ prepended