commit fb41a0780d464d40547609a4e1c2bafe3fc660fb
parent 1b6ed07543c21f0bb2078d2884de78d9a5b0d3e8
Author: Chris Allegretta <chrisa@asty.org>
Date: Wed, 25 Jun 2008 03:06:11 +0000
Add function check_bad_binding to check ppl arent binding things they shouldn, though currently its only one entry long ('meta-[')
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4265 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
1 file changed, 23 insertions(+), 0 deletions(-)
diff --git a/src/rcfile.c b/src/rcfile.c
@@ -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 */