address latest Debian gcc-snapshot’s warnings (some actual bugs!)

This commit is contained in:
tg 2016-03-04 14:26:16 +00:00
parent e8d6b5c2a3
commit cb0604767f
8 changed files with 71 additions and 63 deletions

View File

@ -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:

6
edit.c
View File

@ -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':

View File

@ -27,7 +27,7 @@
#include <sys/file.h>
#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;

6
jobs.c
View File

@ -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;
}

4
misc.c
View File

@ -30,7 +30,7 @@
#include <grp.h>
#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);
}

12
sh.h
View File

@ -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 *);

85
shf.c
View File

@ -2,7 +2,7 @@
/*-
* Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011,
* 2012, 2013, 2015
* 2012, 2013, 2015, 2016
* mirabilos <m@mirbsd.org>
*
* 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);

6
tree.c
View File

@ -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]);
}
}