From 6bb05b31ac5b9af6d246b4aaf55c0e6feee95706 Mon Sep 17 00:00:00 2001 From: jwalz Date: Sat, 5 Jan 2002 21:05:55 +0000 Subject: [PATCH] *** empty log message *** --- sys/mac/mgetline.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 sys/mac/mgetline.c diff --git a/sys/mac/mgetline.c b/sys/mac/mgetline.c new file mode 100644 index 000000000..3e25e3a9d --- /dev/null +++ b/sys/mac/mgetline.c @@ -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 */