From cb0604767f62b482be01d819d654c8aa1977cd83 Mon Sep 17 00:00:00 2001 From: tg Date: Fri, 4 Mar 2016 14:26:16 +0000 Subject: [PATCH] =?UTF-8?q?address=20latest=20Debian=20gcc-snapshot?= =?UTF-8?q?=E2=80=99s=20warnings=20(some=20actual=20bugs!)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- check.t | 6 ++-- edit.c | 6 ++-- histrap.c | 9 ++++-- jobs.c | 6 ++-- misc.c | 4 +-- sh.h | 12 ++++---- shf.c | 85 ++++++++++++++++++++++++++++--------------------------- tree.c | 6 ++-- 8 files changed, 71 insertions(+), 63 deletions(-) diff --git a/check.t b/check.t index f7d91bc..9ba412b 100644 --- a/check.t +++ b/check.t @@ -1,4 +1,4 @@ -# $MirOS: src/bin/mksh/check.t,v 1.726 2016/03/01 18:30:01 tg Exp $ +# $MirOS: src/bin/mksh/check.t,v 1.727 2016/03/04 14:26:09 tg Exp $ # -*- mode: sh -*- #- # Copyright © 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, @@ -30,7 +30,7 @@ # (2013/12/02 20:39:44) http://openbsd.cs.toronto.edu/cgi-bin/cvsweb/src/regress/bin/ksh/?sortby=date expected-stdout: - @(#)MIRBSD KSH R52 2016/03/01 + @(#)MIRBSD KSH R52 2016/03/04 description: Check version of shell. stdin: @@ -39,7 +39,7 @@ name: KSH_VERSION category: shell:legacy-no --- expected-stdout: - @(#)LEGACY KSH R52 2016/03/01 + @(#)LEGACY KSH R52 2016/03/04 description: Check version of legacy shell. stdin: diff --git a/edit.c b/edit.c index 651c035..031870e 100644 --- a/edit.c +++ b/edit.c @@ -28,7 +28,7 @@ #ifndef MKSH_NO_CMDLINE_EDITING -__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.293 2016/01/21 18:24:37 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.294 2016/03/04 14:26:12 tg Exp $"); /* * in later versions we might use libtermcap for this, but since external @@ -4597,8 +4597,8 @@ vi_cmd(int argcnt, const char *cmd) static int domove(int argcnt, const char *cmd, int sub) { - int bcount, i = 0, t; - int ncursor = 0; + int ncursor = 0, i = 0, t; + unsigned int bcount; switch (*cmd) { case 'b': diff --git a/histrap.c b/histrap.c index 65db72b..9dbb2c1 100644 --- a/histrap.c +++ b/histrap.c @@ -27,7 +27,7 @@ #include #endif -__RCSID("$MirOS: src/bin/mksh/histrap.c,v 1.155 2016/03/01 18:29:48 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/histrap.c,v 1.156 2016/03/04 14:26:13 tg Exp $"); Trap sigtraps[ksh_NSIG + 1]; static struct sigaction Sigact_ign; @@ -1017,16 +1017,19 @@ inittraps(void) { int i; const char *cs; +#if !HAVE_SYS_SIGNAME + const struct mksh_sigpair *pair; +#endif trap_exstat = -1; - /* Populate sigtraps based on sys_signame and sys_siglist. */ + /* populate sigtraps based on sys_signame and sys_siglist */ for (i = 1; i < ksh_NSIG; i++) { sigtraps[i].signal = i; #if HAVE_SYS_SIGNAME cs = sys_signame[i]; #else - const struct mksh_sigpair *pair = mksh_sigpairs; + pair = mksh_sigpairs; while ((pair->nr != i) && (pair->name != NULL)) ++pair; cs = pair->name; diff --git a/jobs.c b/jobs.c index 38e7b39..86797d0 100644 --- a/jobs.c +++ b/jobs.c @@ -23,7 +23,7 @@ #include "sh.h" -__RCSID("$MirOS: src/bin/mksh/jobs.c,v 1.119 2016/02/24 01:44:45 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/jobs.c,v 1.120 2016/03/04 14:26:13 tg Exp $"); #if HAVE_KILLPG #define mksh_killpg killpg @@ -1425,8 +1425,8 @@ check_job(Job *j) /* XXX debugging (nasty - interrupt routine using shl_out) */ if (!(j->flags & JF_STARTED)) { - internal_warningf("check_job: job started (flags 0x%x)", - j->flags); + internal_warningf("check_job: job started (flags 0x%X)", + (unsigned int)j->flags); return; } diff --git a/misc.c b/misc.c index bd6a508..6d06dff 100644 --- a/misc.c +++ b/misc.c @@ -30,7 +30,7 @@ #include #endif -__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.241 2016/01/21 18:24:43 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.242 2016/03/04 14:26:13 tg Exp $"); #define KSH_CHVT_FLAG #ifdef MKSH_SMALL @@ -1291,7 +1291,7 @@ print_columns(struct shf *shf, unsigned int n, shf_puts(str, shf); else shf_fprintf(shf, "%*s%*s", - max_col, str, nspace, null); + (int)max_col, str, (int)nspace, null); } shf_putchar('\n', shf); } diff --git a/sh.h b/sh.h index 11a8dc8..7523df7 100644 --- a/sh.h +++ b/sh.h @@ -175,9 +175,9 @@ #endif #ifdef EXTERN -__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.766 2016/03/01 18:30:05 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.767 2016/03/04 14:26:14 tg Exp $"); #endif -#define MKSH_VERSION "R52 2016/03/01" +#define MKSH_VERSION "R52 2016/03/04" /* arithmetic types: C implementation */ #if !HAVE_CAN_INTTYPES @@ -850,11 +850,13 @@ EXTERN struct { /* null value for variable; comparison pointer for unset */ EXTERN char null[] E_INIT(""); /* helpers for string pooling */ -EXTERN const char Tintovfl[] E_INIT("integer overflow %zu %c %zu prevented"); -EXTERN const char Toomem[] E_INIT("can't allocate %zu data bytes"); #if defined(__GNUC__) #define Tsynerr "syntax error" +#define Tintovfl "integer overflow %zu %c %zu prevented" +#define Toomem "can't allocate %zu data bytes" #else +EXTERN const char Tintovfl[] E_INIT("integer overflow %zu %c %zu prevented"); +EXTERN const char Toomem[] E_INIT("can't allocate %zu data bytes"); EXTERN const char Tsynerr[] E_INIT("syntax error"); #endif EXTERN const char Tselect[] E_INIT("select"); @@ -2011,7 +2013,7 @@ char *shf_smprintf(const char *, ...) ssize_t shf_vfprintf(struct shf *, const char *, va_list) MKSH_A_FORMAT(__printf__, 2, 0); /* syn.c */ -int assign_command(const char *, bool); +int assign_command(const char *, bool) MKSH_A_PURE; void initkeywords(void); struct op *compile(Source *, bool); bool parse_usec(const char *, struct timeval *); diff --git a/shf.c b/shf.c index 3b63c7b..ecf9ba7 100644 --- a/shf.c +++ b/shf.c @@ -2,7 +2,7 @@ /*- * Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011, - * 2012, 2013, 2015 + * 2012, 2013, 2015, 2016 * mirabilos * * Provided that these terms and disclaimer and all copyright notices @@ -25,7 +25,7 @@ #include "sh.h" -__RCSID("$MirOS: src/bin/mksh/shf.c,v 1.69 2015/12/31 20:38:59 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/shf.c,v 1.70 2016/03/04 14:26:16 tg Exp $"); /* flags to shf_emptybuf() */ #define EB_READSW 0x01 /* about to switch to reading */ @@ -197,7 +197,8 @@ shf_sopen(char *buf, ssize_t bsize, int sflags, struct shf *shf) { /* can't have a read+write string */ if (!(!(sflags & SHF_RD) ^ !(sflags & SHF_WR))) - internal_errorf("%s: flags 0x%X", "shf_sopen", sflags); + internal_errorf("%s: flags 0x%X", "shf_sopen", + (unsigned int)sflags); if (!shf) { shf = alloc(sizeof(struct shf), ATEMP); @@ -452,7 +453,8 @@ shf_read(char *buf, ssize_t bsize, struct shf *shf) ssize_t ncopy, orig_bsize = bsize; if (!(shf->flags & SHF_RD)) - internal_errorf("%s: flags 0x%X", "shf_read", shf->flags); + internal_errorf("%s: flags 0x%X", "shf_read", + (unsigned int)shf->flags); if (bsize <= 0) internal_errorf("%s: %s %zd", "shf_write", "bsize", bsize); @@ -489,7 +491,8 @@ shf_getse(char *buf, ssize_t bsize, struct shf *shf) char *orig_buf = buf; if (!(shf->flags & SHF_RD)) - internal_errorf("%s: flags 0x%X", "shf_getse", shf->flags); + internal_errorf("%s: flags 0x%X", "shf_getse", + (unsigned int)shf->flags); if (bsize <= 0) return (NULL); @@ -525,7 +528,8 @@ int shf_getchar(struct shf *shf) { if (!(shf->flags & SHF_RD)) - internal_errorf("%s: flags 0x%X", "shf_getchar", shf->flags); + internal_errorf("%s: flags 0x%X", "shf_getchar", + (unsigned int)shf->flags); if (shf->rnleft == 0 && (shf_fillbuf(shf) == -1 || shf->rnleft == 0)) return (-1); @@ -541,7 +545,8 @@ int shf_ungetc(int c, struct shf *shf) { if (!(shf->flags & SHF_RD)) - internal_errorf("%s: flags 0x%X", "shf_ungetc", shf->flags); + internal_errorf("%s: flags 0x%X", "shf_ungetc", + (unsigned int)shf->flags); if ((shf->flags & SHF_ERROR) || c == -1 || (shf->rp == shf->buf && shf->rnleft)) @@ -578,7 +583,8 @@ int shf_putchar(int c, struct shf *shf) { if (!(shf->flags & SHF_WR)) - internal_errorf("%s: flags 0x%X", "shf_putchar", shf->flags); + internal_errorf("%s: flags 0x%X", "shf_putchar", + (unsigned int)shf->flags); if (c == -1) return (-1); @@ -633,7 +639,8 @@ shf_write(const char *buf, ssize_t nbytes, struct shf *shf) ssize_t n, ncopy, orig_nbytes = nbytes; if (!(shf->flags & SHF_WR)) - internal_errorf("%s: flags 0x%X", "shf_write", shf->flags); + internal_errorf("%s: flags 0x%X", "shf_write", + (unsigned int)shf->flags); if (nbytes < 0) internal_errorf("%s: %s %zd", "shf_write", "nbytes", nbytes); @@ -764,7 +771,7 @@ shf_vfprintf(struct shf *shf, const char *fmt, va_list args) const char *s; char c, *cp; int tmp = 0, flags; - ssize_t field, precision, len; + size_t field, precision, len; unsigned long lnum; /* %#o produces the longest output */ char numbuf[(8 * sizeof(long) + 2) / 3 + 1]; @@ -791,7 +798,7 @@ shf_vfprintf(struct shf *shf, const char *fmt, va_list args) */ flags = 0; field = precision = 0; - for ( ; (c = *fmt++) ; ) { + while ((c = *fmt++)) { switch (c) { case '#': flags |= FL_HASH; @@ -821,12 +828,17 @@ shf_vfprintf(struct shf *shf, const char *fmt, va_list args) case '*': tmp = VA(int); - if (flags & FL_DOT) - precision = tmp; - else if ((field = tmp) < 0) { - field = -field; - flags |= FL_RIGHT; - } + if (tmp < 0) { + if (flags & FL_DOT) + precision = 0; + else { + field = (unsigned int)-tmp; + flags |= FL_RIGHT; + } + } else if (flags & FL_DOT) + precision = (unsigned int)tmp; + else + field = (unsigned int)tmp; continue; case 'l': @@ -848,26 +860,23 @@ shf_vfprintf(struct shf *shf, const char *fmt, va_list args) bool overflowed = false; tmp = ksh_numdig(c); - while (c = *fmt++, ksh_isdigit(c)) { + while (c = *fmt++, ksh_isdigit(c)) if (notok2mul(2147483647, tmp, 10)) overflowed = true; - tmp = tmp * 10 + ksh_numdig(c); - } + else + tmp = tmp * 10 + ksh_numdig(c); --fmt; if (overflowed) tmp = 0; if (flags & FL_DOT) - precision = tmp; + precision = (unsigned int)tmp; else - field = tmp; + field = (unsigned int)tmp; continue; } break; } - if (precision < 0) - precision = 0; - if (!c) /* nasty format */ break; @@ -953,7 +962,7 @@ shf_vfprintf(struct shf *shf, const char *fmt, va_list args) *--cp = (flags & FL_UPPER) ? 'X' : 'x'; *--cp = '0'; } - } + } } len = numbuf + sizeof(numbuf) - (s = cp); if (flags & FL_DOT) { @@ -999,7 +1008,6 @@ shf_vfprintf(struct shf *shf, const char *fmt, va_list args) if (field > precision) { field -= precision; if (!(flags & FL_RIGHT)) { - field = -field; /* skip past sign or 0x when padding with 0 */ if ((flags & FL_ZERO) && (flags & FL_NUMBER)) { if (*s == '+' || *s == '-' || @@ -1012,7 +1020,7 @@ shf_vfprintf(struct shf *shf, const char *fmt, va_list args) shf_putc(*s, shf); s++; nwritten++; - if (--precision > 0 && + if (--precision && ksh_eq(*s, 'X', 'x')) { shf_putc(*s, shf); s++; @@ -1023,19 +1031,16 @@ shf_vfprintf(struct shf *shf, const char *fmt, va_list args) c = '0'; } else c = flags & FL_ZERO ? '0' : ' '; - if (field < 0) { - nwritten += -field; - while (field < 0) { - shf_putc(c, shf); - ++field; - } - } + nwritten += field; + while (field--) + shf_putc(c, shf); + field = 0; } else c = ' '; } else field = 0; - if (precision > 0) { + if (precision) { const char *q; nwritten += precision; @@ -1044,11 +1049,9 @@ shf_vfprintf(struct shf *shf, const char *fmt, va_list args) shf_putc(*s, shf); } while (++s < q); } - if (field > 0) { - nwritten += field; - for ( ; field > 0 ; --field) - shf_putc(c, shf); - } + nwritten += field; + while (field--) + shf_putc(c, shf); } return (shf_error(shf) ? -1 : nwritten); diff --git a/tree.c b/tree.c index db3bdd0..5dbebd0 100644 --- a/tree.c +++ b/tree.c @@ -23,7 +23,7 @@ #include "sh.h" -__RCSID("$MirOS: src/bin/mksh/tree.c,v 1.82 2016/02/26 17:58:30 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/tree.c,v 1.83 2016/03/04 14:26:16 tg Exp $"); #define INDENT 8 @@ -631,8 +631,8 @@ wdscan(const char *wp, int c) break; default: internal_warningf( - "wdscan: unknown char 0x%x (carrying on)", - wp[-1]); + "wdscan: unknown char 0x%X (carrying on)", + (unsigned char)wp[-1]); } }