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