diff options
author | Claudio Fontana <sick_soul@users.sourceforge.net> | 2006-06-26 21:15:42 +0000 |
---|---|---|
committer | Claudio Fontana <sick_soul@users.sourceforge.net> | 2006-06-26 21:15:42 +0000 |
commit | 634eff44ade032626a8ed187d9dce3515bc2c6dc (patch) | |
tree | e26b8f20a4f2bccb85e836d60d542e6b3f67094e /libidu/scanners.c | |
parent | fdaca735ce48c23d7fe023f0d3a469513abd91be (diff) | |
download | idutils-634eff44ade032626a8ed187d9dce3515bc2c6dc.tar.gz idutils-634eff44ade032626a8ed187d9dce3515bc2c6dc.tar.bz2 idutils-634eff44ade032626a8ed187d9dce3515bc2c6dc.zip |
* applied savannah patch to fix perl strings
and comments #2775
Diffstat (limited to 'libidu/scanners.c')
-rw-r--r-- | libidu/scanners.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/libidu/scanners.c b/libidu/scanners.c index 07255cc..a97648d 100644 --- a/libidu/scanners.c +++ b/libidu/scanners.c @@ -1252,7 +1252,7 @@ top: /* Text character classes */ #define ISID1ST(c) ((rct)[c] & (I1)) -#define ISIDREST(c) ((rct)[c] & (I1|NM|SQ|Q1)) +#define ISIDREST(c) ((rct)[c] & (I1|NM|SQ)) #define ISNUMBER(c) ((rct)[c] & (NM)) #define ISIDSQUEEZE(c) ((rct)[c] & (SQ)) #define ISCOMMENT(c) ((rct)[c] & (CM)) @@ -1420,17 +1420,23 @@ top: break; case '#': - state |= CM; /* comment = 1; */ + /* Skip the # if it is inside single quotes or double quotes */ + if (!(state & Q1) && !(state & Q2)) + state |= CM; /* comment = 1 */ break; case '\'': + /* Skip the single quote if it is inside a comment or double quotes */ if (!skip_doc) - state ^= Q1; /* s_quote = ((s_quote) ? 0 : 1); */ + if (!(state & CM) && !(state & Q2)) + state ^= Q1; /* s_quote = ((s_quote) ? 0 : 1); */ break; case '\"': + /* Skip the double quote if it is inside a comment or single quotes */ if (!skip_doc) - state ^= Q2; /* d_quote = ((d_quote == 1) ? 0 : 1); */ + if (!(state & CM) && !(state & Q1)) + state ^= Q2; /* d_quote = ((d_quote == 1) ? 0 : 1); */ break; case '=': @@ -1488,13 +1494,15 @@ top: *id = '\0'; if (skip_doc) { + /* perl documentation 'perlpod' processing is done here */ + if (strequ (scanner_buffer, "cut")) { skip_doc = 0; } else { - state |= EQ; /* documenation = 1; */ + state |= EQ; /* documentation = 1; */ } goto top; } |