introduce a tobool(cond) abstraction¹ and switch bool to char if !stdbool.h
① currently: ((cond) ? true : false) but (!!(cond)) and casting to bool, the latter only if stdbool.h, would also work – which performs best on (and across) all supported systems?
This commit is contained in:
4
edit.c
4
edit.c
@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.204 2011/02/09 13:08:16 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.205 2011/03/07 20:30:35 tg Exp $");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* in later versions we might use libtermcap for this, but since external
|
* in later versions we might use libtermcap for this, but since external
|
||||||
@ -2444,7 +2444,7 @@ x_bind(const char *a1, const char *a2,
|
|||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
#ifndef MKSH_SMALL
|
#ifndef MKSH_SMALL
|
||||||
hastilde = *m1;
|
hastilde = tobool(*m1);
|
||||||
#endif
|
#endif
|
||||||
afree(m2, ATEMP);
|
afree(m2, ATEMP);
|
||||||
|
|
||||||
|
7
eval.c
7
eval.c
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/eval.c,v 1.94 2011/01/21 22:25:32 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/eval.c,v 1.95 2011/03/07 20:30:36 tg Exp $");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* string expansion
|
* string expansion
|
||||||
@ -507,8 +507,9 @@ expand(const char *cp, /* input word */
|
|||||||
while (p >= sbeg) {
|
while (p >= sbeg) {
|
||||||
bool gotmatch;
|
bool gotmatch;
|
||||||
|
|
||||||
c = *p; *p = '\0';
|
c = *p;
|
||||||
gotmatch = gmatchx(sbeg, tpat0, false);
|
*p = '\0';
|
||||||
|
gotmatch = tobool(gmatchx(sbeg, tpat0, false));
|
||||||
*p = c;
|
*p = c;
|
||||||
if (gotmatch)
|
if (gotmatch)
|
||||||
break;
|
break;
|
||||||
|
8
funcs.c
8
funcs.c
@ -38,7 +38,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.174 2011/03/05 21:48:08 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.175 2011/03/07 20:30:37 tg Exp $");
|
||||||
|
|
||||||
#if HAVE_KILLPG
|
#if HAVE_KILLPG
|
||||||
/*
|
/*
|
||||||
@ -381,7 +381,7 @@ int
|
|||||||
c_cd(const char **wp)
|
c_cd(const char **wp)
|
||||||
{
|
{
|
||||||
int optc, rv, phys_path;
|
int optc, rv, phys_path;
|
||||||
bool physical = Flag(FPHYSICAL) ? true : false;
|
bool physical = tobool(Flag(FPHYSICAL));
|
||||||
/* was a node from cdpath added in? */
|
/* was a node from cdpath added in? */
|
||||||
int cdnode;
|
int cdnode;
|
||||||
/* print where we cd'd? */
|
/* print where we cd'd? */
|
||||||
@ -539,7 +539,7 @@ int
|
|||||||
c_pwd(const char **wp)
|
c_pwd(const char **wp)
|
||||||
{
|
{
|
||||||
int optc;
|
int optc;
|
||||||
bool physical = Flag(FPHYSICAL) ? true : false;
|
bool physical = tobool(Flag(FPHYSICAL));
|
||||||
char *p, *allocd = NULL;
|
char *p, *allocd = NULL;
|
||||||
|
|
||||||
while ((optc = ksh_getopt(wp, &builtin_opt, "LP")) != -1)
|
while ((optc = ksh_getopt(wp, &builtin_opt, "LP")) != -1)
|
||||||
@ -1112,7 +1112,7 @@ c_typeset(const char **wp)
|
|||||||
for (i = builtin_opt.optind; wp[i]; i++) {
|
for (i = builtin_opt.optind; wp[i]; i++) {
|
||||||
if (func) {
|
if (func) {
|
||||||
f = findfunc(wp[i], hash(wp[i]),
|
f = findfunc(wp[i], hash(wp[i]),
|
||||||
(fset&UCASEV_AL) ? true : false);
|
tobool(fset & UCASEV_AL));
|
||||||
if (!f) {
|
if (!f) {
|
||||||
/* AT&T ksh does ++rv: bogus */
|
/* AT&T ksh does ++rv: bogus */
|
||||||
rv = 1;
|
rv = 1;
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
#include <sys/file.h>
|
#include <sys/file.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/histrap.c,v 1.107 2011/02/09 19:32:15 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/histrap.c,v 1.108 2011/03/07 20:30:38 tg Exp $");
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* MirOS: This is the default mapping type, and need not be specified.
|
* MirOS: This is the default mapping type, and need not be specified.
|
||||||
@ -204,7 +204,7 @@ c_fc(const char **wp)
|
|||||||
* when range is specified; AT&T ksh and pdksh allow out
|
* when range is specified; AT&T ksh and pdksh allow out
|
||||||
* of bounds for -l as well.
|
* of bounds for -l as well.
|
||||||
*/
|
*/
|
||||||
hfirst = hist_get(first, (lflag || last) ? true : false, lflag);
|
hfirst = hist_get(first, tobool(lflag || last), lflag);
|
||||||
if (!hfirst)
|
if (!hfirst)
|
||||||
return (1);
|
return (1);
|
||||||
hlast = last ? hist_get(last, true, lflag) :
|
hlast = last ? hist_get(last, true, lflag) :
|
||||||
|
10
lex.c
10
lex.c
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/lex.c,v 1.127 2011/03/07 20:09:34 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/lex.c,v 1.128 2011/03/07 20:30:39 tg Exp $");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* states while lexing word
|
* states while lexing word
|
||||||
@ -54,7 +54,7 @@ __RCSID("$MirOS: src/bin/mksh/lex.c,v 1.127 2011/03/07 20:09:34 tg Exp $");
|
|||||||
typedef struct lex_state {
|
typedef struct lex_state {
|
||||||
union {
|
union {
|
||||||
/* point to the next state block */
|
/* point to the next state block */
|
||||||
Lex_state *base;
|
struct lex_state *base;
|
||||||
/* marks start of $(( in output string */
|
/* marks start of $(( in output string */
|
||||||
int start;
|
int start;
|
||||||
/* SBQUOTE: true if in double quotes: "`...`" */
|
/* SBQUOTE: true if in double quotes: "`...`" */
|
||||||
@ -90,7 +90,7 @@ static int getsc_bn(void);
|
|||||||
static int s_get(void);
|
static int s_get(void);
|
||||||
static void s_put(int);
|
static void s_put(int);
|
||||||
static char *get_brace_var(XString *, char *);
|
static char *get_brace_var(XString *, char *);
|
||||||
static int arraysub(char **);
|
static bool arraysub(char **);
|
||||||
static const char *ungetsc(int);
|
static const char *ungetsc(int);
|
||||||
static void gethere(bool);
|
static void gethere(bool);
|
||||||
static Lex_state *push_state_(State_info *, Lex_state *);
|
static Lex_state *push_state_(State_info *, Lex_state *);
|
||||||
@ -1641,7 +1641,7 @@ get_brace_var(XString *wsp, char *wp)
|
|||||||
* if eof or newline was found.
|
* if eof or newline was found.
|
||||||
* (Returned string double null terminated)
|
* (Returned string double null terminated)
|
||||||
*/
|
*/
|
||||||
static int
|
static bool
|
||||||
arraysub(char **strp)
|
arraysub(char **strp)
|
||||||
{
|
{
|
||||||
XString ws;
|
XString ws;
|
||||||
@ -1664,7 +1664,7 @@ arraysub(char **strp)
|
|||||||
*wp++ = '\0';
|
*wp++ = '\0';
|
||||||
*strp = Xclose(ws, wp);
|
*strp = Xclose(ws, wp);
|
||||||
|
|
||||||
return (depth == 0 ? 1 : 0);
|
return (tobool(depth == 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Unget a char: handles case when we are already at the start of the buffer */
|
/* Unget a char: handles case when we are already at the start of the buffer */
|
||||||
|
4
misc.c
4
misc.c
@ -29,7 +29,7 @@
|
|||||||
#include <grp.h>
|
#include <grp.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.152 2011/03/05 21:43:17 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.153 2011/03/07 20:30:39 tg Exp $");
|
||||||
|
|
||||||
/* type bits for unsigned char */
|
/* type bits for unsigned char */
|
||||||
unsigned char chtypes[UCHAR_MAX + 1];
|
unsigned char chtypes[UCHAR_MAX + 1];
|
||||||
@ -433,7 +433,7 @@ parse_args(const char **argv,
|
|||||||
xstrcmp);
|
xstrcmp);
|
||||||
}
|
}
|
||||||
if (arrayset)
|
if (arrayset)
|
||||||
go.optind += set_array(array, arrayset > 0 ? true : false,
|
go.optind += set_array(array, tobool(arrayset > 0),
|
||||||
argv + go.optind);
|
argv + go.optind);
|
||||||
|
|
||||||
return (go.optind);
|
return (go.optind);
|
||||||
|
14
sh.h
14
sh.h
@ -154,7 +154,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef EXTERN
|
#ifdef EXTERN
|
||||||
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.438 2011/03/06 17:08:13 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.439 2011/03/07 20:30:40 tg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#define MKSH_VERSION "R39 2011/03/06"
|
#define MKSH_VERSION "R39 2011/03/06"
|
||||||
|
|
||||||
@ -187,11 +187,17 @@ typedef void (*sig_t)(int);
|
|||||||
|
|
||||||
#if !HAVE_STDBOOL_H
|
#if !HAVE_STDBOOL_H
|
||||||
/* kludge, but enough for mksh */
|
/* kludge, but enough for mksh */
|
||||||
typedef int bool;
|
typedef unsigned char bool;
|
||||||
#define false 0
|
#define false 0
|
||||||
#define true 1
|
#define true 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* choose the one that is optimised on most platforms? */
|
||||||
|
#define tobool(cond) ((cond) ? true : false)
|
||||||
|
/*#define tobool(cond) (!!(cond))*/
|
||||||
|
/* the following only with <stdbool.h> and even then sometimes buggy */
|
||||||
|
/*#define tobool(cond) ((bool)(cond))*/
|
||||||
|
|
||||||
#if !HAVE_CAN_INTTYPES
|
#if !HAVE_CAN_INTTYPES
|
||||||
#if !HAVE_CAN_UCBINTS
|
#if !HAVE_CAN_UCBINTS
|
||||||
typedef signed int int32_t;
|
typedef signed int int32_t;
|
||||||
@ -778,9 +784,9 @@ EXTERN int really_exit;
|
|||||||
|
|
||||||
extern unsigned char chtypes[];
|
extern unsigned char chtypes[];
|
||||||
|
|
||||||
#define ctype(c, t) !!( ((t) == C_SUBOP2) ? \
|
#define ctype(c, t) tobool( ((t) == C_SUBOP2) ? \
|
||||||
(((c) == '#' || (c) == '%') ? 1 : 0) : \
|
(((c) == '#' || (c) == '%') ? 1 : 0) : \
|
||||||
(chtypes[(unsigned char)(c)]&(t)) )
|
(chtypes[(unsigned char)(c)] & (t)) )
|
||||||
#define ksh_isalphx(c) ctype((c), C_ALPHA)
|
#define ksh_isalphx(c) ctype((c), C_ALPHA)
|
||||||
#define ksh_isalnux(c) ctype((c), C_ALPHA | C_DIGIT)
|
#define ksh_isalnux(c) ctype((c), C_ALPHA | C_DIGIT)
|
||||||
|
|
||||||
|
4
var.c
4
var.c
@ -26,7 +26,7 @@
|
|||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/var.c,v 1.116 2011/02/11 01:18:23 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/var.c,v 1.117 2011/03/07 20:30:41 tg Exp $");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Variables
|
* Variables
|
||||||
@ -726,7 +726,7 @@ typeset(const char *var, Tflag set, Tflag clr, int field, int base)
|
|||||||
strcmp(tvar, "ENV") == 0 || strcmp(tvar, "SHELL") == 0))
|
strcmp(tvar, "ENV") == 0 || strcmp(tvar, "SHELL") == 0))
|
||||||
errorf("%s: %s", tvar, "restricted");
|
errorf("%s: %s", tvar, "restricted");
|
||||||
|
|
||||||
vp = (set&LOCAL) ? local(tvar, (set & LOCAL_COPY) ? true : false) :
|
vp = (set&LOCAL) ? local(tvar, tobool(set & LOCAL_COPY)) :
|
||||||
global(tvar);
|
global(tvar);
|
||||||
if (set_refflag == 2 && (vp->flag & (ARRAY|ASSOC)) == ASSOC)
|
if (set_refflag == 2 && (vp->flag & (ARRAY|ASSOC)) == ASSOC)
|
||||||
vp->flag &= ~ASSOC;
|
vp->flag &= ~ASSOC;
|
||||||
|
Reference in New Issue
Block a user