From fb41a0780d464d40547609a4e1c2bafe3fc660fb Mon Sep 17 00:00:00 2001 From: Chris Allegretta Date: Wed, 25 Jun 2008 03:06:11 +0000 Subject: [PATCH] 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 --- src/rcfile.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/rcfile.c b/src/rcfile.c index 9c65d7a1..fd51c8c1 100644 --- 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 */ -- 2.39.5