fix crash when specifying --source on command line
[rofl0r-gnuboy.git] / rckeys.c
blob46c5a8d6e1adfcde9bd2c49fc16d239d41eac844
1 #undef _GNU_SOURCE
2 #define _GNU_SOURCE
3 #include <string.h>
7 #include <stdlib.h>
9 #include "defs.h"
10 #include "rc.h"
11 #include "input.h"
16 char *keybind[MAX_KEYS];
21 int rc_bindkey(char *keyname, char *cmd)
23 int key;
24 char *a;
26 key = k_keycode(keyname);
27 if (!key) return -1;
29 a = strdup(cmd);
30 if (!a) die("out of memory binding key\n");
32 if (keybind[key]) free(keybind[key]);
33 keybind[key] = a;
35 return 0;
40 int rc_unbindkey(char *keyname)
42 int key;
44 key = k_keycode(keyname);
45 if (!key) return -1;
47 if (keybind[key]) free(keybind[key]);
48 keybind[key] = NULL;
49 return 0;
53 void rc_unbindall()
55 int i;
57 for (i = 0; i < MAX_KEYS; i++)
59 if (keybind[i])
61 free(keybind[i]);
62 keybind[i] = NULL;
67 char *rc_getkeybind(int key)
69 if(key <= 0 || key > MAX_KEYS) return 0;
70 return keybind[key];
73 int rc_dokey(int key, int st)
75 int ret;
76 if (!keybind[key]) return 0;
77 if (keybind[key][0] != '+' && !st) return 0;
79 if (st)
80 ret = rc_command(keybind[key]);
81 else
83 keybind[key][0] = '-';
84 ret = rc_command(keybind[key]);
85 keybind[key][0] = '+';
87 return ret;