S_food: \x05 # club (as in cards)
S_potion: \xad # upside down '!'
S_scroll: \x0e # musical note
-# S_armor: \x5b
-# S_ring: \x3d
-# S_amulet: \x0c
-# S_tool: \x28
S_wand: \xe7 # greek tau
S_coin: \x0f # yes it's the same as gems
S_gem: \x0f # fancy '*'
S_explode9: \047
finish
-start: Unicode_US
- Description: Unicode symbols similar to code page 437
- Restrictions: Unicode
- S_vwall: U+2502 # box drawings light vertical
- S_hwall: U+2500 # box drawings light horizontal
- S_tlcorn: U+250C # box drawings light down and right
- S_trcorn: U+2510 # box drawings light down and left
- S_blcorn: U+2514 # box drawings light up and right
- S_brcorn: U+2518 # box drawings light up and left
- S_crwall: U+253C # box drawings light up and left
- S_tuwall: U+2534 # box drawings light up and horizontal
- S_tdwall: U+252C # box drawings light down and horizontal
- S_tlwall: U+2524 # box drawings light vertical and left
- S_trwall: U+251C # box drawings light vertical and right
- S_ndoor: U+2556 # box drawings down double and left single
- S_vodoor: U+25A0 # black square
- S_hodoor: U+25A0 # black square
- S_bars: U+2261 # identical to
- S_tree: U+00B1 # plus-minus sign
- S_room: U+00B7 # middle dot
- S_corr: U+2591 # light shade
- S_litcorr: U+2592 # medium shade
- S_fountain: U+2320 # top half integral
- S_pool: U+2248 # almost equal to
- S_ice: U+00B7 # middle dot
- S_lava: U+2248 # almost equal to
- S_vodbridge: U+00B7 # middle dot
- S_hodbridge: U+00B7 # middle dot
- S_water: U+2248 # almost equal to
- S_vbeam: U+2502 # box drawings light vertical
- S_hbeam: U+2500 # box drawings light horizontal
- S_sw_ml: U+2502 # box drawings light vertical
- S_sw_mr: U+2502 # box drawings light vertical
- S_explode4: U+2502 # box drawings light vertical
- S_explode6: U+2502 # box drawings light vertical
-finish
-
-start: Unicode_non_US
- Description: If default OEM CP for non-Unicode programs is not 437 or 850
- Restrictions: Unicode
- S_vwall: U+2502 # box drawings light vertical
- S_hwall: U+2500 # box drawings light horizontal
- S_tlcorn: U+250C # box drawings light down and right
- S_trcorn: U+2510 # box drawings light down and left
- S_blcorn: U+2514 # box drawings light up and right
- S_brcorn: U+2518 # box drawings light up and left
- S_crwall: U+253C # box drawings light up and left
- S_tuwall: U+2534 # box drawings light up and horizontal
- S_tdwall: U+252C # box drawings light down and horizontal
- S_tlwall: U+2524 # box drawings light vertical and left
- S_trwall: U+251C # box drawings light vertical and right
- S_vodoor: U+25A0 # black square
- S_hodoor: U+25A0 # black square
- S_corr: U+2591 # light shade
- S_litcorr: U+2592 # medium shade
- S_vbeam: U+2502 # box drawings light vertical
- S_hbeam: U+2500 # box drawings light horizontal
- S_sw_ml: U+2502 # box drawings light vertical
- S_sw_mr: U+2502 # box drawings light vertical
- S_explode4: U+2502 # box drawings light vertical
- S_explode6: U+2502 # box drawings light vertical
- S_coin: U+20AC # euro
-finish
-
-start: UnicodeRogueEpyx
- Description: Unicode Rogue level symbols
- Restrictions: Unicode
- Restrictions: Rogue
- Color: Yes
- S_weapon: U+2191 # up arrow
- S_armor: U+25d9 # Vert rect with o
- S_ring: U+2642 # circle with arrow
- S_amulet: U+2640 # "female" symbol
- S_food: U+2663 # club (as in cards)
- S_potion: U+00a1 # upside down '!'
- S_scroll: U+266a # musical note
- S_wand: U+03c4 # greek tau
- S_coin: U+263c # yes it's the same as gems
- S_gem: U+263c # fancy '*'
- S_rock: U+0060 # grave accent
- S_ball: U+0030 # digit 0
- S_chain: U+005f # low line
- S_venom: U+002e # full stop
- S_book: U+002b # + sign
- S_vwall: U+2551 # all walls now use
- S_hwall: U+2550 # double line graphics
- S_tlcorn: U+2554 # box drawing double down and right
- S_trcorn: U+2557 # box drawing double down and left
- S_blcorn: U+255a # box drawing double up and right
- S_brcorn: U+255d # box drawing double up and left
- S_crwall: U+256c # box drawing double vertical and horizontal
- S_tuwall: U+2569 # box drawing double up and horizontal
- S_tdwall: U+2566 # box drawing double down and horizontal
- S_tlwall: U+2563 # box drawing double vertical and left
- S_trwall: U+2560 # box drawing double vertical and right
- S_ndoor: U+256c # box drawing double vertical and horizontal
- S_vodoor: U+256c # box drawing double vertical and horizontal
- S_hodoor: U+256c # box drawing double vertical and horizontal
- S_room: U+00b7 # centered dot
- S_corr: U+2592 # medium shade
- S_litcorr: U+2593 # dark shade
- S_upstair: U+001e # Greek Xi
- S_dnstair: U+001f
- S_arrow_trap: U+2666 # diamond (cards)
- S_dart_trap: U+2666
- S_falling_rock_trap: U+2666
- S_squeaky_board: U+2666
- S_bear_trap: U+2666
- S_land_mine: U+2666
- S_rolling_boulder_trap: U+2666
- S_sleeping_gas_trap: U+2666
- S_rust_trap: U+2666
- S_fire_trap: U+2666
- S_pit: U+2666
- S_spiked_pit: U+2666
- S_hole: U+2666
- S_trap_door: U+2666
- S_teleportation_trap: U+2666
- S_level_teleporter: U+2666
- S_magic_portal: U+2666
- S_web: U+2666
- S_statue_trap: U+2666
- S_magic_trap: U+2666
- S_anti_magic_trap: U+2666
- S_polymorph_trap: U+2666
- S_human: U+263a # face
-finish
-
*/
#endif /* CHDIR */
-/*
- * Enable some UNICODE support.
- */
-/*#define UNICODE_SUPPORT */ /* master on/off for any unicode support */
/*
E NEARDATA winid WIN_STATUS;
#endif
E NEARDATA winid WIN_MAP, WIN_INVEN;
-E nhwchar toplines[];
/* pline (et al) for a single string argument (suppress compiler warning) */
#define pline1(cstr) pline("%s", cstr)
#define Sprintf1(buf, cstr) Sprintf(buf, "%s", cstr)
#define panic1(cstr) panic("%s", cstr)
+E char toplines[];
#ifndef TCAP_H
E struct tc_gbl_data { /* also declared in tcap.h */
char *tc_AS, *tc_AE; /* graphics start and end (tty font swapping) */
E void NDECL(read_wizkit);
E int FDECL(read_sym_file, (int));
E int FDECL(parse_sym_line, (char *,int));
-E int FDECL(sym_val, (const char *));
E void FDECL(paniclog, (const char *, const char *));
E int FDECL(validate_prefix_locations, (char *));
#ifdef SELECTSAVED
E boolean NDECL(friday_13th);
E int NDECL(night);
E int NDECL(midnight);
-#ifdef UNICODE_WIDEWINPORT
-E nhwchar *FDECL(nhwstrncpy, (nhwchar *,const char *,size_t));
-E nhwchar *FDECL(nhwncpy, (nhwchar *,const nhwchar *,size_t));
-E nhwchar *FDECL(nhwcpy, (nhwchar *,const nhwchar *));
-E nhwchar *FDECL(nhwstrcpy, (nhwchar *,const char *));
-E char *FDECL(strnhwcpy, (char *,const nhwchar *));
-E nhwchar *FDECL(nhwstrcat, (nhwchar *,const char *));
-E nhwchar *FDECL(nhwcat, (nhwchar *,const nhwchar *));
-E nhwchar *FDECL(nhwindex, (const nhwchar *,int));
-E size_t FDECL(nhwlen, (const nhwchar *));
-E int FDECL(nhwcmp, (const nhwchar *,const nhwchar *));
-E int FDECL(nhwncmp, (const nhwchar *,const nhwchar *,int));
-E int FDECL(nhwstrcmp, (const nhwchar *,const char *));
-#endif
/* ### invent.c ### */
E void FDECL(parsesymbols, (char *));
E struct symparse *FDECL(match_sym, (char *));
E void NDECL(set_playmode);
+E int FDECL(sym_val, (char *));
/* ### pager.c ### */
boolean rlecomp; /* run-length comp of levels when writing savefile */
uchar num_pad_mode;
boolean echo; /* 1 to echo characters */
- boolean unicodecapable; /* unicode support is possible on platform */
- boolean unicodedisp; /* unicode support is turned on */
#if 0
boolean DECgraphics; /* use DEC VT-xxx extended character set */
boolean IBMgraphics; /* use IBM extended character set */
#endif
/*
- * UNICODE_SUPPORT
- * Unicode/wide character related support.
+ * type nhsym: loadable symbols go into this type
*/
-#ifdef UNICODE_SUPPORT
-# define UNICODE_DRAWING /* store drawing symbols in wchar_t data type */
-# define UNICODE_WIDEWINPORT /* store and render wide chars in window port */
-/*# define UNICODE_PLAYERTEXT*/ /* not implemented - player input in wide chars */
-#include <limits.h>
-#include <wchar.h>
-#else
-# undef UNICODE_DRAWING
-# undef UNICODE_WIDEWINPORT
-# undef UNICODE_PLAYERTEXT
-#endif
-
-#if defined(UNICODE_DRAWING)
-typedef wchar_t nhsym; /* nhsym is wide char */
-#else
typedef uchar nhsym;
-#endif
-#if defined(UNICODE_WIDEWINPORT)
-typedef wchar_t nhwchar; /* nhwchar (window port char) is wide char */
-#else
-typedef char nhwchar;
-#endif
-
-#if 0
-/* Not Implemented presently */
-#if defined(UNICODE_PLAYERTEXT)
-typedef wchar_t nhptext; /* player input is wide char */
-#else
-typedef char nhptext;
-#endif
-#endif
#ifndef STRNCMPI
# ifndef __SASC_60 /* SAS/C already shifts to stricmp */
extern void FDECL(map_subkeyvalue, (char *));
extern void NDECL(load_keyboard_handler);
extern void NDECL(raw_clear_screen);
-# ifdef UNICODE_WIDEWINPORT
-extern void FDECL(xputc, (NHWCHAR_P));
-# else
-extern void FDECL(xputc, (int));
-# endif
#endif
#include <fcntl.h>
#endif
};
-/*
- * Graphics sets for display symbols
- */
-#define PRIMARY 0 /* primary graphics */
-#define ROGUESET 1 /* rogue graphics */
-#define NUM_GRAPHICS 2
-
struct symparse {
unsigned range;
#define SYM_CONTROL 1 /* start/finish markers */
Bitfield(nocolor,1); /* don't use color if set */
Bitfield(primary,1); /* restricted for use as primary set */
Bitfield(rogue,1); /* restricted for use as rogue lev set */
- Bitfield(unicode,1); /* restricted for use as a unicode set */
/* 5 free bits */
};
+/*
+ * Graphics sets for display symbols
+ */
+#define DEFAULT_GRAPHICS 0 /* regular characters: '-', '+', &c */
+#define PRIMARY 0 /* primary graphics set */
+#define ROGUESET 1 /* rogue graphics set */
+#define NUM_GRAPHICS 2
+
/*
* special symbol set handling types ( for invoking callbacks, etc.)
* Must match the order of the known_handlers strings
* in drawing.c
*/
-#define H_UNK 0
-#define H_IBM 1
-#define H_DEC 2
+#define H_UNK 0
+#define H_IBM 1
+#define H_DEC 2
extern const struct symdef defsyms[MAXPCHARS]; /* defaults */
extern const struct symdef def_warnsyms[WARNCOUNT];
# define BOOLEAN_P boolean
# endif
# define ALIGNTYP_P aligntyp
-# define NHWCHAR_P nhwchar
#else
# ifdef WIDENED_PROTOTYPES
# define CHAR_P int
# define SHORT_P int
# define BOOLEAN_P int
# define ALIGNTYP_P int
-# if defined(UNICODE_WIDEWINPORT) && defined(WCHAR_MAX)
-# if WCHAR_MAX >= INT_MAX
-# define NHWCHAR_P nhwchar
-# endif
-# endif
-# ifndef NHWCHAR_P
-# define NHWCHAR_P int
-# endif
# else
/* Neither widened nor unwidened prototypes. Argument list expansion
* by FDECL/VDECL always empty; all xxx_P vanish so defs aren't needed. */
/* maxcol is also used by WIN_MESSAGE for */
/* tracking the ^P command */
short *datlen; /* allocation size for *data */
- nhwchar **data; /* window data [row][column] */
- nhwchar *morestr; /* string to display instead of default */
+ char **data; /* window data [row][column] */
+ char *morestr; /* string to display instead of default */
tty_menu_item *mlist; /* menu information (MENU) */
tty_menu_item **plist; /* menu page pointers (MENU) */
short plist_size; /* size of allocated plist (MENU) */
extern struct DisplayDesc *ttyDisplay; /* the tty display descriptor */
extern char morc; /* last character typed to xwaitforspace */
-extern nhwchar defmorestr[]; /* default --more-- prompt */
+extern char defmorestr[]; /* default --more-- prompt */
/* port specific external function references */
* actually would be expanded. So here, we have to make an exception. */
E void FDECL(xputc, (int));
#else
-# ifndef WIN32CON
E void FDECL(xputc, (CHAR_P));
-# endif
#endif
E void FDECL(xputs, (const char *));
#if defined(SCREEN_VGA) || defined(SCREEN_8514)
/* ### topl.c ### */
-E void FDECL(addtopl, (const nhwchar *));
+E void FDECL(addtopl, (const char *));
E void NDECL(more);
-E void FDECL(update_topl, (const nhwchar *));
-E void FDECL(putsyms, (const nhwchar *));
+E void FDECL(update_topl, (const char *));
+E void FDECL(putsyms, (const char*));
/* ### wintty.c ### */
#ifdef CLIPPING
E void NDECL(end_glyphout);
E void FDECL(g_putch, (int));
E void FDECL(win_tty_init, (int));
-#ifdef UNICODE_WIDEWINPORT
-E void FDECL(u_putch, (nhwchar));
-#endif
/* external declarations */
E void FDECL(tty_init_nhwindows, (int *, char **));
NEARDATA winid WIN_STATUS = WIN_ERR;
#endif
NEARDATA winid WIN_MAP = WIN_ERR, WIN_INVEN = WIN_ERR;
-nhwchar toplines[TBUFSZ];
-
+char toplines[TBUFSZ];
/* Windowing stuff that's really tty oriented, but present for all ports */
struct tc_gbl_data tc_gbl_data = { 0,0, 0,0 }; /* AS,AE, LI,CO */
int currentgraphics = 0;
nhsym showsyms[SYM_MAX] = DUMMY; /* symbols to be displayed */
-nhsym l_syms[SYM_MAX] = DUMMY; /* loaded symbols */
-nhsym r_syms[SYM_MAX] = DUMMY; /* rogue symbols */
+nhsym l_syms[SYM_MAX] = DUMMY; /* loaded symbols */
+nhsym r_syms[SYM_MAX] = DUMMY; /* rogue symbols */
nhsym warnsyms[WARNCOUNT] = DUMMY; /* the current warning display symbols */
const char invisexplain[] = "remembered, unseen, creature";
/* initialize restriction bits */
symset[which_set].primary = 0;
symset[which_set].rogue = 0;
- symset[which_set].unicode = 0;
if (name_too) {
if (symset[which_set].name)
const char *known_restrictions[] = {
"primary",
"rogue",
- "unicode",
(const char *)0,
};
char *buf;
int which_set;
{
- int val;
+ int val, i;
struct symparse *symp = (struct symparse *)0;
char *bufp, *commentp, *altp;
return 0;
if (!symset[which_set].name) {
- int i;
/* A null symset name indicates that we're just
building a pick-list of possible symset
values from the file, so only do that */
/* initialize restriction bits */
tmpsp->primary = 0;
tmpsp->rogue = 0;
- tmpsp->unicode = 0;
break;
case 2:
/* handler type identified */
case 5:
/* restrictions: xxxx*/
tmpsp = symset_list; /* most recent symset */
- i = 0;
- while (known_restrictions[i]) {
+ for (i = 0; known_restrictions[i]; ++i) {
if (!strcmpi(known_restrictions[i], bufp)) {
switch(i) {
case 0: tmpsp->primary = 1; break;
case 1: tmpsp->rogue = 1; break;
- case 2: tmpsp->unicode = 1; break;
}
break; /* while loop */
}
- i++;
}
break;
}
chosen_symset_start = TRUE;
/* these init_*() functions clear symset fields too */
if (which_set == ROGUESET) init_r_symbols();
- else if (which_set == PRIMARY) init_l_symbols();
+ else if (which_set == PRIMARY) init_l_symbols();
}
break;
case 1:
break;
case 1: symset[which_set].rogue = 1;
break;
- case 2: symset[which_set].unicode = 1;
- break;
}
break; /* while loop */
}
n++;
}
- /* Don't allow unicode set if code can't handle it */
- if (symset[which_set].unicode &&
- !iflags.unicodedisp) {
- if (chosen_symset_start)
- chosen_symset_end = FALSE;
- chosen_symset_start = FALSE;
- if (which_set == ROGUESET) init_r_symbols();
- else if (which_set == PRIMARY) init_l_symbols();
- }
- }
+ }
break;
}
} else { /* !SYM_CONTROL */
}
}
-/*
- * Produces a single integer value.
- */
-int
-sym_val(cp)
-const char *cp;
-{
- unsigned int cval = 0;
- int meta = 0, dcount = 0;
- const char *dp, *hex = "00112233445566778899aAbBcCdDeEfF";
-
- while (*cp)
- {
- if (*cp == '\\' && index("mM", cp[1])) {
- meta = 1;
- cp += 2;
- }
- if ((*cp == 'U' || *cp == 'u') && cp[1] == '+' && index(hex, cp[2]))
- {
- dcount = 0;
- cp++;
- for (++cp; *cp && (dp = index(hex, *cp)) && (dcount++ < 4); cp++)
- cval = (unsigned int)((cval * 16) +
- ((unsigned int)(dp - hex) / 2));
- }
- else if (*cp == '\\' && index("0123456789xXoO", cp[1]))
- {
- dcount = 0;
- cp++;
- if (*cp == 'x' || *cp == 'X')
- for (++cp; *cp && (dp = index(hex, *cp)) && (dcount++ < 4); cp++)
- cval = (unsigned int)((cval * 16) +
- ((unsigned int)(dp - hex) / 2));
- else if (*cp == 'o' || *cp == 'O')
- for (++cp; *cp && (index("01234567",*cp)) && (dcount++ < 5); cp++)
- cval = (cval * 8) + (unsigned int)(*cp - '0');
- else
- for (; *cp && (index("0123456789",*cp)) && (dcount++ < 5); cp++)
- cval = (cval * 10) + (unsigned int)(*cp - '0');
- }
- else if (*cp == '\\') /* C-style character escapes */
- {
- switch (*++cp)
- {
- case '\\': cval = '\\'; break;
- case 'n': cval = '\n'; break;
- case 't': cval = '\t'; break;
- case 'b': cval = '\b'; break;
- case 'r': cval = '\r'; break;
- default: cval = (unsigned int)*cp;
- }
- cp++;
- }
- else if (*cp == '^') /* expand control-character syntax */
- {
- cval = (unsigned int)(*++cp & 0x1f);
- cp++;
- }
- else
- cval = (unsigned int)*cp++;
- if (meta)
- cval |= 0x80;
- }
- return cval;
-}
-
/* ---------- END CONFIG FILE HANDLING ----------- */
/* ---------- BEGIN SCOREBOARD CREATION ----------- */
return(getlt()->tm_hour == 0);
}
-#ifdef UNICODE_WIDEWINPORT
-nhwchar *
-nhwstrncpy(dest, strSource, cnt)
-nhwchar *dest;
-const char *strSource;
-size_t cnt;
-{
- nhwchar *d = dest;
- const char *s = strSource;
- size_t dcnt = 0;
-
- while(*s && dcnt < cnt) {
- *d++ = (nhwchar)*s++;
- dcnt++;
- }
- if (dcnt < cnt) *d = 0;
- return dest;
-}
-
-nhwchar *
-nhwncpy(dest, src, cnt)
-nhwchar *dest;
-const nhwchar *src;
-size_t cnt;
-{
- nhwchar *d = dest;
- const nhwchar *s = src;
- size_t dcnt = 0;
-
- while(*s && dcnt < cnt) {
- *d++ = *s++;
- dcnt++;
- }
- if (dcnt < cnt) *d = 0;
- return dest;
-}
-
-nhwchar *
-nhwcpy(dest, src)
-nhwchar *dest;
-const nhwchar *src;
-{
- nhwchar *d = dest;
- const nhwchar *s = src;
-
- while(*s) {
- *d++ = *s++;
- }
- *d = 0;
- return dest;
-}
-
-nhwchar *
-nhwstrcpy(dest, strSource)
-nhwchar *dest;
-const char *strSource;
-{
- nhwchar *d = dest;
- const char *s = strSource;
-
- while(*s) {
- *d++ = *s++;
- }
- *d = 0;
- return dest;
-}
-
-char *
-strnhwcpy(strDest, src)
-char *strDest;
-const nhwchar *src;
-{
- char *d = strDest;
- const nhwchar *s = src;
-
- while(*s) {
- *d++ = (char)*s++;
- }
- *d = 0;
- return strDest;
-}
-
-nhwchar *
-nhwstrcat(dest, strSource)
-nhwchar *dest;
-const char *strSource;
-{
- nhwchar *d = dest;
- const char *s = strSource;
-
- while(*d) d++;
- while(*s) {
- *d++ = *s++;
- }
- *d = 0;
- return dest;
-}
-
-nhwchar *
-nhwcat(dest, src)
-nhwchar *dest;
-const nhwchar *src;
-{
- nhwchar *d = dest;
- const nhwchar *s = src;
-
- while(*d) d++;
- while(*s) {
- *d++ = *s++;
- }
- *d = 0;
- return dest;
-}
-
-nhwchar *
-nhwindex(ss, c)
-const nhwchar *ss;
-int c;
-{
- const nhwchar *s = ss;
-
- while (*s) {
- if (*s == c) return (nhwchar *)s;
- s++;
- }
- if (*s == c) return (nhwchar *)s;
- return (nhwchar *)0;
-}
-
-size_t nhwlen(src)
-const nhwchar *src;
-{
- register size_t dl = 0;
-
- while(*src++) dl++;
- return dl;
-}
-
-int
-nhwcmp(s1, s2) /* case sensitive comparison */
-register const nhwchar *s1, *s2;
-{
- register nhwchar t1, t2;
-
- for (;;) {
- if (!*s2) return (*s1 != 0); /* s1 >= s2 */
- else if (!*s1) return -1; /* s1 < s2 */
- t1 = *s1++;
- t2 = *s2++;
- if (t1 != t2) return (t1 > t2) ? 1 : -1;
- }
- return 0; /* s1 == s2 */
-}
-
-int
-nhwncmp(s1, s2, n) /* case sensitive counted nhwchar (wide string) comparison */
- register const nhwchar *s1, *s2;
- register int n; /*(should probably be size_t, which is usually unsigned)*/
-{
- register nhwchar t1, t2;
-
- while (n--) {
- if (!*s2) return (*s1 != 0); /* s1 >= s2 */
- else if (!*s1) return -1; /* s1 < s2 */
- t1 = *s1++;
- t2 = *s2++;
- if (t1 != t2) return (t1 > t2) ? 1 : -1;
- }
- return 0; /* s1 == s2 */
-}
-
-int
-nhwstrcmp(s1, s2)
-register const nhwchar *s1;
-const char *s2;
-{
- register nhwchar t1, t2;
-
- for (;;) {
- if (!*s2) return (*s1 != 0); /* s1 >= s2 */
- else if (!*s1) return -1; /* s1 < s2 */
- t1 = *s1++;
- t2 = (nhwchar)*s2++;
- if (t1 != t2) return (t1 > t2) ? 1 : -1;
- }
- return 0; /* s1 == s2 */
-}
-#endif
/*hacklib.c*/
return encbuf;
}
-#ifndef UNICODE_WIDEWINPORT
/*
* This differs from putstr() because the str parameter can
* contain a sequence of characters representing:
gv = (int)((gv * 16) + ((int)(dp - hex) / 2));
so = mapglyph(gv, &ch, &oc, &os, 0, 0);
*put++ = showsyms[so];
- continue;
} else {
/* possible forgery - leave it the way it is */
cp = save_cp;
}
break;
+# if 0
+ case 'S': /* symbol offset */
+ dcount = 0;
+ for (++cp; *cp && (dp = index(hex, *cp)) && (dcount++ < 4); cp++)
+ rndchk = (int)((rndchk * 16) + ((int)(dp - hex) / 2));
+
+ if (rndchk == context.rndencode) {
+ dcount = 0;
+ for (; *cp && (dp = index(hex, *cp)) && (dcount++ < 2); cp++)
+ so = (int)((so * 16) + ((int)(dp - hex) / 2));
+ }
+ *put++ = showsyms[so];
+ break;
+# endif
case '\\':
break;
}
/* now send it to the normal putstr */
putstr(window, attr, buf);
}
-#endif /*!UNICODE_WIDEWINPORT*/
/*mapglyph.c*/
{"tombstone",&flags.tombstone, TRUE, SET_IN_GAME},
{"toptenwin",&iflags.toptenwin, FALSE, SET_IN_GAME},
{"travel", &flags.travelcmd, TRUE, SET_IN_GAME},
-#ifdef UNICODE_SUPPORT
- {"unicode", &iflags.unicodedisp, FALSE, SET_IN_GAME},
-#endif
#ifdef WIN32CON
{"use_inverse", &iflags.wc_inverse, TRUE, SET_IN_GAME}, /*WC*/
#else
iflags.msg_history = 20;
#ifdef TTY_GRAPHICS
iflags.prevmsg_window = 's';
-# if defined(UNIX) && defined(UNICODE_WIDEWINPORT)
- iflags.unicodecapable = TRUE;
-# endif
#endif
iflags.menu_headings = ATR_INVERSE;
boolean badflag = FALSE;
if (duplicate) complain_about_duplicate(opts,1);
if (!negated) {
- for (i = PRIMARY; i <= ROGUESET; ++i) {
+ for (i = 0; i < NUM_GRAPHICS; ++i) {
if (symset[i].name)
badflag = TRUE;
else {
|| !strcmp("roguesymset", optname)) {
menu_item *symset_pick = (menu_item *)0;
boolean primaryflag = (*optname == 's'),
- rogueflag = (*optname == 'r'),
+ rogueflag = (*optname == 'r'),
ready_to_switch = FALSE,
nothing_to_do = FALSE;
int res;
sl = symset_list;
while (sl) {
/* check restrictions */
- if ((!rogueflag && sl->rogue) ||
- (!iflags.unicodedisp && sl->unicode) ||
+ if ((!rogueflag && sl->rogue) ||
(!primaryflag && sl->primary)) {
sl = sl->next;
continue;
}
if (!setcount) {
pline("There are no appropriate %ssymbol sets available.",
- (rogueflag) ? "rogue level " :
- (primaryflag) ? "primary " :
+ (rogueflag) ? "rogue level " :
+ (primaryflag) ? "primary " :
"");
return TRUE;
}
while (sl) {
/* check restrictions */
if ((!rogueflag && sl->rogue) ||
- (!iflags.unicodedisp && sl->unicode) ||
(!primaryflag && sl->primary)) {
sl = sl->next;
continue;
if(rogueflag)
init_r_symbols();
else
- init_l_symbols();
+ init_l_symbols();
if (symset[which_set].name) {
if (read_sym_file(which_set))
#endif
#ifdef BACKWARD_COMPAT
else if (!strcmp(optname, "boulder"))
- Sprintf(buf,
-# ifdef UNICODE_DRAWING
- "\\x%04X",
-# else
- "%c",
-# endif
- iflags.bouldersym ? iflags.bouldersym :
- showsyms[(int)objects[BOULDER].oc_class + SYM_OFF_O]);
+ Sprintf(buf, "%c", iflags.bouldersym ?
+ iflags.bouldersym :
+ showsyms[(int)objects[BOULDER].oc_class + SYM_OFF_O]);
#endif
else if (!strcmp(optname, "catname"))
Sprintf(buf, "%s", catname[0] ? catname : none);
return (struct symparse *)0;
}
+int sym_val(strval)
+char *strval;
+{
+ char buf[QBUFSZ];
+ buf[0] = '\0';
+ escapes(strval, buf);
+ return (int)*buf;
+}
+
/* data for option_help() */
static const char *opt_intro[] = {
"",
for (i = 0; i < MAXMCLASSES; i++) {
if (sym == ((from_screen || clicklook) ?
showsyms[i + SYM_OFF_M] : def_monsyms[i].sym) &&
- def_monsyms[i].explain) {
+ def_monsyms[i].explain) {
need_to_look = TRUE;
if (!found) {
Sprintf(out_str, "%s %s",
return;
}
#ifndef MAC
-# ifdef UNICODE_WIDEWINPORT
- if (no_repeat && !nhwstrcmp(toplines, line))
-# else
- if (no_repeat && !strcmp(toplines, line))
-# endif
+ if (no_repeat && !strcmp(line, toplines))
return;
#endif /* MAC */
if (vision_full_recalc) vision_recalc(0);
extern int redirect_stdout;
static BOOL FDECL(CtrlHandler, (DWORD));
+/* Flag for whether unicode is supported */
+static boolean has_unicode;
+
#ifdef PORT_DEBUG
static boolean display_cursor_info = FALSE;
#endif
# endif
static void NDECL(really_move_cursor);
-#ifdef UNICODE_WIDEWINPORT
-void FDECL(xputc_core,(NHWCHAR_P));
-#else
-void FDECL(xputc_core,(int));
-#endif
-
#define MAX_OVERRIDES 256
unsigned char key_overrides[MAX_OVERRIDES];
void
setftty()
{
- static int cp = 0;
- if (!cp) cp = GetConsoleOutputCP();
- /* SetConsoleOutputCP(1250); */
#ifdef CHANGE_COLOR
if (altered_palette) adjust_palette();
#endif
start_screen();
- iflags.unicodecapable = ((GetVersion() & 0x80000000) == 0);
+ has_unicode = ((GetVersion() & 0x80000000) == 0);
}
void
ttyDisplay->cury = y;
}
-#ifdef UNICODE_WIDEWINPORT
-#define T(x) L##x
-#else
-#define T(x) x
-#endif
-
void
-xputc_core(ich)
-#ifdef UNICODE_WIDEWINPORT
-nhwchar ich;
-#else
-int ich;
-#endif
+xputc_core(ch)
+char ch;
{
- static uchar c[2] = {0,0};
- char ch = (char)ich;
-
-#if 0
- /*EURO symbol*/
- if (ich == 0x20AC) {
- if (!c[0]) {
- wchar_t t[2]={0x20ac, 0x0000};
- int cp = GetConsoleOutputCP();
- (void) WideCharToMultiByte(cp,
- 0,
- t, 1,
- c, 2,
- (LPCSTR)0,
- (LPBOOL)0);
- }
- ich = (nhwchar)c[0];
- }
-#endif
-#ifdef UNICODE_WIDEWINPORT
- switch(ich) {
-#else
switch(ch) {
-#endif
- case T('\n'):
+ case '\n':
cursor.Y++;
/* fall through */
- case T('\r'):
+ case '\r':
cursor.X = 1;
break;
- case T('\b'):
+ case '\b':
cursor.X--;
break;
default:
WriteConsoleOutputAttribute(hConOut,&attr,1,
cursor,&acount);
- if (iflags.unicodedisp) {
-#ifdef UNICODE_WIDEWINPORT
- WriteConsoleOutputCharacterW(hConOut,&ich,1,
- cursor,&ccount);
-#else
+ if (has_unicode) {
/* Avoid bug in ANSI API on WinNT */
WCHAR c2[2];
int rc;
c2, 2);
WriteConsoleOutputCharacterW(hConOut,c2,rc,
cursor,&ccount);
-#endif
}
else {
WriteConsoleOutputCharacterA(hConOut,&ch,1,
void
xputc(ch)
-#ifdef UNICODE_WIDEWINPORT
-nhwchar ch;
-#else
-int ch;
-#endif
+char ch;
{
cursor.X = ttyDisplay->curx;
cursor.Y = ttyDisplay->cury;
* for win32. It is used for glyphs only, not text.
*/
void
-g_putch(in_sym)
-int in_sym;
+g_putch(in_ch)
+int in_ch;
{
/* CP437 to Unicode mapping according to the Unicode Consortium */
static const WCHAR cp437[] =
0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
};
- uchar ch = (uchar)in_sym;
+ unsigned char ch = (unsigned char)in_ch;
cursor.X = ttyDisplay->curx;
cursor.Y = ttyDisplay->cury;
WriteConsoleOutputAttribute(hConOut,&attr,1,cursor,&acount);
-#ifdef UNICODE_DRAWING
- if (symset[currentgraphics].name &&
- symset[currentgraphics].unicode && iflags.unicodedisp)
- WriteConsoleOutputCharacterW(hConOut,(LPCWSTR)&in_sym,1,cursor,&ccount);
- else
-#endif
- if (SYMHANDLING(H_IBM))
+ if (has_unicode)
WriteConsoleOutputCharacterW(hConOut,&cp437[ch],1,cursor,&ccount);
else
WriteConsoleOutputCharacterA(hConOut,&ch,1,cursor,&ccount);
extern char erase_char, kill_char; /* from appropriate tty.c file */
-/* cloned from topl.c, but not identical
- */
-#ifdef UNICODE_WIDEWINPORT
- /* nhwchar is wchar; data from core needs narrow-to-wide conversion;
- data going back to core needs wide-to-narrow conversion; data
- used within tty routines typically needs wide-to-wide awareness */
-STATIC_VAR nhwchar getl_wbuf[BUFSZ];
-STATIC_VAR char getl_nbuf[BUFSZ];
-#define T(x) L##x
-#define Waddtopl(str) addtopl(nhwstrcpy(getl_wbuf,str))
-#define Wputsyms(str) putsyms(nhwstrcpy(getl_wbuf,str))
-#define NWstrcpy(wdst,src) nhwstrcpy(wdst,src) /* narrow-to-wide */
-#else /*!UNICODE_WIDEWINPORT*/
- /* nhwchar is char; no conversions needed */
-#define T(x) x
-#define Waddtopl(str) addtopl(str)
-#define Wputsyms(str) putsyms(str)
-#endif /*?UNICODE_WIDEWINPORT*/
-
/*
* Read a line closed with '\n' into the array char bufp[BUFSZ].
* (The '\n' is not stored. The string is closed with a '\0'.)
*obufp = 0;
for(;;) {
(void) fflush(stdout);
-#ifdef UNICODE_WIDEWINPORT
- Strcat(strcat(strcpy(getl_nbuf, query), " "), obufp);
- (void)NWstrcpy(toplines, getl_nbuf);
-#else
Strcat(strcat(strcpy(toplines, query), " "), obufp);
-#endif
c = pgetchar();
if (c == '\033' || c == EOF) {
obufp[0] = '\033';
ttyDisplay->inread = sav;
tty_clear_nhwindow(WIN_MESSAGE);
cw->maxcol = cw->maxrow;
- Waddtopl(query);
- Waddtopl(T(" "));
+ addtopl(query);
+ addtopl(" ");
*bufp = 0;
- Waddtopl(obufp);
+ addtopl(obufp);
} else {
if (!doprev)
(void) tty_doprev_message();/* need two initially */
tty_clear_nhwindow(WIN_MESSAGE);
cw->maxcol = cw->maxrow;
doprev = 0;
- Waddtopl(query);
- Waddtopl(T(" "));
+ addtopl(query);
+ addtopl(" ");
*bufp = 0;
- Waddtopl(obufp);
+ addtopl(obufp);
}
if(c == erase_char || c == '\b') {
if(bufp != obufp) {
#endif /* NEWAUTOCOMP */
bufp--;
#ifndef NEWAUTOCOMP
- putsyms(T("\b \b"));/* putsym converts \b */
+ putsyms("\b \b");/* putsym converts \b */
#else /* NEWAUTOCOMP */
- putsyms(T("\b"));
- for (i = bufp; *i; ++i) putsyms(T(" "));
- for (; i > bufp; --i) putsyms(T("\b"));
+ putsyms("\b");
+ for (i = bufp; *i; ++i) putsyms(" ");
+ for (; i > bufp; --i) putsyms("\b");
*bufp = 0;
#endif /* NEWAUTOCOMP */
} else tty_nhbell();
#endif /* NEWAUTOCOMP */
*bufp = c;
bufp[1] = 0;
- Wputsyms(bufp);
+ putsyms(bufp);
bufp++;
if (hook && (*hook)(obufp)) {
- Wputsyms(bufp);
+ putsyms(bufp);
#ifndef NEWAUTOCOMP
bufp = eos(bufp);
#else /* NEWAUTOCOMP */
/* pointer and cursor left where they were */
- for (i = bufp; *i; ++i) putsyms(T("\b"));
+ for (i = bufp; *i; ++i) putsyms("\b");
} else if (i > bufp) {
char *s = i;
/* erase rest of prior guess */
- for (; i > bufp; --i) putsyms(T(" "));
- for (; s > bufp; --s) putsyms(T("\b"));
+ for (; i > bufp; --i) putsyms(" ");
+ for (; s > bufp; --s) putsyms("\b");
#endif /* NEWAUTOCOMP */
}
} else if(c == kill_char || c == '\177') { /* Robert Viduya */
#ifndef NEWAUTOCOMP
while(bufp != obufp) {
bufp--;
- putsyms(T("\b \b"));
+ putsyms("\b \b");
}
#else /* NEWAUTOCOMP */
- for (; *bufp; ++bufp) putsyms(T(" "));
- for (; bufp != obufp; --bufp) putsyms(T("\b \b"));
+ for (; *bufp; ++bufp) putsyms(" ");
+ for (; bufp != obufp; --bufp) putsyms("\b \b");
*bufp = 0;
#endif /* NEWAUTOCOMP */
} else
clear_nhwindow(WIN_MESSAGE); /* clean up after ourselves */
}
-#undef T
-
void
xwaitforspace(s)
register const char *s; /* chars allowed besides return */
-/* NetHack 3.5 topl.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
-/* NetHack 3.5 topl.c $Date: 2012/01/23 06:29:37 $ $Revision: 1.24 $ */
+/* NetHack 3.5 topl.c $NHDT-Date: 1425081315 2015/02/27 23:55:15 $ $NHDT-Branch: (no branch, rebasing scshunt-unconditionals) $:$NHDT-Revision: 1.24 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
#define C(c) (0x1f & (c))
#endif
-/* use caution with this stuff; it's very easy to get things mixed up...
- */
-#ifdef UNICODE_WIDEWINPORT
- /* nhwchar is wchar; data from core needs narrow-to-wide conversion;
- data going back to core needs wide-to-narrow conversion; data
- used within tty routines typically needs wide-to-wide awareness */
-STATIC_VAR nhwchar topl_wbuf[BUFSZ];
-STATIC_VAR char topl_nbuf[BUFSZ];
-#define T(x) L##x
-#define DoGputch(x) ((x) >= 0x80)
-#define Waddtopl(str) addtopl(nhwstrcpy(topl_wbuf,str))
-#define Wputstr(win,atr,wstr) putstr(win,atr,strnhwcpy(topl_nbuf,wstr))
-#define Windex(wstr,wchr) nhwindex(wstr,wchr)
-#define Wstrlen(wstr) (int)nhwlen(wstr)
-#define NWstrcpy(wdst,src) nhwstrcpy(wdst,src) /* narrow-to-wide */
-#define WNstrcpy(dst,wsrc) strnhwcpy(dst,wsrc) /* wide-to-narrow */
-#define WWstrcpy(wdst,wsrc) nhwcpy(wdst,wsrc) /* wide-to-wide */
-#define WWstrcat(wdst,wsrc) nhwcat(wdst,wsrc)
-#define WWstrncpy(wdst,wsrc,ln nhwncpy(wdst,wsrc,ln)
-#define WWstrncmp(wst1,wst2,ln) nhwncmp(wst1,wst2,ln)
-#else /*!UNICODE_WIDEWINPORT*/
- /* nhwchar is char; no conversions needed */
-#define T(x) x
-#define DoGputch(x) ((x) & 0x80)
-#define Waddtopl(str) addtopl(str)
-#define Wputstr(win,atr,str) putstr(win,atr,str)
-#define Windex(wstr,wchr) index(wstr,wchr)
-#define Wstrlen(wstr) (int)strlen(wstr)
-#define NWstrcpy(wdst,src) strcpy(wdst,src)
-#define WNstrcpy(dst,wsrc) strcpy(dst,wsrc)
-#define WWstrcpy(wdst,wsrc) strcpy(wdst,wsrc)
-#define WWstrcat(wdst,wsrc) strcat(wdst,wsrc)
-#define WWstrncpy(wdst,wsrc,ln) strncpy(wdst,wsrc,ln)
-#define WWstrncmp(wst1,wst2,ln) strncmp(wst1,wst2,ln)
-#endif /*?UNICODE_WIDEWINPORT*/
-
-STATIC_DCL void FDECL(redotoplin, (const nhwchar*));
-STATIC_DCL void FDECL(topl_putsym, (NHWCHAR_P));
+STATIC_DCL void FDECL(redotoplin, (const char*));
+STATIC_DCL void FDECL(topl_putsym, (CHAR_P));
STATIC_DCL void NDECL(remember_topl);
STATIC_DCL void FDECL(removetopl, (int));
STATIC_DCL void FDECL(msghistory_snapshot, (BOOLEAN_P));
tty_doprev_message()
{
register struct WinDesc *cw = wins[WIN_MESSAGE];
+
winid prevmsg_win;
int i;
-
if ((iflags.prevmsg_window != 's') && !ttyDisplay->inread) { /* not single */
if(iflags.prevmsg_window == 'f') { /* full */
prevmsg_win = create_nhwindow(NHW_MENU);
cw->maxcol = cw->maxrow;
i = cw->maxcol;
do {
- if (cw->data[i] && *cw->data[i])
- Wputstr(prevmsg_win, 0, cw->data[i]);
+ if(cw->data[i] && strcmp(cw->data[i], "") )
+ putstr(prevmsg_win, 0, cw->data[i]);
i = (i + 1) % cw->rows;
} while (i != cw->maxcol);
- Wputstr(prevmsg_win, 0, toplines);
+ putstr(prevmsg_win, 0, toplines);
display_nhwindow(prevmsg_win, TRUE);
destroy_nhwindow(prevmsg_win);
} else if (iflags.prevmsg_window == 'c') { /* combination */
cw->maxcol = cw->maxrow;
i = cw->maxcol;
do {
- if (cw->data[i] && *cw->data[i])
- Wputstr(prevmsg_win, 0, cw->data[i]);
+ if(cw->data[i] && strcmp(cw->data[i], "") )
+ putstr(prevmsg_win, 0, cw->data[i]);
i = (i + 1) % cw->rows;
} while (i != cw->maxcol);
-
- Wputstr(prevmsg_win, 0, toplines);
+ putstr(prevmsg_win, 0, toplines);
display_nhwindow(prevmsg_win, TRUE);
destroy_nhwindow(prevmsg_win);
}
prevmsg_win = create_nhwindow(NHW_MENU);
putstr(prevmsg_win, 0, "Message History");
putstr(prevmsg_win, 0, "");
- Wputstr(prevmsg_win, 0, toplines);
+ putstr(prevmsg_win, 0, toplines);
cw->maxcol=cw->maxrow-1;
if(cw->maxcol < 0) cw->maxcol = cw->rows-1;
do {
- Wputstr(prevmsg_win, 0, cw->data[cw->maxcol]);
+ putstr(prevmsg_win, 0, cw->data[cw->maxcol]);
cw->maxcol--;
if (cw->maxcol < 0) cw->maxcol = cw->rows-1;
if (!cw->data[cw->maxcol])
}
STATIC_OVL void
-redotoplin(symstr)
- const nhwchar *symstr;
+redotoplin(str)
+ const char *str;
{
int otoplin = ttyDisplay->toplin;
home();
- if (DoGputch(*symstr)) {
+ if(*str & 0x80) {
/* kludge for the / command, the only time we ever want a */
/* graphics character on the top line */
- g_putch((int)*symstr++);
+ g_putch((int)*str++);
ttyDisplay->curx++;
}
end_glyphout(); /* in case message printed during graphics output */
- putsyms(symstr);
+ putsyms(str);
cl_end();
ttyDisplay->toplin = 1;
if(ttyDisplay->cury && otoplin != 3)
{
register struct WinDesc *cw = wins[WIN_MESSAGE];
int idx = cw->maxrow;
- unsigned len;
+ unsigned len = strlen(toplines) + 1;
if ((cw->flags & WIN_LOCKHISTORY) || !*toplines) return;
- len = Wstrlen(toplines) + 1;
+
if (len > (unsigned)cw->datlen[idx]) {
if (cw->data[idx]) free(cw->data[idx]);
len += (8 - (len & 7)); /* pad up to next multiple of 8 */
- cw->data[idx] = (nhwchar *)alloc(sizeof(nhwchar) * len);
+ cw->data[idx] = (char *)alloc(len);
cw->datlen[idx] = (short)len;
}
- (void)WWstrcpy(cw->data[idx], toplines);
+ Strcpy(cw->data[idx], toplines);
*toplines = '\0';
cw->maxcol = cw->maxrow = (idx + 1) % cw->rows;
}
void
addtopl(s)
-const nhwchar *s;
+const char *s;
{
register struct WinDesc *cw = wins[WIN_MESSAGE];
if(ttyDisplay->toplin) {
tty_curs(BASE_WINDOW, cw->curx+1, cw->cury);
- if(cw->curx >= CO - 8)
- topl_putsym(T('\n'));
+ if(cw->curx >= CO - 8) topl_putsym('\n');
}
if(flags.standout)
void
update_topl(bp)
- register const nhwchar *bp;
+ register const char *bp;
{
- register nhwchar *tl, *otl;
+ register char *tl, *otl;
register int n0;
int notdied = 1;
struct WinDesc *cw = wins[WIN_MESSAGE];
/* If there is room on the line, print message on same line */
/* But messages like "You die..." deserve their own line */
- n0 = Wstrlen(bp);
+ n0 = strlen(bp);
if ((ttyDisplay->toplin == 1 || (cw->flags & WIN_STOP)) &&
cw->cury == 0 &&
- n0 + Wstrlen(toplines) + 3 < CO-8 && /* room for --More-- */
- (notdied = WWstrncmp(bp, T("You die"), 7))) {
- (void)WWstrcat(toplines, T(" "));
- (void)WWstrcat(toplines, bp);
+ n0 + (int)strlen(toplines) + 3 < CO-8 && /* room for --More-- */
+ (notdied = strncmp(bp, "You die", 7))) {
+ Strcat(toplines, " ");
+ Strcat(toplines, bp);
cw->curx += 2;
if(!(cw->flags & WIN_STOP))
addtopl(bp);
}
}
remember_topl();
- (void)WWstrncpy(toplines, bp, TBUFSZ);
+ (void) strncpy(toplines, bp, TBUFSZ);
toplines[TBUFSZ - 1] = 0;
for(tl = toplines; n0 >= CO; ){
for(tl+=CO-1; tl != otl && !isspace(*tl); --tl) ;
if(tl == otl) {
/* Eek! A huge token. Try splitting after it. */
- tl = Windex(otl, T(' '));
+ tl = index(otl, ' ');
if (!tl) break; /* No choice but to spit it out whole. */
}
- *tl++ = T('\n');
- n0 = Wstrlen(tl);
+ *tl++ = '\n';
+ n0 = strlen(tl);
}
if(!notdied) cw->flags &= ~WIN_STOP;
if(!(cw->flags & WIN_STOP)) redotoplin(toplines);
STATIC_OVL
void
topl_putsym(c)
- nhwchar c;
+ char c;
{
register struct WinDesc *cw = wins[WIN_MESSAGE];
if(cw == (struct WinDesc *) 0) panic("Putsym window MESSAGE nonexistant");
switch(c) {
- case T('\b'):
+ case '\b':
if(ttyDisplay->curx == 0 && ttyDisplay->cury > 0)
tty_curs(BASE_WINDOW, CO, (int)ttyDisplay->cury-1);
backsp();
ttyDisplay->curx--;
cw->curx = ttyDisplay->curx;
return;
- case T('\n'):
+ case '\n':
cl_end();
ttyDisplay->curx = 0;
ttyDisplay->cury++;
break;
default:
if(ttyDisplay->curx == CO-1)
- topl_putsym(T('\n')); /* 1 <= curx <= CO; avoid CO */
+ topl_putsym('\n'); /* 1 <= curx <= CO; avoid CO */
#ifdef WIN32CON
(void) putchar(c);
#endif
}
void
-putsyms(symstr)
- const nhwchar *symstr;
+putsyms(str)
+ const char *str;
{
- while(*symstr)
- topl_putsym(*symstr++);
+ while(*str)
+ topl_putsym(*str++);
}
STATIC_OVL void
register int n;
{
/* assume addtopl() has been done, so ttyDisplay->toplin is already set */
- while (n-- > 0)
- putsyms(T("\b \b"));
+ while (n-- > 0) putsyms("\b \b");
}
extern char erase_char; /* from xxxtty.c; don't need kill_char */
ttyDisplay->inread = sav;
tty_clear_nhwindow(WIN_MESSAGE);
cw->maxcol = cw->maxrow;
- Waddtopl(prompt);
+ addtopl(prompt);
} else {
if(!doprev)
(void) tty_doprev_message(); /* need two initially */
tty_clear_nhwindow(WIN_MESSAGE);
cw->maxcol = cw->maxrow;
doprev = 0;
- Waddtopl(prompt);
+ addtopl(prompt);
q = '\0'; /* force another loop iteration */
continue;
}
tty_nhbell();
q = (char)0;
} else if (q == '#' || digit_ok) {
- char z;
- nhwchar digit_string[2];
+ char z, digit_string[2];
int n_len = 0;
long value = 0;
- addtopl(T("#")), n_len++;
- digit_string[1] = (nhwchar)0;
+ addtopl("#"), n_len++;
+ digit_string[1] = '\0';
if (q != '#') {
- digit_string[0] = (nhwchar)q;
+ digit_string[0] = q;
addtopl(digit_string), n_len++;
value = q - '0';
q = '#';
if (digit(z)) {
value = (10 * value) + (z - '0');
if (value < 0) break; /* overflow: try again */
- digit_string[0] = (nhwchar)z;
+ digit_string[0] = z;
addtopl(digit_string), n_len++;
} else if (z == 'y' || index(quitchars, z)) {
if (z == '\033') value = -1; /* abort */
if (q != '#') {
Sprintf(rtmp, "%c", q);
- Waddtopl(rtmp);
+ addtopl(rtmp);
}
clean_up:
ttyDisplay->inread--;
}
/* shared by tty_getmsghistory() and tty_putmsghistory() */
-static nhwchar **snapshot_mesgs = 0;
+static char **snapshot_mesgs = 0;
/* collect currently available message history data into a sequential array;
optionally, purge that data from the active circular buffer set as we go */
msghistory_snapshot(purge)
boolean purge; /* clear message history buffer as we copy it */
{
- nhwchar *mesg;
+ char *mesg;
int i, inidx, outidx;
struct WinDesc *cw;
history updating to take place because that could clobber them */
if (!purge) cw->flags |= WIN_LOCKHISTORY;
- snapshot_mesgs = (nhwchar **)alloc((cw->rows + 1) * sizeof (nhwchar *));
+ snapshot_mesgs = (char **)alloc((cw->rows + 1) * sizeof (char *));
outidx = 0;
inidx = cw->maxrow;
for (i = 0; i < cw->rows; ++i) {
- snapshot_mesgs[i] = (nhwchar *)0;
+ snapshot_mesgs[i] = (char *)0;
mesg = cw->data[inidx];
if (mesg && *mesg) {
snapshot_mesgs[outidx++] = mesg;
if (purge) {
/* we're taking this pointer away; subsequest history
updates will eventually allocate a new one to replace it */
- cw->data[inidx] = (nhwchar *)0;
+ cw->data[inidx] = (char *)0;
cw->datlen[inidx] = 0;
}
}
inidx = (inidx + 1) % cw->rows;
}
- snapshot_mesgs[cw->rows] = (nhwchar *)0; /* sentinel */
+ snapshot_mesgs[cw->rows] = (char *)0; /* sentinel */
/* for a destructive snapshot, history is now completely empty */
if (purge) cw->maxcol = cw->maxrow = 0;
free((genericptr_t)snapshot_mesgs[i]);
}
- free((genericptr_t)snapshot_mesgs), snapshot_mesgs = (nhwchar **)0;
+ free((genericptr_t)snapshot_mesgs), snapshot_mesgs = (char **)0;
/* history can resume being updated at will now... */
if (!purged) wins[WIN_MESSAGE]->flags &= ~WIN_LOCKHISTORY;
boolean init;
{
static int nxtidx;
- nhwchar *nextmesg;
+ char *nextmesg;
char *result = 0;
if (init) {
if (snapshot_mesgs) {
nextmesg = snapshot_mesgs[nxtidx++];
if (nextmesg) {
-#ifdef UNICODE_WIDEWINPORT
- result = WNstrcpy(topl_nbuf, nextmesg); /* wide-to-narrow */
-#else
result = (char *)nextmesg;
-#endif
} else {
free_msghistory_snapshot(FALSE);
}
if (msg) {
/* move most recent message to history, make this become most recent */
remember_topl();
- (void)NWstrcpy(toplines, msg); /* narrow-to-wide */
+ Strcpy(toplines, msg);
} else if (snapshot_mesgs) {
/* done putting arbitrary messages in; put the snapshot ones back */
for (idx = 0; snapshot_mesgs[idx]; ++idx) {
remember_topl();
- (void)WWstrcpy(toplines, snapshot_mesgs[idx]); /* wide-to-wide */
+ Strcpy(toplines, snapshot_mesgs[idx]);
}
/* now release the snapshot */
free_msghistory_snapshot(TRUE);
/* this is only needed until tty_status_* routines are written */
extern NEARDATA winid WIN_STATUS;
-#ifdef UNICODE_WIDEWINPORT
-void FDECL(tty_putmixed,(winid,int,const char *));
-void FDECL(tty_putstr_core,(winid,int,const nhwchar *));
-#endif
-
/* Interface definition, for windows.c */
struct window_procs tty_procs = {
"tty",
tty_destroy_nhwindow,
tty_curs,
tty_putstr,
-#ifdef UNICODE_WIDEWINPORT
- tty_putmixed,
-#else
genl_putmixed,
-#endif
tty_display_file,
tty_start_menu,
tty_add_menu,
#endif
static char winpanicstr[] = "Bad window id %d";
-#ifdef UNICODE_WIDEWINPORT
-nhwchar defmorestr[] = L"--More--";
-#else
-nhwchar defmorestr[] = "--More--";
-#endif
-nhwchar emptysym[1] = {0};
+char defmorestr[] = "--More--";
#ifdef CLIPPING
# if defined(USE_TILES) && defined(MSDOS)
STATIC_DCL void FDECL(process_text_window, (winid,struct WinDesc *));
STATIC_DCL tty_menu_item *FDECL(reverse, (tty_menu_item *));
STATIC_DCL const char * FDECL(compress_str, (const char *));
-STATIC_DCL void FDECL(tty_putsym, (winid, int, int, NHWCHAR_P));
+STATIC_DCL void FDECL(tty_putsym, (winid, int, int, CHAR_P));
STATIC_DCL char *FDECL(copy_of, (const char *));
-#ifdef UNICODE_WIDEWINPORT
-STATIC_DCL nhwchar *FDECL(nhwchar_copy_of, (const nhwchar *));
-#endif
STATIC_DCL void FDECL(bail, (const char *)); /* __attribute__((noreturn)) */
/*
for(i=WIN_INVEN; i < MAXWIN; i++)
if(wins[i] && wins[i]->active) {
/* cop-out */
-#ifdef UNICODE_WIDEWINPORT
- addtopl(L"Press Return to continue: ");
-#else
addtopl("Press Return to continue: ");
-#endif
break;
}
(void) fflush(stdout);
if(newwin->maxrow) {
newwin->data =
- (nhwchar **) alloc(sizeof(nhwchar *) * (unsigned)newwin->maxrow);
+ (char **) alloc(sizeof(char *) * (unsigned)newwin->maxrow);
newwin->datlen =
(short *) alloc(sizeof(short) * (unsigned)newwin->maxrow);
if(newwin->maxcol) {
for (i = 0; i < newwin->maxrow; i++) {
- newwin->data[i] = (nhwchar *) alloc(sizeof(nhwchar) * (unsigned)newwin->maxcol);
+ newwin->data[i] = (char *) alloc((unsigned)newwin->maxcol);
newwin->datlen[i] = newwin->maxcol;
}
} else {
for (i = 0; i < newwin->maxrow; i++) {
- newwin->data[i] = (nhwchar *) 0;
+ newwin->data[i] = (char *) 0;
newwin->datlen[i] = 0;
}
}
if(newwin->type == NHW_MESSAGE)
newwin->maxrow = 0;
} else {
- newwin->data = (nhwchar **)0;
+ newwin->data = (char **)0;
newwin->datlen = (short *)0;
}
for(i=0; i<cw->maxrow; i++)
if(cw->data[i]) {
free((genericptr_t)cw->data[i]);
- cw->data[i] = (nhwchar *)0;
+ cw->data[i] = (char *)0;
if (cw->datlen) cw->datlen[i] = 0;
}
if (free_data) {
free((genericptr_t)cw->data);
- cw->data = (nhwchar **)0;
+ cw->data = (char **)0;
if (cw->datlen) free((genericptr_t)cw->datlen);
cw->datlen = (short *)0;
cw->rows = 0;
register struct WinDesc *cw;
const char *s; /* valid responses */
{
-#ifdef UNICODE_WIDEWINPORT
- char buf[BUFSZ];
-#endif
- const nhwchar *prompt = cw->morestr ? cw->morestr : defmorestr;
-
+ const char *prompt = cw->morestr ? cw->morestr : defmorestr;
int offset = (cw->type == NHW_TEXT) ? 1 : 2;
tty_curs(BASE_WINDOW,
(int)ttyDisplay->curx + offset, (int)ttyDisplay->cury);
if(flags.standout)
standoutbeg();
-#ifdef UNICODE_WIDEWINPORT
- strnhwcpy(buf, prompt);
- xputs(buf);
- ttyDisplay->curx += strlen(buf);
-#else
xputs(prompt);
ttyDisplay->curx += strlen(prompt);
-#endif
if(flags.standout)
standoutend();
long count;
int n, curr_page, page_lines;
boolean finished, counting, reset_count;
- char *cp, *rp, resp[QBUFSZ], gacc[QBUFSZ];
- nhwchar *msave, *morestr;
+ char *cp, *rp, resp[QBUFSZ], gacc[QBUFSZ],
+ *msave, *morestr;
curr_page = page_lines = 0;
page_start = page_end = 0;
msave = cw->morestr; /* save the morestr */
- cw->morestr = morestr = (nhwchar*) alloc(sizeof(nhwchar) * (unsigned) QBUFSZ);
+ cw->morestr = morestr = (char*) alloc((unsigned) QBUFSZ);
counting = FALSE;
count = 0L;
reset_count = TRUE;
Strcat(resp, gacc); /* group accelerators */
Strcat(resp, mapped_menu_cmds);
- if (cw->npages > 1) {
-#ifdef UNICODE_WIDEWINPORT
- char buf[BUFSZ];
- Sprintf(buf, "(%d of %d)",
- curr_page + 1, (int) cw->npages);
- (void)nhwstrcpy(cw->morestr, buf);
-#else
+ if (cw->npages > 1)
Sprintf(cw->morestr, "(%d of %d)",
curr_page + 1, (int) cw->npages);
-#endif
- } else if (msave) {
-#ifdef UNICODE_WIDEWINPORT
- (void)nhwcpy(cw->morestr, msave);
-#else
+ else if (msave)
Strcpy(cw->morestr, msave);
-#endif
- } else {
-#ifdef UNICODE_WIDEWINPORT
- (void)nhwcpy(cw->morestr, defmorestr);
-#else
+ else
Strcpy(cw->morestr, defmorestr);
-#endif
- }
+
tty_curs(window, 1, page_lines);
cl_end();
dmore(cw, resp);
} else {
/* just put the cursor back... */
- tty_curs(window,
-#ifdef UNICODE_WIDEWINPORT
- (int) nhwlen(cw->morestr) + 2,
-#else
- (int) strlen(cw->morestr) + 2,
-#endif
- page_lines);
+ tty_curs(window, (int) strlen(cw->morestr) + 2, page_lines);
xwaitforspace(resp);
}
struct WinDesc *cw;
{
int i, n, attr;
- register nhwchar *cp;
+ register char *cp;
for (n = 0, i = 0; i < cw->maxrow; i++) {
if (!cw->offx && (n + cw->offy == ttyDisplay->rows - 1)) {
*cp && (int) ttyDisplay->curx < (int) ttyDisplay->cols;
cp++, ttyDisplay->curx++)
#endif
-#ifdef UNICODE_WIDEWINPORT
- u_putch(*cp);
-#else
(void) putchar(*cp);
-#endif
term_end_attr(attr);
}
}
tty_putsym(window, x, y, ch)
winid window;
int x, y;
- nhwchar ch;
+ char ch;
{
register struct WinDesc *cw = 0;
case NHW_MAP:
case NHW_BASE:
tty_curs(window, x, y);
-#ifdef UNICODE_WIDEWINPORT
- u_putch(ch);
-#else
(void) putchar(ch);
-#endif
ttyDisplay->curx++;
cw->curx++;
break;
const char *str;
{
register struct WinDesc *cw = 0;
-#ifdef UNICODE_WIDEWINPORT
- nhwchar symbuf[BUFSZ];
- register const nhwchar *symstr = symbuf;
-#else
- register const nhwchar *nb;
- register nhwchar *ob;
+ register char *ob;
+ register const char *nb;
register int i, j, n0;
-#endif
/* Assume there's a real problem if the window is missing --
* probably a panic message
return;
if(cw->type != NHW_MESSAGE)
str = compress_str(str);
-#if defined(USER_SOUNDS) && defined(WIN32CON)
- else
- play_sound_for_message(str);
-#endif
-
-#ifdef UNICODE_WIDEWINPORT
- nhwstrcpy(symbuf, str);
- tty_putstr_core(window, attr, symstr);
-}
-
-void
-tty_putstr_core(window, attr, symstr)
- winid window;
- int attr;
- const nhwchar *symstr;
-{
- register struct WinDesc *cw = wins[window];
- register const nhwchar *nb;
- register nhwchar *ob;
- register int i, j, n0;
-#endif
ttyDisplay->lastwin = window;
switch(cw->type) {
case NHW_MESSAGE:
/* really do this later */
-#ifdef UNICODE_WIDEWINPORT
- update_topl(symstr);
-#else
- update_topl(str);
+#if defined(USER_SOUNDS) && defined(WIN32CON)
+ play_sound_for_message(str);
#endif
+ update_topl(str);
break;
case NHW_STATUS:
ob = &cw->data[cw->cury][j = cw->curx];
if(context.botlx) *ob = 0;
-#ifdef UNICODE_WIDEWINPORT
- if(!cw->cury && (int)nhwlen(symstr) >= CO) {
- /* the characters before "St:" are unnecessary */
- nb = nhwindex(symstr, L':');
- if(nb && nb > symstr+2)
- symstr = nb - 2;
- }
- nb = symstr;
-#else
if(!cw->cury && (int)strlen(str) >= CO) {
/* the characters before "St:" are unnecessary */
nb = index(str, ':');
str = nb - 2;
}
nb = str;
-#endif
-
for(i = cw->curx+1, n0 = cw->cols; i < n0; i++, nb++) {
if(!*nb) {
if(*ob || context.botlx) {
if(*ob) ob++;
}
-#ifdef UNICODE_WIDEWINPORT
- (void) nhwncpy(&cw->data[cw->cury][j], symstr, cw->cols - j - 1);
-#else
(void) strncpy(&cw->data[cw->cury][j], str, cw->cols - j - 1);
-#endif
- cw->data[cw->cury][cw->cols-1] = (nhwchar)0; /* null terminate */
+ cw->data[cw->cury][cw->cols-1] = '\0'; /* null terminate */
cw->cury = (cw->cury+1) % 2;
cw->curx = 0;
break;
case NHW_MAP:
tty_curs(window, cw->curx+1, cw->cury);
term_start_attr(attr);
-#ifdef UNICODE_WIDEWINPORT
- while(*symstr && (int) ttyDisplay->curx < (int) ttyDisplay->cols-1) {
- u_putch(*symstr);
- symstr++;
- ttyDisplay->curx++;
- }
-#else
while(*str && (int) ttyDisplay->curx < (int) ttyDisplay->cols-1) {
(void) putchar(*str);
str++;
ttyDisplay->curx++;
}
-#endif
cw->curx = 0;
cw->cury++;
term_end_attr(attr);
case NHW_BASE:
tty_curs(window, cw->curx+1, cw->cury);
term_start_attr(attr);
-#ifdef UNICODE_WIDEWINPORT
- while (*symstr) {
-#else
while (*str) {
-#endif
if ((int) ttyDisplay->curx >= (int) ttyDisplay->cols-1) {
cw->curx = 0;
cw->cury++;
tty_curs(window, cw->curx+1, cw->cury);
}
-#ifdef UNICODE_WIDEWINPORT
- u_putch(*symstr);
- symstr++;
-#else
(void) putchar(*str);
str++;
-#endif
ttyDisplay->curx++;
}
cw->curx = 0;
}
/* always grows one at a time, but alloc 12 at a time */
if(cw->cury >= cw->rows) {
- nhwchar **tmp;
+ char **tmp;
cw->rows += 12;
- tmp = (nhwchar **) alloc(sizeof(nhwchar *) * (unsigned)cw->rows);
+ tmp = (char **) alloc(sizeof(char *) * (unsigned)cw->rows);
for(i=0; i<cw->maxrow; i++)
tmp[i] = cw->data[i];
if(cw->data)
}
if(cw->data[cw->cury])
free((genericptr_t)cw->data[cw->cury]);
-#ifdef UNICODE_WIDEWINPORT
- n0 = nhwlen(symstr) + 1;
-#else
n0 = strlen(str) + 1;
-#endif
-
- ob = cw->data[cw->cury] = (nhwchar *)alloc(sizeof(nhwchar) * ((unsigned)n0 + 1));
- *ob++ = (nhwchar)(attr + 1); /* avoid nuls, for convenience */
-#ifdef UNICODE_WIDEWINPORT
- (void)nhwcpy(ob, symstr);
-#else
+ ob = cw->data[cw->cury] = (char *)alloc((unsigned)n0 + 1);
+ *ob++ = (char)(attr + 1); /* avoid nuls, for convenience */
Strcpy(ob, str);
-#endif
if(n0 > cw->maxcol)
cw->maxcol = n0;
cw->maxrow = cw->cury;
if(n0 > CO) {
/* attempt to break the line */
-#ifdef UNICODE_WIDEWINPORT
- for(i = CO-1; i && symstr[i] != L' ' && symstr[i] != L'\n';)
-#else
for(i = CO-1; i && str[i] != ' ' && str[i] != '\n';)
-#endif
i--;
if(i) {
- cw->data[cw->cury-1][++i] = (nhwchar)0;
-#ifdef UNICODE_WIDEWINPORT
- tty_putstr_core(window, attr, &symstr[i]);
-#else
+ cw->data[cw->cury-1][++i] = '\0';
tty_putstr(window, attr, &str[i]);
-#endif
}
}
}
}
-#ifdef UNICODE_WIDEWINPORT
-/*
- * This differs from putstr() because the str parameter can
- * contain a sequence of characters representing:
- * \GXXXXNNNN a glyph value, encoded by encglyph().
- *
- */
-void
-tty_putmixed(window, attr, str)
- winid window;
- int attr;
- const char *str;
-{
- nhwchar wbuf[BUFSZ];
- const char *cp = str;
- nhwchar *put = wbuf;
- while (*cp) {
- if (*cp == '\\') {
- int rndchk = 0, so = 0, gv = 0, ch, oc, dcount;
- unsigned os;
- const char *dp, *hex = "00112233445566778899aAbBcCdDeEfF";
- const char *save_cp = cp;
-
- cp++;
- switch(*cp) {
- case 'G': /* glyph value \GXXXXNNNN*/
- dcount = 0;
- for (++cp; *cp && (dp = index(hex, *cp)) && (dcount++ < 4); cp++)
- rndchk = (int)((rndchk * 16) + ((int)(dp - hex) / 2));
-
- if (rndchk == context.rndencode) {
- dcount = 0;
- for (; *cp && (dp = index(hex, *cp)) && (dcount++ < 4); cp++)
- gv = (int)((gv * 16) + ((int)(dp - hex) / 2));
- so = mapglyph(gv, &ch, &oc, &os, 0, 0);
- *put++ = (nhwchar)showsyms[so];
- continue;
- } else {
- /* possible forgery - leave it the way it is */
- cp = save_cp;
- }
- break;
- case '\\':
- break;
- }
- }
- *put++ = (nhwchar)*cp++;
- }
- *put = (nhwchar)0;
- /* now send it to tty_putstr_core() */
- tty_putstr_core(window, attr, wbuf);
-}
-#endif /*UNICODE_WIDEWINPORT*/
-
void
tty_display_file(fname, complain)
const char *fname;
/* Reverse the list so that items are in correct order. */
cw->mlist = reverse(cw->mlist);
- /* Put the prompt at the beginning of the menu. */
+ /* Put the promt at the beginning of the menu. */
if (prompt) {
anything any;
/* produce the largest demo string */
Sprintf(buf, "(%d of %d) ", cw->npages, cw->npages);
len = strlen(buf);
-#ifdef UNICODE_WIDEWINPORT
- cw->morestr = nhwchar_copy_of(emptysym);
-#else
cw->morestr = copy_of("");
-#endif
} else {
-#ifdef UNICODE_WIDEWINPORT
- cw->morestr = nhwchar_copy_of(L"(end) ");
- len = nhwlen(cw->morestr);
-#else
cw->morestr = copy_of("(end) ");
len = strlen(cw->morestr);
-#endif
}
if (len > (int)ttyDisplay->cols) {
} else {
tty_display_nhwindow(WIN_MAP, FALSE);
if(ttyDisplay->inmore) {
-#ifdef UNICODE_WIDEWINPORT
- addtopl(L"--More--");
-#else
addtopl("--More--");
-#endif
(void) fflush(stdout);
} else if(ttyDisplay->inread > program_state.gameover) {
/* this can only happen if we were reading and got interrupted */
#endif
}
-#ifdef UNICODE_WIDEWINPORT
-/*
- * Parts of u_putch() were contributed by Adam Wozniak, 2005.
- */
-void
-u_putch(sym)
-nhwchar sym;
-{
- unsigned long unicode = sym;
- if (!iflags.unicodedisp)
- putchar((char)sym);
- else {
-#if defined(UNIX) || defined(VMS)
- /* send utf8 to display */
- if (unicode < 0x80) {
- (void) putchar(unicode);
- } else if (unicode < 0x00000800) {
- (void) putchar(0xC0 | (unicode >> 6));
- (void) putchar(0x80 | (unicode & 0x3F));
- } else if (unicode < 0x00010000) {
- (void) putchar(0xE0 | (unicode >> 12));
- (void) putchar(0x80 | ((unicode >> 6) & 0x3F));
- (void) putchar(0x80 | (unicode & 0x3F));
- } else if (unicode < 0x00200000) {
- (void) putchar(0xF0 | (unicode >> 18));
- (void) putchar(0x80 | ((unicode >> 12) & 0x3F));
- (void) putchar(0x80 | ((unicode >> 6) & 0x3F));
- (void) putchar(0x80 | (unicode & 0x3F));
- } else if (unicode < 0x04000000) {
- (void) putchar(0xF8 | (unicode >> 24));
- (void) putchar(0x80 | ((unicode >> 18) & 0x3F));
- (void) putchar(0x80 | ((unicode >> 12) & 0x3F));
- (void) putchar(0x80 | ((unicode >> 6) & 0x3F));
- (void) putchar(0x80 | (unicode & 0x3F));
- } else {
- (void) putchar(0xFC | (unicode >> 30));
- (void) putchar(0x80 | ((unicode >> 24) & 0x3F));
- (void) putchar(0x80 | ((unicode >> 18) & 0x3F));
- (void) putchar(0x80 | ((unicode >> 12) & 0x3F));
- (void) putchar(0x80 | ((unicode >> 6) & 0x3F));
- (void) putchar(0x80 | (unicode & 0x3F));
- }
-#else
- /* it is assumed that whatever is being substituted for
- putchar() can handle unicode characters directly at
- this point (nttty's xputc() for example) */
- (void) putchar(sym);
-#endif
- }
-}
-#endif /*UNICODE_WIDEWINPORT*/
-
#ifndef WIN32
void
g_putch(in_ch)
register char ch = (char)in_ch;
# if defined(ASCIIGRAPH) && !defined(NO_TERMS)
-# if defined(UNICODE_WIDEWINPORT) && defined(UNICODE_DRAWING)
- if (iflags.unicodedisp && symset[currentgraphics].name) {
- u_putch(in_ch);
- } else
-# endif
if (SYMHANDLING(H_IBM) || iflags.eight_bit_tty) {
/* IBM-compatible displays don't need other stuff */
(void) putchar(ch);
xchar x, y;
int glyph;
{
- int ch, idx;
+ int ch;
boolean reverse_on = FALSE;
- int color;
+ int color;
unsigned special;
#ifdef CLIPPING
}
#endif
/* map glyph to character and color */
- idx = mapglyph(glyph, &ch, &color, &special, x, y);
+ (void)mapglyph(glyph, &ch, &color, &special, x, y);
/* Move the cursor. */
tty_curs(window, x,y);
if (iflags.grmode && iflags.tile_view)
xputg(glyph,ch,special);
else
-#endif
-#if defined(UNICODE_WIDEWINPORT) && defined(UNICODE_DRAWING)
- if (iflags.unicodedisp && symset[currentgraphics].name)
- g_putch(showsyms[idx]); /* use the unicode symset */
- else
#endif
g_putch(ch); /* print the character */
return strcpy((char *) alloc((unsigned) (strlen(s) + 1)), s);
}
-# ifdef UNICODE_WIDEWINPORT
-STATIC_OVL nhwchar *
-nhwchar_copy_of(s)
- const nhwchar *s;
-{
- if (!s) s = emptysym;
- return nhwcpy((nhwchar *) alloc(sizeof(nhwchar) * (unsigned) (nhwlen(s) + 1)), s);
-}
-# endif /*UNICODE_WIDEWINPORT*/
#endif /* TTY_GRAPHICS */
/*wintty.c*/