Module Name: src
Committed By: tsutsui
Date: Fri Jan 3 06:37:13 UTC 2014
Modified Files:
src/sys/arch/luna68k/stand/boot: getline.c init_main.c samachdep.h
Log Message:
Pull more fixes from OpenBSD/luna88k:
- Bring getline() - a.k.a libsa gets() with a prompt prefix - in par with libsa
gets(), featurewise; this means support for ^u to clear the input.
- constify
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/luna68k/stand/boot/getline.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/luna68k/stand/boot/init_main.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/luna68k/stand/boot/samachdep.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/luna68k/stand/boot/getline.c
diff -u src/sys/arch/luna68k/stand/boot/getline.c:1.2 src/sys/arch/luna68k/stand/boot/getline.c:1.3
--- src/sys/arch/luna68k/stand/boot/getline.c:1.2 Sun Jan 20 07:32:45 2013
+++ src/sys/arch/luna68k/stand/boot/getline.c Fri Jan 3 06:37:13 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: getline.c,v 1.2 2013/01/20 07:32:45 tsutsui Exp $ */
+/* $NetBSD: getline.c,v 1.3 2014/01/03 06:37:13 tsutsui Exp $ */
/*
* Copyright (c) 1992 OMRON Corporation.
@@ -79,40 +79,54 @@
#include <luna68k/stand/boot/samachdep.h>
int
-getline(char *prompt, char *buff)
+getline(const char *prompt, char *buff)
{
int c;
- char *p = buff;
+ char *p, *lp = buff;
printf("%s", prompt);
- for(;;) {
- c = getchar() & 0x7F;
+ for (;;) {
+ c = getchar() & 0x7f;
switch (c) {
- case 0x0a:
- case 0x0d:
+ case '\n':
+ case '\r':
+ *lp = '\0';
putchar('\n');
- *p = '\0';
goto outloop;
- case 0x08:
+ case '\b':
case 0x7f:
- if (p > buff) {
- putchar(0x08);
+ if (lp > buff) {
+ lp--;
+ putchar('\b');
putchar(' ');
- putchar(0x08);
- p--;
+ putchar('\b');
}
break;
+ case 'r' & 0x1f:
+ putchar('\n');
+ printf("%s", prompt);
+ for (p = buff; p < lp; ++p)
+ putchar(*p);
+ break;
+
+ case 'u' & 0x1f:
+ case 'w' & 0x1f:
+ lp = buff;
+ printf("\n%s", prompt);
+ break;
+
default:
- *p++ = c;
+ *lp++ = c;
putchar(c);
break;
}
}
outloop:
- return(strlen(buff));
+ *lp = '\0';
+ return lp - buff;
}
Index: src/sys/arch/luna68k/stand/boot/init_main.c
diff -u src/sys/arch/luna68k/stand/boot/init_main.c:1.6 src/sys/arch/luna68k/stand/boot/init_main.c:1.7
--- src/sys/arch/luna68k/stand/boot/init_main.c:1.6 Tue Mar 5 15:34:53 2013
+++ src/sys/arch/luna68k/stand/boot/init_main.c Fri Jan 3 06:37:13 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: init_main.c,v 1.6 2013/03/05 15:34:53 tsutsui Exp $ */
+/* $NetBSD: init_main.c,v 1.7 2014/01/03 06:37:13 tsutsui Exp $ */
/*
* Copyright (c) 1992 OMRON Corporation.
@@ -112,7 +112,7 @@ char *argv[MAXARGS];
#define BOOT_TIMEOUT 10
int boot_timeout = BOOT_TIMEOUT;
-char prompt[16] = "boot> ";
+static const char prompt[] = "boot> ";
void
main(void)
Index: src/sys/arch/luna68k/stand/boot/samachdep.h
diff -u src/sys/arch/luna68k/stand/boot/samachdep.h:1.12 src/sys/arch/luna68k/stand/boot/samachdep.h:1.13
--- src/sys/arch/luna68k/stand/boot/samachdep.h:1.12 Fri Jan 3 06:15:10 2014
+++ src/sys/arch/luna68k/stand/boot/samachdep.h Fri Jan 3 06:37:13 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: samachdep.h,v 1.12 2014/01/03 06:15:10 tsutsui Exp $ */
+/* $NetBSD: samachdep.h,v 1.13 2014/01/03 06:37:13 tsutsui Exp $ */
/*
* Copyright (c) 1982, 1990, 1993
@@ -103,7 +103,7 @@ int fsdump(int, char **);
int fsrestore(int, char **);
/* getline.c */
-int getline(char *, char *);
+int getline(const char *, char *);
/* if_le.c */
int leinit(void *);