From: David Lawrence Ramsey Date: Sat, 15 Apr 2006 16:02:02 +0000 (+0000) Subject: in parse_syntax(), don't generate an error if we find a duplicate syntax X-Git-Tag: v1.3.12~296 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=39b7189a134d870d0fd3dd7599891a2ce34c7b80;p=nano.git in parse_syntax(), don't generate an error if we find a duplicate syntax name, since we might be trying to override a syntax in the global nanorc with one in our local nanorc; instead, free any duplicate syntaxes we find, so that we always use the last syntax with a given name git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3382 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- diff --git a/ChangeLog b/ChangeLog index 3b8181bc..a37f507a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -67,6 +67,11 @@ CVS code - parse_syntax() - Properly generate an error if we've read in a previous syntax without any associated color commands. (DLR) + - Don't generate an error if we find a duplicate syntax name, + since we might be trying to override a syntax in the global + nanorc with one in our local nanorc. Instead, free any + duplicate syntaxes we find, so that we always use the last + syntax with a given name. (DLR) parse_colors() - Check for a color command's not following a syntax line before anything else. (DLR) diff --git a/src/rcfile.c b/src/rcfile.c index 4a1a5ecd..157cacd1 100644 --- a/src/rcfile.c +++ b/src/rcfile.c @@ -276,7 +276,7 @@ bool nregcomp(const char *regex, int eflags) void parse_syntax(char *ptr) { const char *fileregptr = NULL, *nameptr = NULL; - const syntaxtype *tmpsyntax; + syntaxtype *tmpsyntax; exttype *endext = NULL; /* The end of the extensions list for this syntax. */ @@ -306,11 +306,16 @@ void parse_syntax(char *ptr) if (ptr == NULL) return; + /* Search for a duplicate syntax name. If we find one, free it, so + * that we always use the last syntax with a given name. */ for (tmpsyntax = syntaxes; tmpsyntax != NULL; tmpsyntax = tmpsyntax->next) { if (strcmp(nameptr, tmpsyntax->desc) == 0) { - rcfile_error(N_("Duplicate syntax name %s"), nameptr); - return; + syntaxtype *prev_syntax = tmpsyntax; + + tmpsyntax = tmpsyntax->next; + free(prev_syntax); + break; } }