]> git.wh0rd.org Git - nano.git/commitdiff
Add function check_bad_binding to check ppl arent binding things they shouldn, though...
authorChris Allegretta <chrisa@asty.org>
Wed, 25 Jun 2008 03:06:11 +0000 (03:06 +0000)
committerChris Allegretta <chrisa@asty.org>
Wed, 25 Jun 2008 03:06:11 +0000 (03:06 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4265 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

src/rcfile.c

index 9c65d7a1b344175981d406c91862ca78331af81d..fd51c8c156c67c654fdb0c866b1bb1109600649a 100644 (file)
@@ -347,6 +347,20 @@ void parse_syntax(char *ptr)
     }
 }
 
+int check_bad_binding(sc *s)
+{
+#define BADLISTLEN 1
+    int badtypes[BADLISTLEN] = {META};
+    int badseqs[BADLISTLEN] = { 91 };
+    int i;
+
+    for (i = 0; i < BADLISTLEN; i++)
+        if (s->type == badtypes[i] && s->seq == badseqs[i])
+           return 1;
+
+    return 0;
+}
+
 void parse_keybinding(char *ptr)
 {
     char *keyptr = NULL, *keycopy = NULL, *funcptr = NULL, *menuptr = NULL;
@@ -405,6 +419,8 @@ void parse_keybinding(char *ptr)
                N_("Could not map name \"%s\" to a function\n"), funcptr);
        return;
     }
+
+
 #ifdef DEBUG
     fprintf(stderr, "newsc now address %d, menu func assigned = %d, menu = %d\n",
        (int) newsc, (int) newsc->scfunc, menu);
@@ -420,6 +436,13 @@ void parse_keybinding(char *ptr)
     fprintf(stderr, "s->seq = \"%d\"\n", newsc->seq);
 #endif
 
+    if (check_bad_binding(newsc)) {
+       rcfile_error(
+               N_("Sorry, keystr \"%s\" is an illegal binding\n"), newsc->keystr);
+       return;
+    }
+
+
     /* now let's have some fun.  Try and delete the other entries
        we found for the same menu, then make this new new
        beginning */