Silence gcc warnings in wordsplit

This commit is contained in:
Sergey Poznyakoff
2018-07-31 16:05:28 +03:00
parent 110e3bd7a6
commit e54741745c
2 changed files with 27 additions and 19 deletions

View File

@@ -36,6 +36,14 @@
#define _(msgid) gettext (msgid)
#define N_(msgid) msgid
#ifndef FALLTHROUGH
# if __GNUC__ < 7
# define FALLTHROUGH ((void) 0)
# else
# define FALLTHROUGH __attribute__ ((__fallthrough__))
# endif
#endif
#include <wordsplit.h>
#define ISWS(c) ((c)==' '||(c)=='\t'||(c)=='\n')
@@ -105,17 +113,17 @@ _wsplt_nomem (struct wordsplit *wsp)
static int wordsplit_run (const char *command, size_t length,
struct wordsplit *wsp,
int flags, int lvl);
unsigned flags, int lvl);
static int wordsplit_init (struct wordsplit *wsp, const char *input, size_t len,
int flags);
unsigned flags);
static int wordsplit_process_list (struct wordsplit *wsp, size_t start);
static int wordsplit_finish (struct wordsplit *wsp);
static int
_wsplt_subsplit (struct wordsplit *wsp, struct wordsplit *wss,
char const *str, int len,
int flags, int finalize)
unsigned flags, int finalize)
{
int rc;
@@ -204,7 +212,7 @@ char wordsplit_c_escape_tab[] = "\\\\\"\"a\ab\bf\fn\nr\rt\tv\v";
static int
wordsplit_init (struct wordsplit *wsp, const char *input, size_t len,
int flags)
unsigned flags)
{
wsp->ws_flags = flags;
@@ -346,7 +354,7 @@ struct wordsplit_node
{
struct wordsplit_node *prev; /* Previous element */
struct wordsplit_node *next; /* Next element */
int flags; /* Node flags */
unsigned flags; /* Node flags */
union
{
struct
@@ -359,7 +367,7 @@ struct wordsplit_node
};
static const char *
wsnode_flagstr (int flags)
wsnode_flagstr (unsigned flags)
{
static char retbuf[7];
char *p = retbuf;
@@ -1130,7 +1138,7 @@ wsplt_assign_var (struct wordsplit *wsp, const char *name, size_t namelen,
static int
expvar (struct wordsplit *wsp, const char *str, size_t len,
struct wordsplit_node **ptail, const char **pend, int flg)
struct wordsplit_node **ptail, const char **pend, unsigned flg)
{
size_t i = 0;
const char *defstr = NULL;
@@ -1338,7 +1346,7 @@ expvar (struct wordsplit *wsp, const char *str, size_t len,
if (wsp->ws_errno == WRDSE_USERERR)
free (wsp->ws_usererr);
wsp->ws_usererr = value;
/* fall through */
FALLTHROUGH;
default:
_wsplt_seterr (wsp, rc);
return 1;
@@ -1427,7 +1435,7 @@ node_expand (struct wordsplit *wsp, struct wordsplit_node *node,
const char *str, size_t len,
struct wordsplit_node **ptail,
const char **pend,
int flg))
unsigned flg))
{
const char *str = wsnode_ptr (wsp, node);
size_t slen = wsnode_len (node);
@@ -1521,7 +1529,7 @@ begin_cmd_p (int c)
static int
expcmd (struct wordsplit *wsp, const char *str, size_t len,
struct wordsplit_node **ptail, const char **pend, int flg)
struct wordsplit_node **ptail, const char **pend, unsigned flg)
{
int rc;
size_t j;
@@ -1940,7 +1948,7 @@ scan_qstring (struct wordsplit *wsp, size_t start, size_t *end)
j++;
if (j < len && command[j] == q)
{
int flags = _WSNF_QUOTE | _WSNF_EMPTYOK;
unsigned flags = _WSNF_QUOTE | _WSNF_EMPTYOK;
if (q == '\'')
flags |= _WSNF_NOEXPAND;
if (wordsplit_add_segm (wsp, start + 1, j, flags))
@@ -1963,7 +1971,7 @@ scan_word (struct wordsplit *wsp, size_t start, int consume_all)
const char *command = wsp->ws_input;
const char *comment = wsp->ws_comment;
int join = 0;
int flags = 0;
unsigned flags = 0;
struct wordsplit_node *np = wsp->ws_tail;
size_t i = start;
@@ -2392,7 +2400,7 @@ wordsplit_process_list (struct wordsplit *wsp, size_t start)
static int
wordsplit_run (const char *command, size_t length, struct wordsplit *wsp,
int flags, int lvl)
unsigned flags, int lvl)
{
int rc;
size_t start;
@@ -2429,13 +2437,13 @@ wordsplit_run (const char *command, size_t length, struct wordsplit *wsp,
int
wordsplit_len (const char *command, size_t length, struct wordsplit *wsp,
int flags)
unsigned flags)
{
return wordsplit_run (command, length, wsp, flags, 0);
}
int
wordsplit (const char *command, struct wordsplit *ws, int flags)
wordsplit (const char *command, struct wordsplit *ws, unsigned flags)
{
return wordsplit_len (command, command ? strlen (command) : 0, ws, flags);
}

View File

@@ -46,8 +46,8 @@ struct wordsplit
size_t ws_offs; /* [Input] (WRDSF_DOOFFS) Number of initial
elements in ws_wordv to fill with NULLs. */
size_t ws_wordn; /* Number of elements ws_wordv can accomodate. */
int ws_flags; /* [Input] Flags passed to wordsplit. */
int ws_options; /* [Input] (WRDSF_OPTIONS)
unsigned ws_flags; /* [Input] Flags passed to wordsplit. */
unsigned ws_options; /* [Input] (WRDSF_OPTIONS)
Additional options. */
size_t ws_maxwords; /* [Input] (WRDSO_MAXWORDS) Return at most that
many words */
@@ -246,8 +246,8 @@ struct wordsplit
#define WRDSE_GLOBERR 8
#define WRDSE_USERERR 9
int wordsplit (const char *s, wordsplit_t *ws, int flags);
int wordsplit_len (const char *s, size_t len, wordsplit_t *ws, int flags);
int wordsplit (const char *s, wordsplit_t *ws, unsigned flags);
int wordsplit_len (const char *s, size_t len, wordsplit_t *ws, unsigned flags);
void wordsplit_free (wordsplit_t *ws);
void wordsplit_free_words (wordsplit_t *ws);
void wordsplit_free_envbuf (wordsplit_t *ws);