]> git.wh0rd.org Git - nano.git/commitdiff
in parse_syntax(), don't generate an error if we find a duplicate syntax
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Sat, 15 Apr 2006 16:02:02 +0000 (16:02 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Sat, 15 Apr 2006 16:02:02 +0000 (16:02 +0000)
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

ChangeLog
src/rcfile.c

index 3b8181bcbdba2254329c4bec02de32c6a836486a..a37f507a7a6fa40c587d34bfa037fb83608d0893 100644 (file)
--- 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)
index 4a1a5ecd9909d81572c472dd83ff2ba06b725685..157cacd19f65e9a286f1bf029107fdbdd9a8ddc3 100644 (file)
@@ -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;
        }
     }