mirror of
https://github.com/sheumann/hush.git
synced 2024-12-23 05:29:58 +00:00
Get rid of long longs in the the hush code (but not yet in the libraries)
This commit is contained in:
parent
16c89af688
commit
6c2c9d8865
@ -544,4 +544,11 @@ extern int vasprintf(char **string_ptr, const char *format, va_list p) FAST_FUNC
|
|||||||
extern ssize_t getline(char **lineptr, size_t *n, FILE *stream) FAST_FUNC;
|
extern ssize_t getline(char **lineptr, size_t *n, FILE *stream) FAST_FUNC;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if NSIG <= 32
|
||||||
|
typedef unsigned long sigmask_t;
|
||||||
|
#else
|
||||||
|
typedef unsigned long long sigmask_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
16
shell/hush.c
16
shell/hush.c
@ -5146,7 +5146,7 @@ static NOINLINE const char *expand_one_var(char **to_be_freed_pp, char *arg, cha
|
|||||||
beg = expand_and_evaluate_arith(exp_word, &errmsg);
|
beg = expand_and_evaluate_arith(exp_word, &errmsg);
|
||||||
if (errmsg)
|
if (errmsg)
|
||||||
goto arith_err;
|
goto arith_err;
|
||||||
debug_printf_varexp("beg:'%s'=%lld\n", exp_word, (long long)beg);
|
debug_printf_varexp("beg:'%s'=%" PRIdMAX "\n", exp_word, (intmax_t)beg);
|
||||||
*p++ = SPECIAL_VAR_SYMBOL;
|
*p++ = SPECIAL_VAR_SYMBOL;
|
||||||
exp_word = p;
|
exp_word = p;
|
||||||
p = strchr(p, SPECIAL_VAR_SYMBOL);
|
p = strchr(p, SPECIAL_VAR_SYMBOL);
|
||||||
@ -5154,7 +5154,7 @@ static NOINLINE const char *expand_one_var(char **to_be_freed_pp, char *arg, cha
|
|||||||
len = expand_and_evaluate_arith(exp_word, &errmsg);
|
len = expand_and_evaluate_arith(exp_word, &errmsg);
|
||||||
if (errmsg)
|
if (errmsg)
|
||||||
goto arith_err;
|
goto arith_err;
|
||||||
debug_printf_varexp("len:'%s'=%lld\n", exp_word, (long long)len);
|
debug_printf_varexp("len:'%s'=%" PRIdMAX "\n", exp_word, (intmax_t)len);
|
||||||
if (len >= 0) { /* bash compat: len < 0 is illegal */
|
if (len >= 0) { /* bash compat: len < 0 is illegal */
|
||||||
if (beg < 0) /* bash compat */
|
if (beg < 0) /* bash compat */
|
||||||
beg = 0;
|
beg = 0;
|
||||||
@ -5627,9 +5627,9 @@ static void re_execute_shell(char ***to_free, const char *s,
|
|||||||
char *g_argv0, char **g_argv,
|
char *g_argv0, char **g_argv,
|
||||||
char **builtin_argv)
|
char **builtin_argv)
|
||||||
{
|
{
|
||||||
# define NOMMU_HACK_FMT ("-$%x:%x:%x:%x:%x:%llx" IF_HUSH_LOOPS(":%x"))
|
# define NOMMU_HACK_FMT ("-$%x:%x:%x:%x:%x:%" PRIxMAX IF_HUSH_LOOPS(":%x"))
|
||||||
/* delims + 2 * (number of bytes in printed hex numbers) */
|
/* delims + 2 * (number of bytes in printed hex numbers) */
|
||||||
char param_buf[sizeof(NOMMU_HACK_FMT) + 2 * (sizeof(int)*6 + sizeof(long long)*1)];
|
char param_buf[sizeof(NOMMU_HACK_FMT) + 2 * (sizeof(int)*6 + sizeof(uintmax_t)*1)];
|
||||||
char *heredoc_argv[4];
|
char *heredoc_argv[4];
|
||||||
struct variable *cur;
|
struct variable *cur;
|
||||||
# if ENABLE_HUSH_FUNCTIONS
|
# if ENABLE_HUSH_FUNCTIONS
|
||||||
@ -5637,7 +5637,7 @@ static void re_execute_shell(char ***to_free, const char *s,
|
|||||||
# endif
|
# endif
|
||||||
char **argv, **pp;
|
char **argv, **pp;
|
||||||
unsigned cnt;
|
unsigned cnt;
|
||||||
unsigned long long empty_trap_mask;
|
sigmask_t empty_trap_mask;
|
||||||
|
|
||||||
if (!g_argv0) { /* heredoc */
|
if (!g_argv0) { /* heredoc */
|
||||||
argv = heredoc_argv;
|
argv = heredoc_argv;
|
||||||
@ -5659,7 +5659,7 @@ static void re_execute_shell(char ***to_free, const char *s,
|
|||||||
int sig;
|
int sig;
|
||||||
for (sig = 1; sig < NSIG; sig++) {
|
for (sig = 1; sig < NSIG; sig++) {
|
||||||
if (G.traps[sig] && !G.traps[sig][0])
|
if (G.traps[sig] && !G.traps[sig][0])
|
||||||
empty_trap_mask |= 1LL << sig;
|
empty_trap_mask |= ((uintmax_t)1) << sig;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7996,7 +7996,7 @@ int hush_main(int argc, char **argv)
|
|||||||
full_write1_str(optarg);
|
full_write1_str(optarg);
|
||||||
_exit(0);
|
_exit(0);
|
||||||
case '$': {
|
case '$': {
|
||||||
unsigned long long empty_trap_mask;
|
sigmask_t empty_trap_mask;
|
||||||
|
|
||||||
G.root_pid = bb_strtou(optarg, &optarg, 16);
|
G.root_pid = bb_strtou(optarg, &optarg, 16);
|
||||||
optarg++;
|
optarg++;
|
||||||
@ -8014,7 +8014,7 @@ int hush_main(int argc, char **argv)
|
|||||||
install_special_sighandlers();
|
install_special_sighandlers();
|
||||||
G.traps = xzalloc(sizeof(G.traps[0]) * NSIG);
|
G.traps = xzalloc(sizeof(G.traps[0]) * NSIG);
|
||||||
for (sig = 1; sig < NSIG; sig++) {
|
for (sig = 1; sig < NSIG; sig++) {
|
||||||
if (empty_trap_mask & (1LL << sig)) {
|
if (empty_trap_mask & (((uintmax_t)1) << sig)) {
|
||||||
G.traps[sig] = xzalloc(1); /* == xstrdup(""); */
|
G.traps[sig] = xzalloc(1); /* == xstrdup(""); */
|
||||||
install_sighandler(sig, SIG_IGN);
|
install_sighandler(sig, SIG_IGN);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user