76 lines
1.7 KiB
C
76 lines
1.7 KiB
C
/* NetHack 3.5 mgetline.c $Date$ $Revision$ */
|
|
/* SCCS Id: @(#)getline.c 3.5 1990/22/02 */
|
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
|
/* NetHack may be freely redistributed. See license for details. */
|
|
|
|
#include "hack.h"
|
|
#include "mactty.h"
|
|
#include "macwin.h"
|
|
#include "macpopup.h"
|
|
#include "func_tab.h"
|
|
|
|
extern int NDECL(extcmd_via_menu); /* cmd.c */
|
|
|
|
typedef Boolean FDECL ((* key_func), (unsigned char));
|
|
|
|
int
|
|
get_line_from_key_queue (char * bufp) {
|
|
* bufp = 0;
|
|
if (try_key_queue (bufp)) {
|
|
while (* bufp) {
|
|
if (* bufp == 10 || * bufp == 13) {
|
|
* bufp = 0;
|
|
}
|
|
bufp ++;
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
static void
|
|
topl_getlin(const char *query, char *bufp, Boolean ext) {
|
|
if (get_line_from_key_queue (bufp))
|
|
return;
|
|
|
|
enter_topl_mode((char *) query);
|
|
while (topl_key(nhgetch(), ext))
|
|
;
|
|
leave_topl_mode(bufp);
|
|
}
|
|
|
|
|
|
/*
|
|
* Read a line closed with '\n' into the array char bufp[BUFSZ].
|
|
* (The '\n' is not stored. The string is closed with a '\0'.)
|
|
* Reading can be interrupted by an escape ('\033') - now the
|
|
* resulting string is "\033".
|
|
*/
|
|
void
|
|
mac_getlin(const char *query, char *bufp) {
|
|
topl_getlin (query, bufp, false);
|
|
}
|
|
|
|
|
|
/* Read in an extended command - doing command line completion for
|
|
* when enough characters have been entered to make a unique command.
|
|
* This is just a modified getlin() followed by a lookup. -jsb
|
|
*/
|
|
int
|
|
mac_get_ext_cmd() {
|
|
char bufp[BUFSZ];
|
|
int i;
|
|
|
|
if (iflags.extmenu) return extcmd_via_menu();
|
|
topl_getlin("# ", bufp, true);
|
|
for (i = 0; extcmdlist[i].ef_txt != (char *)0; i++)
|
|
if (!strcmp(bufp, extcmdlist[i].ef_txt)) break;
|
|
if (extcmdlist[i].ef_txt == (char *)0) i = -1; /* not found */
|
|
|
|
return i;
|
|
}
|
|
|
|
|
|
/* macgetline.c */
|