*** empty log message ***
This commit is contained in:
79
sys/mac/mgetline.c
Normal file
79
sys/mac/mgetline.c
Normal file
@@ -0,0 +1,79 @@
|
||||
/* SCCS Id: @(#)getline.c 3.1 90/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"
|
||||
|
||||
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) {
|
||||
int q_len = strlen(query);
|
||||
|
||||
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) {
|
||||
|
||||
#if ENABLE_MAC_POPUP
|
||||
if (iflags.popup_dialog)
|
||||
popup_getlin (query, bufp);
|
||||
else
|
||||
#endif
|
||||
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;
|
||||
|
||||
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 */
|
||||
Reference in New Issue
Block a user