summaryrefslogtreecommitdiff
path: root/usr.bin/mg/kbd.c
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>2000-04-13 06:12:19 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>2000-04-13 06:12:19 +0000
commit731317961dd78a8a6a84be2b662b9691fcf40d5a (patch)
tree642f051b45a10e806a55322912dad11e53435ab7 /usr.bin/mg/kbd.c
parentf54a169ac01105217cbf6e3dfa39f465f0bde571 (diff)
The start of KNF + -Wall. The code has been run through indent but
needs hand fixup. I stopped at keymap.c...
Diffstat (limited to 'usr.bin/mg/kbd.c')
-rw-r--r--usr.bin/mg/kbd.c541
1 files changed, 295 insertions, 246 deletions
diff --git a/usr.bin/mg/kbd.c b/usr.bin/mg/kbd.c
index 3c2dd86da0c..72be336b622 100644
--- a/usr.bin/mg/kbd.c
+++ b/usr.bin/mg/kbd.c
@@ -16,29 +16,39 @@
#define METABIT 0x80
#endif
-int use_metakey = TRUE;
+int use_metakey = TRUE;
/*
* Toggle the value of use_metakey
*/
+int
do_meta(f, n)
+ int f, n;
{
- if(f & FFARG) use_metakey = n > 0;
- else use_metakey = !use_metakey;
+
+ if (f & FFARG)
+ use_metakey = n > 0;
+ else
+ use_metakey = !use_metakey;
ewprintf("Meta keys %sabled", use_metakey ? "en" : "dis");
return TRUE;
}
#endif
#ifdef BSMAP
-static int bs_map = BSMAP;
+static int bs_map = BSMAP;
/*
* Toggle backspace mapping
*/
+int
bsmap(f, n)
+ int f, n;
{
- if(f & FFARG) bs_map = n > 0;
- else bs_map = ! bs_map;
+
+ if (f & FFARG)
+ bs_map = n > 0;
+ else
+ bs_map = !bs_map;
ewprintf("Backspace mapping %sabled", bs_map ? "en" : "dis");
return TRUE;
}
@@ -46,60 +56,67 @@ bsmap(f, n)
#ifndef NO_DPROMPT
#define PROMPTL 80
- char prompt[PROMPTL], *promptp;
+char prompt[PROMPTL], *promptp;
#endif
-static int pushed = FALSE;
-static int pushedc;
+static int pushed = FALSE;
+static int pushedc;
-VOID ungetkey(c)
-int c;
+VOID
+ungetkey(c)
+ int c;
{
+
#ifdef DO_METAKEY
- if(use_metakey && pushed && c==CCHR('[')) pushedc |= METABIT;
+ if (use_metakey && pushed && c == CCHR('['))
+ pushedc |= METABIT;
else
#endif
pushedc = c;
pushed = TRUE;
}
-int getkey(flag)
-int flag;
+int
+getkey(flag)
+ int flag;
{
- int c;
- char *keyname();
+ int c;
#ifndef NO_DPROMPT
- if(flag && !pushed) {
- if(prompt[0]!='\0' && ttwait()) {
+ if (flag && !pushed) {
+ if (prompt[0] != '\0' && ttwait()) {
ewprintf("%s", prompt); /* avoid problems with % */
- update(); /* put the cursor back */
+ update(); /* put the cursor back */
epresf = KPROMPT;
}
- if(promptp > prompt) *(promptp-1) = ' ';
+ if (promptp > prompt)
+ *(promptp - 1) = ' ';
}
#endif
- if(pushed) {
+ if (pushed) {
c = pushedc;
pushed = FALSE;
- } else c = getkbd();
+ } else
+ c = getkbd();
#ifdef BSMAP
- if(bs_map)
- if(c==CCHR('H')) c=CCHR('?');
- else if(c==CCHR('?')) c=CCHR('H');
-#endif
+ if (bs_map)
+ if (c == CCHR('H'))
+ c = CCHR('?');
+ else if (c == CCHR('?'))
+ c = CCHR('H');
+#endif
#ifdef DO_METAKEY
- if(use_metakey && (c&METABIT)) {
+ if (use_metakey && (c & METABIT)) {
pushedc = c & ~METABIT;
pushed = TRUE;
c = CCHR('[');
}
#endif
#ifndef NO_DPROMPT
- if(flag && promptp < &prompt[PROMPTL - 5]) {
- promptp = keyname(promptp, c);
- *promptp++ = '-';
- *promptp = '\0';
+ if (flag && promptp < &prompt[PROMPTL - 5]) {
+ promptp = keyname(promptp, c);
+ *promptp++ = '-';
+ *promptp = '\0';
}
#endif
return c;
@@ -111,281 +128,313 @@ int flag;
* keymap element the keyboard was found in as a side effect.
*/
-MAP_ELEMENT *ele;
+MAP_ELEMENT *ele;
-PF doscan(map, c)
-register KEYMAP *map;
-register int c;
+PF
+doscan(map, c)
+ KEYMAP *map;
+ int c;
{
- register MAP_ELEMENT *elec = &map->map_element[0]; /* local register copy for faster access */
- register MAP_ELEMENT *last = &map->map_element[map->map_num];
-
- while(elec < last && c > elec->k_num) elec++;
- ele = elec; /* used by prefix and binding code */
- if(elec >= last || c < elec->k_base)
- return map->map_default;
- return elec->k_funcp[c - elec->k_base];
+ MAP_ELEMENT *elec = &map->map_element[0];
+ MAP_ELEMENT *last = &map->map_element[map->map_num];
+
+ while (elec < last && c > elec->k_num)
+ elec++;
+ ele = elec; /* used by prefix and binding code */
+ if (elec >= last || c < elec->k_base)
+ return map->map_default;
+ return elec->k_funcp[c - elec->k_base];
}
+int
doin()
{
- KEYMAP *curmap;
- PF funct;
+ KEYMAP *curmap;
+ PF funct;
#ifndef NO_DPROMPT
- *(promptp = prompt) = '\0';
+ *(promptp = prompt) = '\0';
#endif
- curmap = curbp->b_modes[curbp->b_nmodes]->p_map;
- key.k_count = 0;
- while((funct=doscan(curmap,(key.k_chars[key.k_count++]=getkey(TRUE))))
- == prefix)
- curmap = ele->k_prefmap;
+ curmap = curbp->b_modes[curbp->b_nmodes]->p_map;
+ key.k_count = 0;
+ while ((funct = doscan(curmap, (key.k_chars[key.k_count++] =
+ getkey(TRUE)))) == prefix)
+ curmap = ele->k_prefmap;
#ifndef NO_MACRO
- if(macrodef && macrocount < MAXMACRO)
- macro[macrocount++].m_funct = funct;
+ if (macrodef && macrocount < MAXMACRO)
+ macro[macrocount++].m_funct = funct;
#endif
- return (*funct)(0, 1);
+ return (*funct) (0, 1);
}
+int
rescan(f, n)
-int f, n;
+ int f, n;
{
- int c;
- register KEYMAP *curmap;
- int i;
- PF fp;
- int mode = curbp->b_nmodes;
-
- for(;;) {
- if(ISUPPER(key.k_chars[key.k_count-1])) {
- c = TOLOWER(key.k_chars[key.k_count-1]);
- curmap = curbp->b_modes[mode]->p_map;
- for(i=0; i < key.k_count-1; i++) {
- if((fp=doscan(curmap,(key.k_chars[i]))) != prefix) break;
- curmap = ele->k_prefmap;
- }
- if(fp==prefix) {
- if((fp = doscan(curmap, c)) == prefix)
- while((fp=doscan(curmap,key.k_chars[key.k_count++] =
- getkey(TRUE))) == prefix)
- curmap = ele->k_prefmap;
- if(fp!=rescan) {
+ int c;
+ KEYMAP *curmap;
+ int i;
+ PF fp;
+ int mode = curbp->b_nmodes;
+
+ for (;;) {
+ if (ISUPPER(key.k_chars[key.k_count - 1])) {
+ c = TOLOWER(key.k_chars[key.k_count - 1]);
+ curmap = curbp->b_modes[mode]->p_map;
+ for (i = 0; i < key.k_count - 1; i++) {
+ if ((fp = doscan(curmap, (key.k_chars[i]))) != prefix)
+ break;
+ curmap = ele->k_prefmap;
+ }
+ if (fp == prefix) {
+ if ((fp = doscan(curmap, c)) == prefix)
+ while ((fp = doscan(curmap,
+ key.k_chars[key.k_count++] =
+ getkey(TRUE))) == prefix)
+ curmap = ele->k_prefmap;
+ if (fp != rescan) {
#ifndef NO_MACRO
- if(macrodef && macrocount <= MAXMACRO)
- macro[macrocount-1].m_funct = fp;
+ if (macrodef && macrocount <= MAXMACRO)
+ macro[macrocount - 1].m_funct = fp;
#endif
- return (*fp)(f, n);
+ return (*fp) (f, n);
+ }
+ }
}
- }
- }
- /* try previous mode */
- if(--mode < 0) return ABORT;
- curmap = curbp->b_modes[mode]->p_map;
- for(i=0; i < key.k_count; i++) {
- if((fp=doscan(curmap,(key.k_chars[i]))) != prefix) break;
- curmap = ele->k_prefmap;
- }
- if(fp==prefix) {
- while((fp=doscan(curmap,key.k_chars[i++]=getkey(TRUE)))
- == prefix)
- curmap = ele->k_prefmap;
- key.k_count = i;
- }
- if(fp!=rescan && i>=key.k_count-1) {
+ /* try previous mode */
+ if (--mode < 0)
+ return ABORT;
+ curmap = curbp->b_modes[mode]->p_map;
+ for (i = 0; i < key.k_count; i++) {
+ if ((fp = doscan(curmap, (key.k_chars[i]))) != prefix)
+ break;
+ curmap = ele->k_prefmap;
+ }
+ if (fp == prefix) {
+ while ((fp = doscan(curmap, key.k_chars[i++] = getkey(TRUE)))
+ == prefix)
+ curmap = ele->k_prefmap;
+ key.k_count = i;
+ }
+ if (fp != rescan && i >= key.k_count - 1) {
#ifndef NO_MACRO
- if(macrodef && macrocount <= MAXMACRO)
- macro[macrocount-1].m_funct = fp;
+ if (macrodef && macrocount <= MAXMACRO)
+ macro[macrocount - 1].m_funct = fp;
#endif
- return (*fp)(f, n);
+ return (*fp) (f, n);
+ }
}
- }
}
+int
universal_argument(f, n)
-int f, n;
+ int f, n;
{
- int c, nn=4;
- KEYMAP *curmap;
- PF funct;
+ int c, nn = 4;
+ KEYMAP *curmap;
+ PF funct;
- if(f&FFUNIV) nn *= n;
- for(;;) {
- key.k_chars[0] = c = getkey(TRUE);
- key.k_count = 1;
- if(c == '-') return negative_argument(f, nn);
- if(c >= '0' && c <= '9') return digit_argument(f, nn);
- curmap = curbp->b_modes[curbp->b_nmodes]->p_map;
- while((funct=doscan(curmap,c)) == prefix) {
- curmap = ele->k_prefmap;
- key.k_chars[key.k_count++] = c = getkey(TRUE);
- }
- if(funct != universal_argument) {
+ if (f & FFUNIV)
+ nn *= n;
+ for (;;) {
+ key.k_chars[0] = c = getkey(TRUE);
+ key.k_count = 1;
+ if (c == '-')
+ return negative_argument(f, nn);
+ if (c >= '0' && c <= '9')
+ return digit_argument(f, nn);
+ curmap = curbp->b_modes[curbp->b_nmodes]->p_map;
+ while ((funct = doscan(curmap, c)) == prefix) {
+ curmap = ele->k_prefmap;
+ key.k_chars[key.k_count++] = c = getkey(TRUE);
+ }
+ if (funct != universal_argument) {
#ifndef NO_MACRO
- if(macrodef && macrocount < MAXMACRO-1) {
- if(f&FFARG) macrocount--;
- macro[macrocount++].m_count = nn;
- macro[macrocount++].m_funct = funct;
- }
+ if (macrodef && macrocount < MAXMACRO - 1) {
+ if (f & FFARG)
+ macrocount--;
+ macro[macrocount++].m_count = nn;
+ macro[macrocount++].m_funct = funct;
+ }
#endif
- return (*funct)(FFUNIV, nn);
+ return (*funct) (FFUNIV, nn);
+ }
+ nn <<= 2;
}
- nn <<= 2;
- }
}
-/*ARGSUSED*/
+/* ARGSUSED */
+int
digit_argument(f, n)
-int f, n;
+ int f, n;
{
- int nn, c;
- KEYMAP *curmap;
- PF funct;
-
- nn = key.k_chars[key.k_count-1] - '0';
- for(;;) {
- c = getkey(TRUE);
- if(c < '0' || c > '9') break;
- nn *= 10;
- nn += c - '0';
- }
- key.k_chars[0] = c;
- key.k_count = 1;
- curmap = curbp->b_modes[curbp->b_nmodes]->p_map;
- while((funct=doscan(curmap,c)) == prefix) {
- curmap = ele->k_prefmap;
- key.k_chars[key.k_count++] = c = getkey(TRUE);
- }
+ int nn, c;
+ KEYMAP *curmap;
+ PF funct;
+
+ nn = key.k_chars[key.k_count - 1] - '0';
+ for (;;) {
+ c = getkey(TRUE);
+ if (c < '0' || c > '9')
+ break;
+ nn *= 10;
+ nn += c - '0';
+ }
+ key.k_chars[0] = c;
+ key.k_count = 1;
+ curmap = curbp->b_modes[curbp->b_nmodes]->p_map;
+ while ((funct = doscan(curmap, c)) == prefix) {
+ curmap = ele->k_prefmap;
+ key.k_chars[key.k_count++] = c = getkey(TRUE);
+ }
#ifndef NO_MACRO
- if(macrodef && macrocount < MAXMACRO-1) {
- if(f&FFARG) macrocount--;
- else macro[macrocount-1].m_funct = universal_argument;
- macro[macrocount++].m_count = nn;
- macro[macrocount++].m_funct = funct;
- }
+ if (macrodef && macrocount < MAXMACRO - 1) {
+ if (f & FFARG)
+ macrocount--;
+ else
+ macro[macrocount - 1].m_funct = universal_argument;
+ macro[macrocount++].m_count = nn;
+ macro[macrocount++].m_funct = funct;
+ }
#endif
- return (*funct)(FFOTHARG, nn);
+ return (*funct) (FFOTHARG, nn);
}
+int
negative_argument(f, n)
-int f, n;
+ int f, n;
{
- int nn = 0, c;
- KEYMAP *curmap;
- PF funct;
-
- for(;;) {
- c = getkey(TRUE);
- if(c < '0' || c > '9') break;
- nn *= 10;
- nn += c - '0';
- }
- if(nn) nn = -nn;
- else nn = -n;
- key.k_chars[0] = c;
- key.k_count = 1;
- curmap = curbp->b_modes[curbp->b_nmodes]->p_map;
- while((funct=doscan(curmap,c)) == prefix) {
- curmap = ele->k_prefmap;
- key.k_chars[key.k_count++] = c = getkey(TRUE);
- }
+ int nn = 0, c;
+ KEYMAP *curmap;
+ PF funct;
+
+ for (;;) {
+ c = getkey(TRUE);
+ if (c < '0' || c > '9')
+ break;
+ nn *= 10;
+ nn += c - '0';
+ }
+ if (nn)
+ nn = -nn;
+ else
+ nn = -n;
+ key.k_chars[0] = c;
+ key.k_count = 1;
+ curmap = curbp->b_modes[curbp->b_nmodes]->p_map;
+ while ((funct = doscan(curmap, c)) == prefix) {
+ curmap = ele->k_prefmap;
+ key.k_chars[key.k_count++] = c = getkey(TRUE);
+ }
#ifndef NO_MACRO
- if(macrodef && macrocount < MAXMACRO-1) {
- if(f&FFARG) macrocount--;
- else macro[macrocount-1].m_funct = universal_argument;
- macro[macrocount++].m_count = nn;
- macro[macrocount++].m_funct = funct;
- }
+ if (macrodef && macrocount < MAXMACRO - 1) {
+ if (f & FFARG)
+ macrocount--;
+ else
+ macro[macrocount - 1].m_funct = universal_argument;
+ macro[macrocount++].m_count = nn;
+ macro[macrocount++].m_funct = funct;
+ }
#endif
- return (*funct)(FFNEGARG, nn);
+ return (*funct) (FFNEGARG, nn);
}
/*
* Insert a character. While defining a macro, create a "LINE" containing
* all inserted characters.
*/
-
+int
selfinsert(f, n)
-int f, n;
+ int f, n;
{
- register int c;
- int count;
- VOID lchange();
+ int c;
+ int count;
#ifndef NO_MACRO
- LINE *lp;
- int insert();
+ LINE *lp;
#endif
- if (n < 0) return FALSE;
- if (n == 0) return TRUE;
- c = key.k_chars[key.k_count-1];
+ if (n < 0)
+ return FALSE;
+ if (n == 0)
+ return TRUE;
+ c = key.k_chars[key.k_count - 1];
#ifndef NO_MACRO
- if(macrodef && macrocount < MAXMACRO) {
- if(f & FFARG) macrocount -= 2;
- if(lastflag & CFINS) { /* last command was insert -- tack on end */
- macrocount--;
- if(maclcur->l_size < maclcur->l_used + n) {
- if((lp = lallocx(maclcur->l_used + n)) == NULL)
- return FALSE;
- lp->l_fp = maclcur->l_fp;
- lp->l_bp = maclcur->l_bp;
- lp->l_fp->l_bp = lp->l_bp->l_fp = lp;
- bcopy(maclcur->l_text, lp->l_text, maclcur->l_used);
- for(count = maclcur->l_used; count < lp->l_used; count++)
- lp->l_text[count] = c;
- free((char *)maclcur);
- maclcur = lp;
- } else {
- maclcur->l_used += n;
- for(count = maclcur->l_used-n; count < maclcur->l_used; count++)
- maclcur->l_text[count] = c;
- }
- } else {
- macro[macrocount-1].m_funct = insert;
- if((lp = lallocx(n)) == NULL) return FALSE;
- lp->l_bp = maclcur;
- lp->l_fp = maclcur->l_fp;
- maclcur->l_fp = lp;
- maclcur = lp;
- for(count = 0; count < n; count++)
- lp->l_text[count] = c;
+ if (macrodef && macrocount < MAXMACRO) {
+ if (f & FFARG)
+ macrocount -= 2;
+ if (lastflag & CFINS) { /* last command was insert -- tack on
+ * end */
+ macrocount--;
+ if (maclcur->l_size < maclcur->l_used + n) {
+ if ((lp = lallocx(maclcur->l_used + n)) == NULL)
+ return FALSE;
+ lp->l_fp = maclcur->l_fp;
+ lp->l_bp = maclcur->l_bp;
+ lp->l_fp->l_bp = lp->l_bp->l_fp = lp;
+ bcopy(maclcur->l_text, lp->l_text, maclcur->l_used);
+ for (count = maclcur->l_used; count < lp->l_used; count++)
+ lp->l_text[count] = c;
+ free((char *) maclcur);
+ maclcur = lp;
+ } else {
+ maclcur->l_used += n;
+ for (count = maclcur->l_used - n;
+ count < maclcur->l_used; count++)
+ maclcur->l_text[count] = c;
+ }
+ } else {
+ macro[macrocount - 1].m_funct = insert;
+ if ((lp = lallocx(n)) == NULL)
+ return FALSE;
+ lp->l_bp = maclcur;
+ lp->l_fp = maclcur->l_fp;
+ maclcur->l_fp = lp;
+ maclcur = lp;
+ for (count = 0; count < n; count++)
+ lp->l_text[count] = c;
+ }
+ thisflag |= CFINS;
}
- thisflag |= CFINS;
- }
#endif
- if(c == '\n') {
- do {
- count = lnewline();
- } while (--n && count==TRUE);
- return count;
- }
- if(curbp->b_flag & BFOVERWRITE) { /* Overwrite mode */
- lchange(WFEDIT);
- while(curwp->w_doto < llength(curwp->w_dotp) && n--)
- lputc(curwp->w_dotp, curwp->w_doto++, c);
- if(n<=0) return TRUE;
- }
- return linsert(n, c);
+ if (c == '\n') {
+ do {
+ count = lnewline();
+ } while (--n && count == TRUE);
+ return count;
+ }
+ if (curbp->b_flag & BFOVERWRITE) { /* Overwrite mode */
+ lchange(WFEDIT);
+ while (curwp->w_doto < llength(curwp->w_dotp) && n--)
+ lputc(curwp->w_dotp, curwp->w_doto++, c);
+ if (n <= 0)
+ return TRUE;
+ }
+ return linsert(n, c);
}
/*
- * this could be implemented as a keymap with everthing defined
+ * This could be implemented as a keymap with everthing defined
* as self-insert.
*/
+int
quote(f, n)
+ int f, n;
{
- register int c;
-
- key.k_count = 1;
- if((key.k_chars[0] = getkey(TRUE)) >= '0' && key.k_chars[0] <= '7') {
- key.k_chars[0] -= '0';
- if((c = getkey(TRUE)) >= '0' && c <= '7') {
- key.k_chars[0] <<= 3;
- key.k_chars[0] += c - '0';
- if((c = getkey(TRUE)) >= '0' && c <= '7') {
- key.k_chars[0] <<= 3;
- key.k_chars[0] += c - '0';
- } else ungetkey(c);
- } else ungetkey(c);
- }
- return selfinsert(f, n);
+ int c;
+
+ key.k_count = 1;
+ if ((key.k_chars[0] = getkey(TRUE)) >= '0' && key.k_chars[0] <= '7') {
+ key.k_chars[0] -= '0';
+ if ((c = getkey(TRUE)) >= '0' && c <= '7') {
+ key.k_chars[0] <<= 3;
+ key.k_chars[0] += c - '0';
+ if ((c = getkey(TRUE)) >= '0' && c <= '7') {
+ key.k_chars[0] <<= 3;
+ key.k_chars[0] += c - '0';
+ } else
+ ungetkey(c);
+ } else
+ ungetkey(c);
+ }
+ return selfinsert(f, n);
}