mirror of
https://git.zap.org.au/git/trader.git
synced 2025-02-02 15:08:13 -05:00
Minor clean-up: replace character constants with wide-char versions
Wide-char character constants is not strictly needed for most (all?) modern C compilers, as ASCII maps to wchar_t directly (as long as __STDC_ISO_10646__ is defined). However, it doesn't hurt to be pedantic!
This commit is contained in:
parent
61411e3416
commit
1c2518a78b
40
src/exch.c
40
src/exch.c
@ -208,7 +208,7 @@ void exchange_stock (void)
|
||||
key = towlower(key);
|
||||
}
|
||||
|
||||
for (i = 0, found = false; keycode_company[i] != '\0'; i++) {
|
||||
for (i = 0, found = false; keycode_company[i] != L'\0'; i++) {
|
||||
if (keycode_company[i] == key) {
|
||||
found = true;
|
||||
if (company[i].on_map) {
|
||||
@ -222,24 +222,24 @@ void exchange_stock (void)
|
||||
|
||||
if (! found) {
|
||||
switch (key) {
|
||||
case '1':
|
||||
case L'1':
|
||||
curs_set(CURS_OFF);
|
||||
show_status(current_player);
|
||||
curs_set(CURS_ON);
|
||||
break;
|
||||
|
||||
case '2':
|
||||
case L'2':
|
||||
curs_set(CURS_OFF);
|
||||
show_map(true);
|
||||
curs_set(CURS_ON);
|
||||
break;
|
||||
|
||||
case '3':
|
||||
case L'3':
|
||||
selection = SEL_BANK;
|
||||
break;
|
||||
|
||||
case '4':
|
||||
case ' ':
|
||||
case L'4':
|
||||
case L' ':
|
||||
selection = SEL_EXIT;
|
||||
break;
|
||||
|
||||
@ -379,9 +379,9 @@ void visit_bank (void)
|
||||
if (gettxchar(curwin, &key) == OK) {
|
||||
// Ordinary wide character
|
||||
switch (key) {
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case L'1':
|
||||
case L'2':
|
||||
case L'3':
|
||||
left(curwin, getcury(curwin), getcurx(curwin), A_BOLD,
|
||||
0, 0, 1, "%lc", key);
|
||||
wrefresh(curwin);
|
||||
@ -389,7 +389,7 @@ void visit_bank (void)
|
||||
done = true;
|
||||
break;
|
||||
|
||||
case ' ':
|
||||
case L' ':
|
||||
done = true;
|
||||
break;
|
||||
|
||||
@ -417,7 +417,7 @@ void visit_bank (void)
|
||||
curs_set(CURS_OFF);
|
||||
|
||||
switch (key) {
|
||||
case '1':
|
||||
case L'1':
|
||||
// Borrow money from the Bank
|
||||
if (credit_limit == 0.0) {
|
||||
txdlgbox(MAX_DLG_LINES, 50, 8, WCENTER, attr_error_window,
|
||||
@ -470,7 +470,7 @@ void visit_bank (void)
|
||||
}
|
||||
break;
|
||||
|
||||
case '2':
|
||||
case L'2':
|
||||
// Repay a debt
|
||||
if (player[current_player].debt == 0.0) {
|
||||
txdlgbox(MAX_DLG_LINES, 50, 8, WCENTER, attr_error_window,
|
||||
@ -664,10 +664,10 @@ void trade_shares (int num, bool *bid_used)
|
||||
if (gettxchar(curwin, &key) == OK) {
|
||||
// Ordinary wide character
|
||||
switch (key) {
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case '4':
|
||||
case L'1':
|
||||
case L'2':
|
||||
case L'3':
|
||||
case L'4':
|
||||
left(curwin, getcury(curwin), getcurx(curwin), A_BOLD,
|
||||
0, 0, 1, "%lc", key);
|
||||
wrefresh(curwin);
|
||||
@ -675,7 +675,7 @@ void trade_shares (int num, bool *bid_used)
|
||||
done = true;
|
||||
break;
|
||||
|
||||
case ' ':
|
||||
case L' ':
|
||||
done = true;
|
||||
break;
|
||||
|
||||
@ -703,7 +703,7 @@ void trade_shares (int num, bool *bid_used)
|
||||
curs_set(CURS_OFF);
|
||||
|
||||
switch (key) {
|
||||
case '1':
|
||||
case L'1':
|
||||
// Buy stock in company
|
||||
maxshares = player[current_player].cash / company[num].share_price;
|
||||
|
||||
@ -748,7 +748,7 @@ void trade_shares (int num, bool *bid_used)
|
||||
}
|
||||
break;
|
||||
|
||||
case '2':
|
||||
case L'2':
|
||||
// Sell stock back to company
|
||||
maxshares = player[current_player].stock_owned[num];
|
||||
if (maxshares == 0) {
|
||||
@ -783,7 +783,7 @@ void trade_shares (int num, bool *bid_used)
|
||||
}
|
||||
break;
|
||||
|
||||
case '3':
|
||||
case L'3':
|
||||
// Bid company to issue more shares
|
||||
maxshares = 0;
|
||||
if (! *bid_used && randf() < ownership && randf() < BID_CHANCE) {
|
||||
|
13
src/game.c
13
src/game.c
@ -281,12 +281,12 @@ static int ask_number_players (void)
|
||||
|
||||
if (gettxchar(curwin, &key) == OK) {
|
||||
// Ordinary wide character
|
||||
if (key >= '1' && key <= MAX_PLAYERS + '0') {
|
||||
if (key >= L'1' && key <= MAX_PLAYERS + L'0') {
|
||||
left(curwin, getcury(curwin), getcurx(curwin), A_BOLD,
|
||||
0, 0, 1, "%lc", key);
|
||||
wrefresh(curwin);
|
||||
|
||||
ret = key - '0';
|
||||
ret = key - L'0';
|
||||
done = true;
|
||||
} else if (wcschr(keycode_contgame, key) != NULL) {
|
||||
left(curwin, getcury(curwin), getcurx(curwin), A_BOLD,
|
||||
@ -356,12 +356,12 @@ int ask_game_number (void)
|
||||
|
||||
if (gettxchar(curwin, &key) == OK) {
|
||||
// Ordinary wide character
|
||||
if (key >= '1' && key <= '9') {
|
||||
if (key >= L'1' && key <= L'9') {
|
||||
left(curwin, getcury(curwin), getcurx(curwin), A_BOLD,
|
||||
0, 0, 1, "%lc", key);
|
||||
wrefresh(curwin);
|
||||
|
||||
ret = key - '0';
|
||||
ret = key - L'0';
|
||||
done = true;
|
||||
} else {
|
||||
beep();
|
||||
@ -574,8 +574,7 @@ void end_game (void)
|
||||
attr_title, attr_normal, attr_highlight, 0, attr_waitforkey,
|
||||
_(" Total Value "),
|
||||
/* xgettext:c-format */
|
||||
_("Your total value was ^{%N^}."),
|
||||
total_value(0));
|
||||
_("Your total value was ^{%N^}."), total_value(0));
|
||||
} else {
|
||||
// Sort players on the basis of total value
|
||||
for (int i = 0; i < number_players; i++) {
|
||||
@ -655,7 +654,7 @@ void show_map (bool closewin)
|
||||
for (int x = 0; x < MAX_X; x++) {
|
||||
chtype *mapstr = CHTYPE_MAP_VAL(galaxy_map[x][y]);
|
||||
|
||||
while (*mapstr != '\0') {
|
||||
while (*mapstr != 0) {
|
||||
waddch(curwin, *mapstr++);
|
||||
}
|
||||
}
|
||||
|
115
src/help.c
115
src/help.c
@ -61,7 +61,7 @@ static const char *help_text[HELP_TEXT_PAGES] = {
|
||||
^^ - Print the circumflex accent (ASCII code U+005E)
|
||||
^N - Switch to using the normal character rendition
|
||||
^B - Switch to using the bold character rendition
|
||||
^B - Switch to using the highlight character rendition
|
||||
^H - Switch to using the highlight character rendition
|
||||
^K - Switch to using the keycode character rendition (such as used for "<CTRL><C>")
|
||||
^e - Switch to using the character rendition used for empty space
|
||||
^o - Switch to using the character rendition used for outposts
|
||||
@ -288,149 +288,150 @@ void show_help (void)
|
||||
memset(&mbstate, 0, sizeof(mbstate));
|
||||
outp = outbuf;
|
||||
|
||||
while (*htxt != '\0' && count > maxchar * 2) {
|
||||
while (*htxt != L'\0' && count > maxchar * 2) {
|
||||
switch (*htxt) {
|
||||
case '\n':
|
||||
case L'\n':
|
||||
// Start a new line
|
||||
*outp++ = '\n';
|
||||
count--;
|
||||
break;
|
||||
|
||||
case '^':
|
||||
case L'^':
|
||||
// Switch to a different character rendition
|
||||
switch (*++htxt) {
|
||||
case '^':
|
||||
case L'^':
|
||||
wcbuf[0] = *htxt;
|
||||
wcbuf[1] = '\0';
|
||||
wcbuf[1] = L'\0';
|
||||
goto addwcbuf;
|
||||
|
||||
case 'N':
|
||||
case L'N':
|
||||
curattr = attr_normal;
|
||||
break;
|
||||
|
||||
case 'B':
|
||||
case L'B':
|
||||
curattr = attr_normal | A_BOLD;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
case L'H':
|
||||
curattr = attr_highlight;
|
||||
break;
|
||||
|
||||
case 'K':
|
||||
case L'K':
|
||||
curattr = attr_keycode;
|
||||
break;
|
||||
|
||||
case 'e':
|
||||
case L'e':
|
||||
curattr = attr_map_empty;
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
case L'o':
|
||||
curattr = attr_map_outpost;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
case L's':
|
||||
curattr = attr_map_star;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
case L'c':
|
||||
curattr = attr_map_company;
|
||||
break;
|
||||
|
||||
case 'k':
|
||||
case L'k':
|
||||
curattr = attr_map_choice;
|
||||
break;
|
||||
|
||||
default:
|
||||
wcbuf[0] = '^';
|
||||
wcbuf[0] = L'^';
|
||||
wcbuf[1] = *htxt;
|
||||
wcbuf[2] = '\0';
|
||||
wcbuf[2] = L'\0';
|
||||
goto addwcbuf;
|
||||
}
|
||||
break;
|
||||
|
||||
case '~':
|
||||
case L'~':
|
||||
// Print a global constant
|
||||
switch (*++htxt) {
|
||||
case '~':
|
||||
case L'~':
|
||||
wcbuf[0] = *htxt;
|
||||
wcbuf[1] = '\0';
|
||||
wcbuf[1] = L'\0';
|
||||
goto addwcbuf;
|
||||
|
||||
case 'x':
|
||||
case L'x':
|
||||
swprintf(wcbuf, BIGBUFSIZE, L"%2d", MAX_X);
|
||||
goto addwcbuf;
|
||||
|
||||
case 'y':
|
||||
case L'y':
|
||||
swprintf(wcbuf, BIGBUFSIZE, L"%2d", MAX_Y);
|
||||
goto addwcbuf;
|
||||
|
||||
case 'm':
|
||||
case L'm':
|
||||
swprintf(wcbuf, BIGBUFSIZE, L"%2d", NUMBER_MOVES);
|
||||
goto addwcbuf;
|
||||
|
||||
case 'c':
|
||||
case L'c':
|
||||
swprintf(wcbuf, BIGBUFSIZE, L"%d", MAX_COMPANIES);
|
||||
goto addwcbuf;
|
||||
|
||||
case 't':
|
||||
case L't':
|
||||
swprintf(wcbuf, BIGBUFSIZE, L"%2d", DEFAULT_MAX_TURN);
|
||||
goto addwcbuf;
|
||||
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case '4':
|
||||
case '5':
|
||||
case '6':
|
||||
case '7':
|
||||
case '8':
|
||||
case '9':
|
||||
case L'1':
|
||||
case L'2':
|
||||
case L'3':
|
||||
case L'4':
|
||||
case L'5':
|
||||
case L'6':
|
||||
case L'7':
|
||||
case L'8':
|
||||
case L'9':
|
||||
// N-th choice of move, as a key press
|
||||
wcbuf[0] = PRINTABLE_GAME_MOVE(*htxt - L'1');
|
||||
wcbuf[1] = '\0';
|
||||
wcbuf[1] = L'\0';
|
||||
goto addwcbuf;
|
||||
|
||||
case 'M':
|
||||
case L'M':
|
||||
// Last choice of move, as a key press
|
||||
wcbuf[0] = PRINTABLE_GAME_MOVE(NUMBER_MOVES - 1);
|
||||
wcbuf[1] = '\0';
|
||||
wcbuf[1] = L'\0';
|
||||
goto addwcbuf;
|
||||
|
||||
case '.':
|
||||
case L'.':
|
||||
// Map representation of empty space
|
||||
wcbuf[0] = PRINTABLE_MAP_VAL(MAP_EMPTY);
|
||||
wcbuf[1] = '\0';
|
||||
wcbuf[1] = L'\0';
|
||||
goto addwcbuf;
|
||||
|
||||
case '+':
|
||||
case L'+':
|
||||
// Map representation of an outpost
|
||||
wcbuf[0] = PRINTABLE_MAP_VAL(MAP_OUTPOST);
|
||||
wcbuf[1] = '\0';
|
||||
wcbuf[1] = L'\0';
|
||||
goto addwcbuf;
|
||||
|
||||
case '*':
|
||||
case L'*':
|
||||
// Map representation of a star
|
||||
wcbuf[0] = PRINTABLE_MAP_VAL(MAP_STAR);
|
||||
wcbuf[1] = '\0';
|
||||
wcbuf[1] = L'\0';
|
||||
goto addwcbuf;
|
||||
|
||||
case 'A':
|
||||
case 'B':
|
||||
case 'C':
|
||||
case 'D':
|
||||
case 'E':
|
||||
case 'F':
|
||||
case 'G':
|
||||
case 'H':
|
||||
case L'A':
|
||||
case L'B':
|
||||
case L'C':
|
||||
case L'D':
|
||||
case L'E':
|
||||
case L'F':
|
||||
case L'G':
|
||||
case L'H':
|
||||
// Map representation of company
|
||||
assert((*htxt - L'A') < MAX_COMPANIES);
|
||||
wcbuf[0] = PRINTABLE_MAP_VAL(COMPANY_TO_MAP(*htxt - L'A'));
|
||||
wcbuf[1] = '\0';
|
||||
wcbuf[1] = L'\0';
|
||||
goto addwcbuf;
|
||||
|
||||
default:
|
||||
wcbuf[0] = '~';
|
||||
wcbuf[0] = L'~';
|
||||
wcbuf[1] = *htxt;
|
||||
wcbuf[2] = L'\0';
|
||||
goto addwcbuf;
|
||||
}
|
||||
break;
|
||||
@ -438,10 +439,10 @@ void show_help (void)
|
||||
default:
|
||||
// Print the character
|
||||
wcbuf[0] = *htxt;
|
||||
wcbuf[1] = '\0';
|
||||
wcbuf[1] = L'\0';
|
||||
|
||||
addwcbuf:
|
||||
for (wchar_t *p = wcbuf; *p != '\0' && count > maxchar * 2; p++) {
|
||||
for (wchar_t *p = wcbuf; *p != L'\0' && count > maxchar * 2; p++) {
|
||||
n = xwcrtomb(convbuf, *p, &mbstate);
|
||||
for (i = 0, cp = convbuf; i < n; i++, cp++, outp++, count--) {
|
||||
*outp = (unsigned char) *cp | curattr;
|
||||
@ -453,14 +454,14 @@ void show_help (void)
|
||||
}
|
||||
|
||||
// Add the terminating NUL (possibly with a preceding shift sequence)
|
||||
n = xwcrtomb(convbuf, '\0', &mbstate);
|
||||
n = xwcrtomb(convbuf, L'\0', &mbstate);
|
||||
for (i = 0, cp = convbuf; i < n; i++, cp++, outp++, count--) {
|
||||
*outp = (unsigned char) *cp;
|
||||
}
|
||||
assert(count >= 0);
|
||||
|
||||
// Display the formatted text in outbuf
|
||||
for (outp = outbuf; *outp != '\0'; outp++) {
|
||||
for (outp = outbuf; *outp != 0; outp++) {
|
||||
if (*outp == '\n') {
|
||||
wmove(curwin, getcury(curwin) + 1, 2);
|
||||
} else {
|
||||
|
263
src/intf.c
263
src/intf.c
@ -111,7 +111,7 @@ typedef struct txwin {
|
||||
__stringify(_var), s); \
|
||||
} \
|
||||
(_var) = xwcsdup(buf); \
|
||||
(_var)[_checkpos] = '\0'; \
|
||||
(_var)[_checkpos] = L'\0'; \
|
||||
} while (0)
|
||||
|
||||
#define init_game_chstr(_chvar, _var, _attr, _err) \
|
||||
@ -134,13 +134,13 @@ typedef struct txwin {
|
||||
} \
|
||||
\
|
||||
if (w == 1) { \
|
||||
n = xwcrtomb(convbuf, ' ', &mbstate); \
|
||||
n = xwcrtomb(convbuf, L' ', &mbstate); \
|
||||
for (int i = 0; i < n; i++) { \
|
||||
*p++ = (unsigned char) convbuf[i] | attr_map_empty; \
|
||||
} \
|
||||
} \
|
||||
\
|
||||
n = xwcrtomb(convbuf, '\0', &mbstate); \
|
||||
n = xwcrtomb(convbuf, L'\0', &mbstate); \
|
||||
for (int i = 0; i < n; i++) { \
|
||||
*p++ = (unsigned char) convbuf[i]; \
|
||||
} \
|
||||
@ -326,52 +326,52 @@ static int getwch (WINDOW *win, wint_t *wch);
|
||||
|
||||
|
||||
/*
|
||||
Function: cpos_endl - Adjust cpos and st for printing the ending part of buf
|
||||
Parameters: buf - Pointer to current editing buffer
|
||||
cpos - Pointer to current cursor position (result)
|
||||
st - Pointer to current starting offset for buf[] (result)
|
||||
clen - Current column width of entire string
|
||||
width - Width of editing field in column spaces
|
||||
len - Length of string being edited (wchar_t elements)
|
||||
Function: cpos_end - Adjust cpos and st for printing the ending part of buf
|
||||
Parameters: buf - Pointer to current editing buffer
|
||||
cpos - Pointer to current cursor position (result)
|
||||
st - Pointer to current starting offset for buf[] (result)
|
||||
clen - Current column width of entire string
|
||||
width - Width of editing field in column spaces
|
||||
len - Length of string being edited (wchar_t elements)
|
||||
Returns: (nothing)
|
||||
|
||||
This helper function adjusts *cpos and *st so that the cursor is placed
|
||||
at the end of the current editing buffer buf[].
|
||||
*/
|
||||
static void cpos_endl (wchar_t *restrict buf, int *restrict cpos,
|
||||
int *restrict st, int clen, int width, int len);
|
||||
static void cpos_end (const wchar_t *restrict buf, int *restrict cpos,
|
||||
int *restrict st, int clen, int width, int len);
|
||||
|
||||
|
||||
/*
|
||||
Function: cpos_decr - Adjust cpos and st: scroll to the left by w columns
|
||||
Parameters: buf - Pointer to current editing buffer
|
||||
cpos - Pointer to current cursor position (result)
|
||||
st - Pointer to current starting offset for buf[] (result)
|
||||
w - Number of columns to scroll left
|
||||
width - Width of editing field in column spaces
|
||||
Function: cpos_dec - Adjust cpos and st: scroll to the left by w columns
|
||||
Parameters: buf - Pointer to current editing buffer
|
||||
cpos - Pointer to current cursor position (result)
|
||||
st - Pointer to current starting offset for buf[] (result)
|
||||
w - Number of columns to scroll left
|
||||
width - Width of editing field in column spaces
|
||||
Returns: (nothing)
|
||||
|
||||
This helper function adjusts *cpos and *st so that the cursor is moved
|
||||
to the left by w column positions.
|
||||
*/
|
||||
static void cpos_decr (wchar_t *restrict buf, int *restrict cpos,
|
||||
int *restrict st, int w, int width);
|
||||
static void cpos_dec (const wchar_t *restrict buf, int *restrict cpos,
|
||||
int *restrict st, int w, int width);
|
||||
|
||||
|
||||
/*
|
||||
Function: cpos_incr - Adjust cpos and st: scroll to the right by w columns
|
||||
Parameters: buf - Pointer to current editing buffer
|
||||
cpos - Pointer to current cursor position (result)
|
||||
st - Pointer to current starting offset for buf[] (result)
|
||||
w - Number of columns to scroll right
|
||||
width - Width of editing field in column spaces
|
||||
Function: cpos_inc - Adjust cpos and st: scroll to the right by w columns
|
||||
Parameters: buf - Pointer to current editing buffer
|
||||
cpos - Pointer to current cursor position (result)
|
||||
st - Pointer to current starting offset for buf[] (result)
|
||||
w - Number of columns to scroll right
|
||||
width - Width of editing field in column spaces
|
||||
Returns: (nothing)
|
||||
|
||||
This helper function adjusts *cpos and *st so that the cursor is moved
|
||||
to the right by w column positions.
|
||||
*/
|
||||
static void cpos_incr (wchar_t *restrict buf, int *restrict cpos,
|
||||
int *restrict st, int w, int width);
|
||||
static void cpos_inc (const wchar_t *restrict buf, int *restrict cpos,
|
||||
int *restrict st, int w, int width);
|
||||
|
||||
|
||||
/*
|
||||
@ -389,7 +389,7 @@ static void cpos_incr (wchar_t *restrict buf, int *restrict cpos,
|
||||
This function is used by gettxdouble() and gettxlong() to share some
|
||||
common code.
|
||||
*/
|
||||
static void txinput_fixup (wchar_t *restrict dest, wchar_t *restrict src,
|
||||
static void txinput_fixup (wchar_t *restrict dest, const wchar_t *restrict src,
|
||||
bool isfloat);
|
||||
|
||||
|
||||
@ -864,11 +864,11 @@ int mkchstr_parse (const wchar_t *restrict format,
|
||||
memset(format_arg, 0, MAXFMTARGS * sizeof(format_arg[0]));
|
||||
memset(format_spec, 0, MAXFMTSPECS * sizeof(format_spec[0]));
|
||||
|
||||
while (*format != '\0') {
|
||||
while (*format != L'\0') {
|
||||
switch (*format++) {
|
||||
case '^':
|
||||
case L'^':
|
||||
// Switch to a different character rendition
|
||||
if (*format == '\0') {
|
||||
if (*format == L'\0') {
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
} else {
|
||||
@ -877,13 +877,13 @@ int mkchstr_parse (const wchar_t *restrict format,
|
||||
}
|
||||
break;
|
||||
|
||||
case '%':
|
||||
case L'%':
|
||||
// Process a conversion specifier
|
||||
if (*format == '\0') {
|
||||
if (*format == L'\0') {
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
} else if (*format == '%') {
|
||||
// Ignore "%%" specifier
|
||||
} else if (*format == L'%') {
|
||||
// Ignore "%%" specifier for now
|
||||
format++;
|
||||
} else {
|
||||
const wchar_t *start = format;
|
||||
@ -893,10 +893,10 @@ int mkchstr_parse (const wchar_t *restrict format,
|
||||
bool flag_other = false; // Have we seen something else?
|
||||
int count = 0;
|
||||
|
||||
while (inspec && *format != '\0') {
|
||||
wchar_t wc = *format++;
|
||||
switch (wc) {
|
||||
case '0':
|
||||
while (inspec && *format != L'\0') {
|
||||
wchar_t c = *format++;
|
||||
switch (c) {
|
||||
case L'0':
|
||||
// Zero flag, or part of numeric count
|
||||
if (count == 0) {
|
||||
// Zero flag is NOT supported
|
||||
@ -907,20 +907,20 @@ int mkchstr_parse (const wchar_t *restrict format,
|
||||
count *= 10;
|
||||
break;
|
||||
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case '4':
|
||||
case '5':
|
||||
case '6':
|
||||
case '7':
|
||||
case '8':
|
||||
case '9':
|
||||
case L'1':
|
||||
case L'2':
|
||||
case L'3':
|
||||
case L'4':
|
||||
case L'5':
|
||||
case L'6':
|
||||
case L'7':
|
||||
case L'8':
|
||||
case L'9':
|
||||
// Part of some numeric count
|
||||
count = count * 10 + (wc - L'0');
|
||||
count = count * 10 + (c - L'0');
|
||||
break;
|
||||
|
||||
case '$':
|
||||
case L'$':
|
||||
// Fixed-position argument
|
||||
if (flag_posn || flag_other || count == 0) {
|
||||
errno = EINVAL;
|
||||
@ -937,7 +937,7 @@ int mkchstr_parse (const wchar_t *restrict format,
|
||||
count = 0;
|
||||
break;
|
||||
|
||||
case '\'':
|
||||
case L'\'':
|
||||
// Use locale-specific thousands group separator
|
||||
if (format_spec->flag_group) {
|
||||
errno = EINVAL;
|
||||
@ -948,7 +948,7 @@ int mkchstr_parse (const wchar_t *restrict format,
|
||||
flag_other = true;
|
||||
break;
|
||||
|
||||
case '!':
|
||||
case L'!':
|
||||
// Omit the locale-specific currency symbol
|
||||
if (format_spec->flag_nosym) {
|
||||
errno = EINVAL;
|
||||
@ -959,7 +959,7 @@ int mkchstr_parse (const wchar_t *restrict format,
|
||||
flag_other = true;
|
||||
break;
|
||||
|
||||
case '.':
|
||||
case L'.':
|
||||
// Precision flag
|
||||
if (format_spec->flag_prec || count != 0) {
|
||||
errno = EINVAL;
|
||||
@ -970,7 +970,7 @@ int mkchstr_parse (const wchar_t *restrict format,
|
||||
flag_other = true;
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
case L'l':
|
||||
// Long length modifier
|
||||
if (format_spec->flag_long) {
|
||||
// "ll" is NOT supported
|
||||
@ -982,7 +982,7 @@ int mkchstr_parse (const wchar_t *restrict format,
|
||||
flag_other = true;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
case L'c':
|
||||
// Insert a character (char or wchar_t)
|
||||
if (format_spec->flag_group || format_spec->flag_nosym
|
||||
|| format_spec->flag_prec || count != 0) {
|
||||
@ -994,7 +994,7 @@ int mkchstr_parse (const wchar_t *restrict format,
|
||||
TYPE_WCHAR : TYPE_CHAR;
|
||||
goto handlefmt;
|
||||
|
||||
case 'd':
|
||||
case L'd':
|
||||
// Insert an integer (int or long int)
|
||||
if (format_spec->flag_nosym || format_spec->flag_prec
|
||||
|| count != 0) {
|
||||
@ -1006,7 +1006,7 @@ int mkchstr_parse (const wchar_t *restrict format,
|
||||
TYPE_LONGINT : TYPE_INT;
|
||||
goto handlefmt;
|
||||
|
||||
case 'f':
|
||||
case L'f':
|
||||
// Insert a floating-point number (double)
|
||||
if (format_spec->flag_nosym || format_spec->flag_long ||
|
||||
(! format_spec->flag_prec && count != 0)) {
|
||||
@ -1019,7 +1019,7 @@ int mkchstr_parse (const wchar_t *restrict format,
|
||||
arg_type = TYPE_DOUBLE;
|
||||
goto handlefmt;
|
||||
|
||||
case 'N':
|
||||
case L'N':
|
||||
// Insert a monetary amount (double)
|
||||
if (format_spec->flag_group || format_spec->flag_prec
|
||||
|| format_spec->flag_long || count != 0) {
|
||||
@ -1030,7 +1030,7 @@ int mkchstr_parse (const wchar_t *restrict format,
|
||||
arg_type = TYPE_DOUBLE;
|
||||
goto handlefmt;
|
||||
|
||||
case 's':
|
||||
case L's':
|
||||
// Insert a string (const char * or const wchar_t *)
|
||||
if (format_spec->flag_group || format_spec->flag_nosym
|
||||
|| format_spec->flag_prec || count != 0) {
|
||||
@ -1056,7 +1056,7 @@ int mkchstr_parse (const wchar_t *restrict format,
|
||||
|
||||
format_spec->len = format - start;
|
||||
format_spec->arg_num = arg_num;
|
||||
format_spec->spec = wc;
|
||||
format_spec->spec = c;
|
||||
|
||||
arg_num++;
|
||||
num_args = MAX(num_args, arg_num);
|
||||
@ -1147,11 +1147,11 @@ int mkchstr_add (wchar_t *restrict *restrict outbuf,
|
||||
*line = 0;
|
||||
}
|
||||
|
||||
if (**str == '\n') {
|
||||
if (**str == L'\n') {
|
||||
// Start a new line
|
||||
|
||||
if (*line < maxlines - 1) {
|
||||
*(*outbuf)++ = '\n';
|
||||
*(*outbuf)++ = L'\n';
|
||||
*(*attrbuf)++ = 0;
|
||||
(*count)--;
|
||||
}
|
||||
@ -1180,7 +1180,7 @@ int mkchstr_add (wchar_t *restrict *restrict outbuf,
|
||||
// Break on the last space in this line
|
||||
wspc = wcwidth(**lastspc);
|
||||
|
||||
**lastspc = '\n';
|
||||
**lastspc = L'\n';
|
||||
**spcattr = 0;
|
||||
|
||||
widthbuf[*line] = *widthspc;
|
||||
@ -1194,7 +1194,7 @@ int mkchstr_add (wchar_t *restrict *restrict outbuf,
|
||||
} else {
|
||||
// Insert a new-line character (if not on last line)
|
||||
if (*line < maxlines - 1) {
|
||||
*(*outbuf)++ = '\n';
|
||||
*(*outbuf)++ = L'\n';
|
||||
*(*attrbuf)++ = 0;
|
||||
(*count)--;
|
||||
}
|
||||
@ -1212,7 +1212,7 @@ int mkchstr_add (wchar_t *restrict *restrict outbuf,
|
||||
will ever have combining diacritical marks following a
|
||||
(line-breaking) space! */
|
||||
while (iswspace(**str)) {
|
||||
if (*(*str)++ == '\n') {
|
||||
if (*(*str)++ == L'\n') {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1257,7 +1257,7 @@ void mkchstr_conv (chtype *restrict chbuf, int chbufsize,
|
||||
while (! done) {
|
||||
// Make sure we always have enough space for ending shift sequence
|
||||
memcpy(&mbcopy, &mbstate, sizeof(mbstate));
|
||||
endsize = wcrtomb(endbuf, '\0', &mbcopy);
|
||||
endsize = wcrtomb(endbuf, L'\0', &mbcopy);
|
||||
if (endsize == (size_t) -1) {
|
||||
errno_exit(_("mkchstr_conv: NUL"));
|
||||
}
|
||||
@ -1285,7 +1285,7 @@ void mkchstr_conv (chtype *restrict chbuf, int chbufsize,
|
||||
break;
|
||||
}
|
||||
|
||||
done = (*wcbuf == '\0');
|
||||
done = (*wcbuf == L'\0');
|
||||
wcbuf++;
|
||||
attrbuf++;
|
||||
}
|
||||
@ -1352,15 +1352,15 @@ int vmkchstr (chtype *restrict chbuf, int chbufsize, chtype attr_norm,
|
||||
spcattr = NULL; // Equivalent in attrbuf
|
||||
widthspc = 0; // Width of line before last space
|
||||
|
||||
while (*wcformat != '\0' && count > 1 && line < maxlines) {
|
||||
while (*wcformat != L'\0' && count > 1 && line < maxlines) {
|
||||
switch (*wcformat) {
|
||||
case '^':
|
||||
case L'^':
|
||||
// Switch to a different character rendition
|
||||
if (*++wcformat == '\0') {
|
||||
if (*++wcformat == L'\0') {
|
||||
goto error_inval;
|
||||
} else {
|
||||
switch (*wcformat) {
|
||||
case '^':
|
||||
case L'^':
|
||||
if (mkchstr_add(&outbuf, &attrbuf, &count, curattr,
|
||||
maxlines, maxwidth, &line, &width,
|
||||
&lastspc, &spcattr, &widthspc, widthbuf,
|
||||
@ -1369,18 +1369,18 @@ int vmkchstr (chtype *restrict chbuf, int chbufsize, chtype attr_norm,
|
||||
}
|
||||
break;
|
||||
|
||||
case '{':
|
||||
case L'{':
|
||||
curattr = attr_alt1;
|
||||
wcformat++;
|
||||
break;
|
||||
|
||||
case '[':
|
||||
case L'[':
|
||||
curattr = attr_alt2;
|
||||
wcformat++;
|
||||
break;
|
||||
|
||||
case '}':
|
||||
case ']':
|
||||
case L'}':
|
||||
case L']':
|
||||
curattr = attr_norm;
|
||||
wcformat++;
|
||||
break;
|
||||
@ -1391,11 +1391,11 @@ int vmkchstr (chtype *restrict chbuf, int chbufsize, chtype attr_norm,
|
||||
}
|
||||
break;
|
||||
|
||||
case '%':
|
||||
case L'%':
|
||||
// Process a conversion specifier
|
||||
if (*++wcformat == '\0') {
|
||||
if (*++wcformat == L'\0') {
|
||||
goto error_inval;
|
||||
} else if (*wcformat == '%') {
|
||||
} else if (*wcformat == L'%') {
|
||||
if (mkchstr_add(&outbuf, &attrbuf, &count, curattr, maxlines,
|
||||
maxwidth, &line, &width, &lastspc, &spcattr,
|
||||
&widthspc, widthbuf, widthbufsize, &wcformat)
|
||||
@ -1408,7 +1408,7 @@ int vmkchstr (chtype *restrict chbuf, int chbufsize, chtype attr_norm,
|
||||
wint_t wc;
|
||||
|
||||
switch (spec->spec) {
|
||||
case 'c':
|
||||
case L'c':
|
||||
// Insert a character (char or wchar_t) into the output
|
||||
if (spec->flag_long) {
|
||||
wc = format_arg[spec->arg_num].a.a_wchar;
|
||||
@ -1416,17 +1416,17 @@ int vmkchstr (chtype *restrict chbuf, int chbufsize, chtype attr_norm,
|
||||
wc = btowc(format_arg[spec->arg_num].a.a_char);
|
||||
}
|
||||
|
||||
if (wc == '\0' || wc == WEOF) {
|
||||
if (wc == L'\0' || wc == WEOF) {
|
||||
wc = EILSEQ_REPL_WC;
|
||||
}
|
||||
|
||||
fmtbuf[0] = wc;
|
||||
fmtbuf[1] = '\0';
|
||||
fmtbuf[1] = L'\0';
|
||||
|
||||
str = fmtbuf;
|
||||
goto insertstr;
|
||||
|
||||
case 'd':
|
||||
case L'd':
|
||||
// Insert an integer (int or long int) into the output
|
||||
if (spec->flag_long) {
|
||||
if (swprintf(fmtbuf, BUFSIZE, spec->flag_group ?
|
||||
@ -1443,7 +1443,7 @@ int vmkchstr (chtype *restrict chbuf, int chbufsize, chtype attr_norm,
|
||||
str = fmtbuf;
|
||||
goto insertstr;
|
||||
|
||||
case 'f':
|
||||
case L'f':
|
||||
// Insert a floating-point number (double) into the output
|
||||
if (spec->flag_prec) {
|
||||
if (swprintf(fmtbuf, BUFSIZE, spec->flag_group ?
|
||||
@ -1460,7 +1460,7 @@ int vmkchstr (chtype *restrict chbuf, int chbufsize, chtype attr_norm,
|
||||
str = fmtbuf;
|
||||
goto insertstr;
|
||||
|
||||
case 'N':
|
||||
case L'N':
|
||||
// Insert a monetary amount (double) into the output
|
||||
{
|
||||
/* strfmon() is not available in a wide-char
|
||||
@ -1482,7 +1482,7 @@ int vmkchstr (chtype *restrict chbuf, int chbufsize, chtype attr_norm,
|
||||
str = fmtbuf;
|
||||
goto insertstr;
|
||||
|
||||
case 's':
|
||||
case L's':
|
||||
// Insert a string (const char * or const wchar_t *)
|
||||
if (spec->flag_long) {
|
||||
str = format_arg[spec->arg_num].a.a_wstring;
|
||||
@ -1502,7 +1502,7 @@ int vmkchstr (chtype *restrict chbuf, int chbufsize, chtype attr_norm,
|
||||
|
||||
insertstr:
|
||||
// Insert the string pointed to by str
|
||||
while (*str != '\0' && count > 1 && line < maxlines) {
|
||||
while (*str != L'\0' && count > 1 && line < maxlines) {
|
||||
if (mkchstr_add(&outbuf, &attrbuf, &count, curattr,
|
||||
maxlines, maxwidth, &line, &width,
|
||||
&lastspc, &spcattr, &widthspc,
|
||||
@ -1531,7 +1531,7 @@ int vmkchstr (chtype *restrict chbuf, int chbufsize, chtype attr_norm,
|
||||
}
|
||||
}
|
||||
|
||||
*outbuf = '\0'; // Terminating NUL character
|
||||
*outbuf = L'\0'; // Terminating NUL character
|
||||
*attrbuf = 0;
|
||||
|
||||
if (line >= 0 && line < maxlines) {
|
||||
@ -1578,7 +1578,7 @@ int leftch (WINDOW *win, int y, int x, const chtype *restrict chstr,
|
||||
assert(widthbuf != NULL);
|
||||
|
||||
wmove(win, y, x);
|
||||
for ( ; *chstr != '\0'; chstr++) {
|
||||
for ( ; *chstr != 0; chstr++) {
|
||||
if (*chstr == '\n') {
|
||||
wmove(win, getcury(win) + 1, x);
|
||||
} else {
|
||||
@ -1605,7 +1605,7 @@ int centerch (WINDOW *win, int y, int offset, const chtype *restrict chstr,
|
||||
assert(widthbuf != NULL);
|
||||
|
||||
wmove(win, y, (getmaxx(win) - widthbuf[ln]) / 2 + offset);
|
||||
for ( ; *chstr != '\0'; chstr++) {
|
||||
for ( ; *chstr != 0; chstr++) {
|
||||
if (*chstr == '\n') {
|
||||
if (ln++ >= lines) {
|
||||
return ERR;
|
||||
@ -1637,7 +1637,7 @@ int rightch (WINDOW *win, int y, int x, const chtype *restrict chstr,
|
||||
assert(widthbuf != NULL);
|
||||
|
||||
wmove(win, y, x - widthbuf[ln]);
|
||||
for ( ; *chstr != '\0'; chstr++) {
|
||||
for ( ; *chstr != 0; chstr++) {
|
||||
if (*chstr == '\n') {
|
||||
if (ln++ >= lines) {
|
||||
return ERR;
|
||||
@ -1828,10 +1828,10 @@ int gettxchar (WINDOW *win, wint_t *wch)
|
||||
|
||||
|
||||
/***********************************************************************/
|
||||
// cpos_endl: Adjust cpos and st for printing the ending part of buf
|
||||
// cpos_end: Adjust cpos and st for printing the ending part of buf
|
||||
|
||||
void cpos_endl (wchar_t *restrict buf, int *restrict cpos, int *restrict st,
|
||||
int clen, int width, int len)
|
||||
void cpos_end (const wchar_t *restrict buf, int *restrict cpos,
|
||||
int *restrict st, int clen, int width, int len)
|
||||
{
|
||||
*cpos = MIN(clen, width - 1);
|
||||
|
||||
@ -1862,10 +1862,10 @@ void cpos_endl (wchar_t *restrict buf, int *restrict cpos, int *restrict st,
|
||||
|
||||
|
||||
/***********************************************************************/
|
||||
// cpos_decr: Adjust cpos and st: scroll to the left by w columns
|
||||
// cpos_dec: Adjust cpos and st: scroll to the left by w columns
|
||||
|
||||
void cpos_decr (wchar_t *restrict buf, int *restrict cpos, int *restrict st,
|
||||
int w, int width)
|
||||
void cpos_dec (const wchar_t *restrict buf, int *restrict cpos,
|
||||
int *restrict st, int w, int width)
|
||||
{
|
||||
if (*cpos > 0) {
|
||||
// Cursor position is not yet in first column
|
||||
@ -1886,10 +1886,10 @@ void cpos_decr (wchar_t *restrict buf, int *restrict cpos, int *restrict st,
|
||||
|
||||
|
||||
/***********************************************************************/
|
||||
// cpos_incr: Adjust cpos and st: scroll to the right by w columns
|
||||
// cpos_inc: Adjust cpos and st: scroll to the right by w columns
|
||||
|
||||
void cpos_incr (wchar_t *restrict buf, int *restrict cpos, int *restrict st,
|
||||
int w, int width)
|
||||
void cpos_inc (const wchar_t *restrict buf, int *restrict cpos,
|
||||
int *restrict st, int w, int width)
|
||||
{
|
||||
if (*cpos + w <= width - 1) {
|
||||
// Cursor position is not yet in second-last column
|
||||
@ -1953,7 +1953,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
}
|
||||
|
||||
// Find the point from which buf should be displayed to screen
|
||||
cpos_endl(buf, &cpos, &st, clen, width, len);
|
||||
cpos_end(buf, &cpos, &st, clen, width, len);
|
||||
|
||||
redraw = true;
|
||||
done = false;
|
||||
@ -1996,7 +1996,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
buf);
|
||||
}
|
||||
|
||||
cpos_endl(buf, &cpos, &st, clen, width, len);
|
||||
cpos_end(buf, &cpos, &st, clen, width, len);
|
||||
|
||||
mod = true;
|
||||
redraw = true;
|
||||
@ -2020,7 +2020,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
pos++;
|
||||
|
||||
clen += w;
|
||||
cpos_incr(buf, &cpos, &st, w, width);
|
||||
cpos_inc(buf, &cpos, &st, w, width);
|
||||
|
||||
mod = true;
|
||||
redraw = true;
|
||||
@ -2113,7 +2113,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
beep();
|
||||
} else {
|
||||
pos--;
|
||||
cpos_decr(buf, &cpos, &st, wcwidth(buf[pos]), width);
|
||||
cpos_dec(buf, &cpos, &st, wcwidth(buf[pos]), width);
|
||||
redraw = true;
|
||||
}
|
||||
break;
|
||||
@ -2125,7 +2125,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
beep();
|
||||
} else {
|
||||
pos++;
|
||||
cpos_incr(buf, &cpos, &st, wcwidth(buf[pos - 1]), width);
|
||||
cpos_inc(buf, &cpos, &st, wcwidth(buf[pos - 1]), width);
|
||||
redraw = true;
|
||||
}
|
||||
break;
|
||||
@ -2143,7 +2143,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
case KEY_CTRL('E'):
|
||||
// Move cursor to end of string
|
||||
pos = len;
|
||||
cpos_endl(buf, &cpos, &st, clen, width, len);
|
||||
cpos_end(buf, &cpos, &st, clen, width, len);
|
||||
redraw = true;
|
||||
break;
|
||||
|
||||
@ -2151,7 +2151,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
// Move cursor to start of current or previous word
|
||||
while (pos > 0 && ! iswalnum(buf[pos - 1])) {
|
||||
pos--;
|
||||
cpos_decr(buf, &cpos, &st, wcwidth(buf[pos]), width);
|
||||
cpos_dec(buf, &cpos, &st, wcwidth(buf[pos]), width);
|
||||
}
|
||||
while (pos > 0 && (iswalnum(buf[pos - 1])
|
||||
|| (pos > 1 && wcwidth(buf[pos - 1]) == 0
|
||||
@ -2159,7 +2159,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
/* Treat zero-width characters preceded by an
|
||||
alphanumeric character as alphanumeric. */
|
||||
pos--;
|
||||
cpos_decr(buf, &cpos, &st, wcwidth(buf[pos]), width);
|
||||
cpos_dec(buf, &cpos, &st, wcwidth(buf[pos]), width);
|
||||
}
|
||||
redraw = true;
|
||||
break;
|
||||
@ -2168,14 +2168,14 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
// Move cursor to end of current or next word
|
||||
while (pos < len && ! iswalnum(buf[pos])) {
|
||||
pos++;
|
||||
cpos_incr(buf, &cpos, &st, wcwidth(buf[pos - 1]), width);
|
||||
cpos_inc(buf, &cpos, &st, wcwidth(buf[pos - 1]), width);
|
||||
}
|
||||
while (pos < len
|
||||
&& (iswalnum(buf[pos]) || wcwidth(buf[pos]) == 0)) {
|
||||
/* Treat zero-width characters following an
|
||||
alphanumeric character as alphanumeric. */
|
||||
pos++;
|
||||
cpos_incr(buf, &cpos, &st, wcwidth(buf[pos - 1]), width);
|
||||
cpos_inc(buf, &cpos, &st, wcwidth(buf[pos - 1]), width);
|
||||
}
|
||||
redraw = true;
|
||||
break;
|
||||
@ -2194,7 +2194,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
len--;
|
||||
pos--;
|
||||
clen -= w;
|
||||
cpos_decr(buf, &cpos, &st, w, width);
|
||||
cpos_dec(buf, &cpos, &st, w, width);
|
||||
mod = true;
|
||||
redraw = true;
|
||||
}
|
||||
@ -2282,13 +2282,13 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
i--;
|
||||
int w = wcwidth(buf[i]);
|
||||
ww += w;
|
||||
cpos_decr(buf, &cpos, &st, w, width);
|
||||
cpos_dec(buf, &cpos, &st, w, width);
|
||||
}
|
||||
while (i > 0 && ! iswspace(buf[i - 1])) {
|
||||
i--;
|
||||
int w = wcwidth(buf[i]);
|
||||
ww += w;
|
||||
cpos_decr(buf, &cpos, &st, w, width);
|
||||
cpos_dec(buf, &cpos, &st, w, width);
|
||||
}
|
||||
|
||||
wmemmove(buf + i, buf + pos, len - pos + 1);
|
||||
@ -2320,7 +2320,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
buf[pos - 1] = c;
|
||||
|
||||
pos++;
|
||||
cpos_incr(buf, &cpos, &st, w, width);
|
||||
cpos_inc(buf, &cpos, &st, w, width);
|
||||
|
||||
mod = true;
|
||||
redraw = true;
|
||||
@ -2358,7 +2358,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
// Move cursor to start of current or previous word
|
||||
while (pos > 0 && ! iswalnum(buf[pos - 1])) {
|
||||
pos--;
|
||||
cpos_decr(buf, &cpos, &st, wcwidth(buf[pos]),
|
||||
cpos_dec(buf, &cpos, &st, wcwidth(buf[pos]),
|
||||
width);
|
||||
}
|
||||
while (pos > 0 && (iswalnum(buf[pos - 1])
|
||||
@ -2368,7 +2368,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
/* Treat zero-width characters preceded by an
|
||||
alphanumeric character as alphanumeric. */
|
||||
pos--;
|
||||
cpos_decr(buf, &cpos, &st, wcwidth(buf[pos]),
|
||||
cpos_dec(buf, &cpos, &st, wcwidth(buf[pos]),
|
||||
width);
|
||||
}
|
||||
redraw = true;
|
||||
@ -2379,7 +2379,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
// Move cursor to end of current or next word
|
||||
while (pos < len && ! iswalnum(buf[pos])) {
|
||||
pos++;
|
||||
cpos_incr(buf, &cpos, &st,
|
||||
cpos_inc(buf, &cpos, &st,
|
||||
wcwidth(buf[pos - 1]), width);
|
||||
}
|
||||
while (pos < len
|
||||
@ -2388,7 +2388,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
/* Treat zero-width characters following an
|
||||
alphanumeric character as alphanumeric. */
|
||||
pos++;
|
||||
cpos_incr(buf, &cpos, &st,
|
||||
cpos_inc(buf, &cpos, &st,
|
||||
wcwidth(buf[pos - 1]), width);
|
||||
}
|
||||
redraw = true;
|
||||
@ -2436,7 +2436,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
pos--;
|
||||
int w = wcwidth(buf[pos]);
|
||||
ww += w;
|
||||
cpos_decr(buf, &cpos, &st, w, width);
|
||||
cpos_dec(buf, &cpos, &st, w, width);
|
||||
}
|
||||
while (i < len && iswspace(buf[i])) {
|
||||
i++;
|
||||
@ -2461,7 +2461,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
|
||||
int w = wcwidth(c);
|
||||
clen += w;
|
||||
cpos_incr(buf, &cpos, &st, w, width);
|
||||
cpos_inc(buf, &cpos, &st, w, width);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2477,7 +2477,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
// Convert word (from cursor onwards) to upper case
|
||||
while (pos < len && ! iswalnum(buf[pos])) {
|
||||
pos++;
|
||||
cpos_incr(buf, &cpos, &st,
|
||||
cpos_inc(buf, &cpos, &st,
|
||||
wcwidth(buf[pos - 1]), width);
|
||||
}
|
||||
while (pos < len
|
||||
@ -2485,7 +2485,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
|| wcwidth(buf[pos]) == 0)) {
|
||||
buf[pos] = towupper(buf[pos]);
|
||||
pos++;
|
||||
cpos_incr(buf, &cpos, &st,
|
||||
cpos_inc(buf, &cpos, &st,
|
||||
wcwidth(buf[pos - 1]), width);
|
||||
}
|
||||
mod = true;
|
||||
@ -2497,7 +2497,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
// Convert word (from cursor onwards) to lower case
|
||||
while (pos < len && ! iswalnum(buf[pos])) {
|
||||
pos++;
|
||||
cpos_incr(buf, &cpos, &st,
|
||||
cpos_inc(buf, &cpos, &st,
|
||||
wcwidth(buf[pos - 1]), width);
|
||||
}
|
||||
while (pos < len
|
||||
@ -2505,7 +2505,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
|| wcwidth(buf[pos]) == 0)) {
|
||||
buf[pos] = towlower(buf[pos]);
|
||||
pos++;
|
||||
cpos_incr(buf, &cpos, &st,
|
||||
cpos_inc(buf, &cpos, &st,
|
||||
wcwidth(buf[pos - 1]), width);
|
||||
}
|
||||
mod = true;
|
||||
@ -2520,7 +2520,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
bool first = true;
|
||||
while (pos < len && ! iswalnum(buf[pos])) {
|
||||
pos++;
|
||||
cpos_incr(buf, &cpos, &st,
|
||||
cpos_inc(buf, &cpos, &st,
|
||||
wcwidth(buf[pos - 1]), width);
|
||||
}
|
||||
while (pos < len
|
||||
@ -2533,7 +2533,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
buf[pos] = towlower(buf[pos]);
|
||||
}
|
||||
pos++;
|
||||
cpos_incr(buf, &cpos, &st,
|
||||
cpos_inc(buf, &cpos, &st,
|
||||
wcwidth(buf[pos - 1]), width);
|
||||
}
|
||||
mod = true;
|
||||
@ -2564,7 +2564,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
i--;
|
||||
int w = wcwidth(buf[i]);
|
||||
ww += w;
|
||||
cpos_decr(buf, &cpos, &st, w, width);
|
||||
cpos_dec(buf, &cpos, &st, w, width);
|
||||
}
|
||||
while (i > 0
|
||||
&& (iswalnum(buf[i - 1])
|
||||
@ -2575,7 +2575,7 @@ int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
i--;
|
||||
int w = wcwidth(buf[i]);
|
||||
ww += w;
|
||||
cpos_decr(buf, &cpos, &st, w, width);
|
||||
cpos_dec(buf, &cpos, &st, w, width);
|
||||
}
|
||||
|
||||
wmemmove(buf + i, buf + pos, len - pos + 1);
|
||||
@ -2654,7 +2654,7 @@ int gettxstr (WINDOW *win, wchar_t *restrict *restrict bufptr,
|
||||
// Allocate the result buffer if needed
|
||||
if (*bufptr == NULL) {
|
||||
*bufptr = xmalloc(BUFSIZE * sizeof(wchar_t));
|
||||
**bufptr = '\0';
|
||||
**bufptr = L'\0';
|
||||
}
|
||||
|
||||
return gettxline(win, *bufptr, BUFSIZE, modified, multifield, L"", L"",
|
||||
@ -2665,13 +2665,14 @@ int gettxstr (WINDOW *win, wchar_t *restrict *restrict bufptr,
|
||||
/***********************************************************************/
|
||||
// txinput_fixup: Copy strings with fixup
|
||||
|
||||
void txinput_fixup (wchar_t *restrict dest, wchar_t *restrict src, bool isfloat)
|
||||
void txinput_fixup (wchar_t *restrict dest, const wchar_t *restrict src,
|
||||
bool isfloat)
|
||||
{
|
||||
assert(src != NULL);
|
||||
assert(dest != NULL);
|
||||
|
||||
wcsncpy(dest, src, BUFSIZE - 1);
|
||||
dest[BUFSIZE - 1] = '\0';
|
||||
dest[BUFSIZE - 1] = L'\0';
|
||||
|
||||
// Replace mon_decimal_point with decimal_point if these are different
|
||||
if (isfloat) {
|
||||
|
@ -597,7 +597,7 @@ extern int gettxchar (WINDOW *win, wint_t *wch);
|
||||
attr - Character rendition to use for input field
|
||||
Returns: int - Status code: OK, ERR or KEY_ keycode
|
||||
|
||||
This low-level function shows an input field width column spaces long
|
||||
This low-level function shows an input field width column-spaces long
|
||||
using attr as the character rendition, then reads a line of input from
|
||||
the keyboard and places it into the preallocated buffer buf[] of size
|
||||
bufsize. On entry, buf[] must contain a valid string; this string is
|
||||
@ -633,7 +633,7 @@ extern int gettxchar (WINDOW *win, wint_t *wch);
|
||||
|
||||
If allowed is not NULL, only characters in that string are allowed to
|
||||
be entered into the input line. For example, if allowed points to
|
||||
"0123456789abcdefABCDEF", only those characters would be allowed (in
|
||||
L"0123456789abcdefABCDEF", only those characters would be allowed (in
|
||||
this instance, allowing the user to type in a hexadecimal number).
|
||||
|
||||
Note that the character rendition (attributes) in attr may contain a
|
||||
@ -667,7 +667,7 @@ extern int gettxline (WINDOW *win, wchar_t *restrict buf, int bufsize,
|
||||
malloc(); this buffer is used to store and return the input line.
|
||||
|
||||
Apart from bufptr, all parameters are as used for gettxline(). The
|
||||
gettxline() parameters emptyval and defaultval are passed as "",
|
||||
gettxline() parameters emptyval and defaultval are passed as L"",
|
||||
allowed is NULL and stripspc is true.
|
||||
*/
|
||||
extern int gettxstr (WINDOW *win, wchar_t *restrict *restrict bufptr,
|
||||
|
26
src/move.c
26
src/move.c
@ -263,7 +263,7 @@ selection_t get_move (void)
|
||||
key = towlower(key);
|
||||
}
|
||||
|
||||
for (i = 0, found = false; keycode_game_move[i] != '\0'; i++) {
|
||||
for (i = 0, found = false; keycode_game_move[i] != L'\0'; i++) {
|
||||
if (keycode_game_move[i] == key) {
|
||||
found = true;
|
||||
selection = i;
|
||||
@ -282,13 +282,13 @@ selection_t get_move (void)
|
||||
|
||||
if (! found) {
|
||||
switch (key) {
|
||||
case '1':
|
||||
case L'1':
|
||||
curs_set(CURS_OFF);
|
||||
show_status(current_player);
|
||||
curs_set(CURS_ON);
|
||||
break;
|
||||
|
||||
case '2':
|
||||
case L'2':
|
||||
selection = SEL_BANKRUPT;
|
||||
|
||||
curs_set(CURS_OFF);
|
||||
@ -297,7 +297,7 @@ selection_t get_move (void)
|
||||
_("^{<2>^} (Declare bankruptcy)"));
|
||||
break;
|
||||
|
||||
case '3':
|
||||
case L'3':
|
||||
selection = SEL_SAVE;
|
||||
|
||||
curs_set(CURS_OFF);
|
||||
@ -396,12 +396,12 @@ selection_t get_move (void)
|
||||
|
||||
if (gettxchar(curwin, &key) == OK) {
|
||||
// Ordinary wide character
|
||||
if (key >= '1' && key <= '9') {
|
||||
if (key >= L'1' && key <= L'9') {
|
||||
left(curwin, getcury(curwin), getcurx(curwin),
|
||||
A_BOLD, 0, 0, 1, "%lc", key);
|
||||
wrefresh(curwin);
|
||||
|
||||
choice = key - '0';
|
||||
choice = key - L'0';
|
||||
done = true;
|
||||
} else {
|
||||
beep();
|
||||
@ -504,13 +504,13 @@ void process_move (selection_t selection)
|
||||
|
||||
assign_vals(x, y, left, right, up, down);
|
||||
|
||||
if (left == MAP_EMPTY && right == MAP_EMPTY &&
|
||||
up == MAP_EMPTY && down == MAP_EMPTY) {
|
||||
if ( left == MAP_EMPTY && right == MAP_EMPTY
|
||||
&& up == MAP_EMPTY && down == MAP_EMPTY) {
|
||||
// The position is out in the middle of nowhere...
|
||||
galaxy_map[x][y] = MAP_OUTPOST;
|
||||
|
||||
} else if (! IS_MAP_COMPANY(left) && ! IS_MAP_COMPANY(right)
|
||||
&& ! IS_MAP_COMPANY(up) && ! IS_MAP_COMPANY(down)) {
|
||||
} else if ( ! IS_MAP_COMPANY(left) && ! IS_MAP_COMPANY(right)
|
||||
&& ! IS_MAP_COMPANY(up) && ! IS_MAP_COMPANY(down)) {
|
||||
// See if a company can be established
|
||||
try_start_new_company(x, y);
|
||||
|
||||
@ -770,6 +770,9 @@ void merge_companies (map_val_t a, map_val_t b)
|
||||
int aa = MAP_TO_COMPANY(a);
|
||||
int bb = MAP_TO_COMPANY(b);
|
||||
|
||||
assert(aa >= 0 && aa < MAX_COMPANIES);
|
||||
assert(bb >= 0 && bb < MAX_COMPANIES);
|
||||
|
||||
double val_aa = company[aa].share_price * company[aa].stock_issued *
|
||||
company[aa].share_return;
|
||||
double val_bb = company[bb].share_price * company[bb].stock_issued *
|
||||
@ -1137,7 +1140,8 @@ void adjust_values (void)
|
||||
// Give the current player the companies' dividends
|
||||
for (int i = 0; i < MAX_COMPANIES; i++) {
|
||||
if (company[i].on_map && company[i].stock_issued != 0) {
|
||||
player[current_player].cash += player[current_player].stock_owned[i]
|
||||
player[current_player].cash +=
|
||||
player[current_player].stock_owned[i]
|
||||
* company[i].share_price * company[i].share_return
|
||||
+ ((double) player[current_player].stock_owned[i]
|
||||
/ company[i].stock_issued) * company[i].share_price
|
||||
|
@ -248,8 +248,8 @@ void process_cmdline (int argc, char *argv[])
|
||||
|
||||
if (optind < argc && argv[optind] != NULL) {
|
||||
if (*argv[optind] == '-') {
|
||||
fprintf(stderr, _("%s: invalid operand `%s'\n"), program_name,
|
||||
argv[optind]);
|
||||
fprintf(stderr, _("%s: invalid operand `%s'\n"),
|
||||
program_name, argv[optind]);
|
||||
show_usage(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
18
src/utils.c
18
src/utils.c
@ -83,7 +83,7 @@ static bool add_currency_symbol = false; // Do we need to add "$"?
|
||||
/***********************************************************************/
|
||||
// init_program_name: Make the program name canonical
|
||||
|
||||
void init_program_name (char *argv0)
|
||||
void init_program_name (const char *argv0)
|
||||
{
|
||||
/* This implementation assumes a POSIX environment with an ASCII-safe
|
||||
character encoding (such as ASCII or UTF-8). */
|
||||
@ -109,7 +109,7 @@ const char *home_directory (void)
|
||||
{
|
||||
if (home_directory_str == NULL) {
|
||||
// Use the HOME environment variable where possible
|
||||
char *home = getenv("HOME");
|
||||
const char *home = getenv("HOME");
|
||||
|
||||
if (home != NULL && *home != '\0') {
|
||||
home_directory_str = xstrdup(home);
|
||||
@ -354,7 +354,7 @@ void init_locale (void)
|
||||
/***********************************************************************/
|
||||
// l_strfmon: Convert monetary value to a string
|
||||
|
||||
ssize_t l_strfmon (char *restrict s, size_t maxsize,
|
||||
ssize_t l_strfmon (char *restrict buf, size_t maxsize,
|
||||
const char *restrict format, double val)
|
||||
{
|
||||
/* The current implementation assumes MOD_POSIX_P_CS_PRECEDES is 1
|
||||
@ -365,7 +365,7 @@ ssize_t l_strfmon (char *restrict s, size_t maxsize,
|
||||
assert(MOD_POSIX_P_CS_PRECEDES == 1);
|
||||
assert(MOD_POSIX_P_SEP_BY_SPACE == 0);
|
||||
|
||||
ssize_t ret = strfmon(s, maxsize, format, val);
|
||||
ssize_t ret = strfmon(buf, maxsize, format, val);
|
||||
|
||||
if (ret > 0 && add_currency_symbol) {
|
||||
if (strstr(format, "!") == NULL) {
|
||||
@ -382,7 +382,7 @@ ssize_t l_strfmon (char *restrict s, size_t maxsize,
|
||||
assert(maxsize > (unsigned int) symlen);
|
||||
|
||||
// Count number of leading spaces
|
||||
for (p = s, spc = 0; *p == ' '; p++, spc++)
|
||||
for (p = buf, spc = 0; *p == ' '; p++, spc++)
|
||||
;
|
||||
|
||||
if (symlen <= spc) {
|
||||
@ -394,12 +394,12 @@ ssize_t l_strfmon (char *restrict s, size_t maxsize,
|
||||
} else {
|
||||
// Make space for currency symbol, then copy it
|
||||
|
||||
memmove(s + symlen - spc, s, maxsize - (symlen - spc));
|
||||
s[maxsize - 1] = '\0';
|
||||
memmove(buf + symlen - spc, buf, maxsize - (symlen - spc));
|
||||
buf[maxsize - 1] = '\0';
|
||||
|
||||
for ( ; *sym != '\0'; sym++, s++) {
|
||||
for ( ; *sym != '\0'; sym++, buf++) {
|
||||
// Make sure terminating NUL character is NOT copied!
|
||||
*s = *sym;
|
||||
*buf = *sym;
|
||||
}
|
||||
|
||||
ret = MIN((unsigned int) ret + symlen - spc, maxsize - 1);
|
||||
|
@ -70,7 +70,7 @@ extern wchar_t *mon_thousands_sep; // Local monetary thousands separator
|
||||
|
||||
/*
|
||||
Function: init_program_name - Make the program name canonical
|
||||
Parameters: argv0 - Same as passed to main()
|
||||
Parameters: argv0 - Same as passed to main() as argv[0]
|
||||
Returns: (nothing)
|
||||
|
||||
This function modifies the argv0 pointer to eliminate any leading
|
||||
@ -78,7 +78,7 @@ extern wchar_t *mon_thousands_sep; // Local monetary thousands separator
|
||||
basename of the program. It also saves a copy that can be accessed via
|
||||
the program_name global variable.
|
||||
*/
|
||||
extern void init_program_name (char *argv0);
|
||||
extern void init_program_name (const char *argv0);
|
||||
|
||||
|
||||
/*
|
||||
@ -239,7 +239,7 @@ extern void init_locale (void);
|
||||
|
||||
/*
|
||||
Function: l_strfmon - Convert monetary value to a string
|
||||
Parameters: s - Buffer to receive result
|
||||
Parameters: buf - Buffer to receive result
|
||||
maxsize - Maximum size of buffer
|
||||
format - strfmon() format to use
|
||||
val - Monetary value to convert
|
||||
@ -251,7 +251,7 @@ extern void init_locale (void);
|
||||
function overcomes the limitation that the POSIX locale does not define
|
||||
anything for localeconv()->currency_symbol.
|
||||
*/
|
||||
extern ssize_t l_strfmon (char *restrict s, size_t maxsize,
|
||||
extern ssize_t l_strfmon (char *restrict buf, size_t maxsize,
|
||||
const char *restrict format, double val);
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user