Tim Waugh 50c406
--- a2ps-4.13/src/sheets-map.l.includes	2000-02-04 21:07:47.000000000 +0000
Tim Waugh 50c406
+++ a2ps-4.13/src/sheets-map.l	2004-09-07 16:06:27.575891868 +0100
Tim Waugh 50c406
@@ -40,6 +40,7 @@
Tim Waugh 50c406
 
Tim Waugh 50c406
 #define MAX_INCLUDE_DEPTH 10
Tim Waugh 50c406
 static YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH];
Tim Waugh 50c406
+static int lineno_stack[MAX_INCLUDE_DEPTH];
Tim Waugh 50c406
 static char *filename_stack[MAX_INCLUDE_DEPTH];
Tim Waugh 50c406
 static int include_stack_ptr;
Tim Waugh 50c406
 static char *yyfilename;
Tim Waugh 50c406
@@ -93,7 +94,7 @@
Tim Waugh 50c406
 white         [[:space:]]+
Tim Waugh 50c406
 key           [-a-zA-Z0-9_]+:
Tim Waugh 50c406
 comment       #.*
Tim Waugh 50c406
-include       include([^)]+)
Tim Waugh 50c406
+include       include\([^)]+\)
Tim Waugh 50c406
 %%
Tim Waugh 50c406
 
Tim Waugh 50c406
 {key}         token_val = xstrndup (yytext, yyleng - 1); return tKEY;
Tim Waugh 50c406
@@ -102,7 +103,7 @@
Tim Waugh 50c406
 {white}       ;
Tim Waugh 50c406
 {comment}     ;
Tim Waugh 50c406
 {include}     {	/* Kill the closing paren and pass the file name. */
Tim Waugh 50c406
-                yytext[yyleng] = '\0';
Tim Waugh 50c406
+                yytext[yyleng-1] = '\0';
Tim Waugh 50c406
                 yy_include_push (yytext + strlen ("include("));
Tim Waugh 50c406
               }
Tim Waugh 50c406
 
Tim Waugh 50c406
@@ -210,11 +211,13 @@
Tim Waugh 50c406
     error (1, 0, _("too many includes"));
Tim Waugh 50c406
 
Tim Waugh 50c406
   include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;
Tim Waugh 50c406
-  filename_stack[include_stack_ptr++] = file;
Tim Waugh 50c406
+  lineno_stack[include_stack_ptr] = yylineno;
Tim Waugh 50c406
+  filename_stack[include_stack_ptr++] = yyfilename;
Tim Waugh 50c406
 
Tim Waugh 50c406
   message (msg_file, (stderr, "%s:%d: includes %s\n",
Tim Waugh 50c406
 		      yyfilename, yylineno, file));
Tim Waugh 50c406
 
Tim Waugh 50c406
+  yyfilename = file;
Tim Waugh 50c406
   yyin = xrfopen (yyfilename);
Tim Waugh 50c406
 
Tim Waugh 50c406
   yy_switch_to_buffer (yy_create_buffer (yyin, YY_BUF_SIZE));
Tim Waugh 50c406
@@ -227,8 +230,8 @@
Tim Waugh 50c406
 {
Tim Waugh 50c406
   fclose (yyin);
Tim Waugh 50c406
   yy_delete_buffer (YY_CURRENT_BUFFER);
Tim Waugh 50c406
-  free (yyfilename);
Tim Waugh 50c406
   yyfilename = filename_stack[include_stack_ptr];
Tim Waugh 50c406
+  yylineno = lineno_stack[include_stack_ptr];
Tim Waugh 50c406
   yy_switch_to_buffer (include_stack[include_stack_ptr]);
Tim Waugh 50c406
   message (msg_file, (stderr, "Back to file `%s'.\n", yyfilename));
Tim Waugh 50c406
 }
Tim Waugh 50c406
@@ -254,6 +257,7 @@
Tim Waugh 50c406
 yy_close (void)
Tim Waugh 50c406
 {
Tim Waugh 50c406
   fclose (yyin);
Tim Waugh 50c406
+  free (yyfilename);
Tim Waugh 50c406
 }
Tim Waugh 50c406
 
Tim Waugh 50c406
 int