|
 |
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
|