mirror of
git://git.gnu.org.ua/wordsplit.git
synced 2025-04-25 16:19:54 +03:00
Whitespace cleanup
This commit is contained in:
parent
a2c81cc5fa
commit
a19f8397ed
2 changed files with 92 additions and 93 deletions
|
@ -30,16 +30,16 @@ typedef struct wordsplit wordsplit_t;
|
|||
must be set (or unset, if starting with !) in ws_flags (if starting with
|
||||
WRDSF_) or ws_options (if starting with WRDSO_) to initialize or use the
|
||||
given member.
|
||||
|
||||
|
||||
If not redefined explicitly, most of them are set to some reasonable
|
||||
default value upon entry to wordsplit(). */
|
||||
struct wordsplit
|
||||
struct wordsplit
|
||||
{
|
||||
size_t ws_wordc; /* [Output] Number of words in ws_wordv. */
|
||||
char **ws_wordv; /* [Output] Array of parsed out words. */
|
||||
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. */
|
||||
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)
|
||||
Additional options. */
|
||||
|
@ -53,15 +53,15 @@ struct wordsplit
|
|||
const char *ws_escape[2]; /* [Input] (WRDSF_ESCAPE) Characters to be escaped
|
||||
with backslash. */
|
||||
void (*ws_alloc_die) (wordsplit_t *wsp);
|
||||
/* [Input] (WRDSF_ALLOC_DIE) Function called when
|
||||
/* [Input] (WRDSF_ALLOC_DIE) Function called when
|
||||
out of memory. Must not return. */
|
||||
void (*ws_error) (const char *, ...)
|
||||
__attribute__ ((__format__ (__printf__, 1, 2)));
|
||||
/* [Input] (WRDSF_ERROR) Function used for error
|
||||
__attribute__ ((__format__ (__printf__, 1, 2)));
|
||||
/* [Input] (WRDSF_ERROR) Function used for error
|
||||
reporting */
|
||||
void (*ws_debug) (const char *, ...)
|
||||
__attribute__ ((__format__ (__printf__, 1, 2)));
|
||||
/* [Input] (WRDSF_DEBUG) Function used for debug
|
||||
__attribute__ ((__format__ (__printf__, 1, 2)));
|
||||
/* [Input] (WRDSF_DEBUG) Function used for debug
|
||||
output. */
|
||||
const char **ws_env; /* [Input] (WRDSF_ENV, !WRDSF_NOVAR) Array of
|
||||
environment variables. */
|
||||
|
@ -80,14 +80,14 @@ struct wordsplit
|
|||
parameters */
|
||||
size_t ws_paramc; /* Number of positional parameters */
|
||||
|
||||
/* Temporary storage for parameters. Works similarly to ws_enbuf.
|
||||
/* Temporary storage for parameters. Works similarly to ws_enbuf.
|
||||
*/
|
||||
char **ws_parambuf;
|
||||
size_t ws_paramidx;
|
||||
size_t ws_paramsiz;
|
||||
|
||||
|
||||
int (*ws_getvar) (char **ret, const char *var, size_t len, void *clos);
|
||||
/* [Input] (WRDSF_GETVAR, !WRDSF_NOVAR) Looks up
|
||||
/* [Input] (WRDSF_GETVAR, !WRDSF_NOVAR) Looks up
|
||||
the name VAR (LEN bytes long) in the table of
|
||||
variables and if found returns in memory
|
||||
location pointed to by RET the value of that
|
||||
|
@ -96,13 +96,13 @@ struct wordsplit
|
|||
on error. User-specific errors can be returned
|
||||
by storing the error diagnostic string in RET
|
||||
and returning WRDSE_USERERR.
|
||||
Whatever is stored in RET, it must be allocated
|
||||
Whatever is stored in RET, it must be allocated
|
||||
using malloc(3). */
|
||||
void *ws_closure; /* [Input] (WRDSF_CLOSURE) Passed as the CLOS
|
||||
argument to ws_getvar and ws_command. */
|
||||
int (*ws_command) (char **ret, const char *cmd, size_t len, char **argv,
|
||||
void *clos);
|
||||
/* [Input] (!WRDSF_NOCMD) Returns in the memory
|
||||
void *clos);
|
||||
/* [Input] (!WRDSF_NOCMD) Returns in the memory
|
||||
location pointed to by RET the expansion of
|
||||
the command CMD (LEN bytes long). On input,
|
||||
ARGV contains CMD split out to words.
|
||||
|
@ -110,7 +110,7 @@ struct wordsplit
|
|||
See ws_getvar for a discussion of possible
|
||||
return values. */
|
||||
|
||||
const char *ws_input; /* Input string (the S argument to wordsplit. */
|
||||
const char *ws_input; /* Input string (the S argument to wordsplit. */
|
||||
size_t ws_len; /* Length of ws_input. */
|
||||
size_t ws_endp; /* Points past the last processed byte in
|
||||
ws_input. */
|
||||
|
@ -119,7 +119,7 @@ struct wordsplit
|
|||
the error, if ws_errno is WRDSE_USERERR. Must
|
||||
be allocated with malloc(3). */
|
||||
struct wordsplit_node *ws_head, *ws_tail;
|
||||
/* Doubly-linked list of parsed out nodes. */
|
||||
/* Doubly-linked list of parsed out nodes. */
|
||||
int ws_lvl; /* Invocation nesting level. */
|
||||
};
|
||||
|
||||
|
@ -242,9 +242,9 @@ struct wordsplit
|
|||
parameter) */
|
||||
#define WRDSO_PARAM_NEGIDX 0x00008000
|
||||
|
||||
#define WRDSO_BSKEEP WRDSO_BSKEEP_WORD
|
||||
#define WRDSO_OESC WRDSO_OESC_WORD
|
||||
#define WRDSO_XESC WRDSO_XESC_WORD
|
||||
#define WRDSO_BSKEEP WRDSO_BSKEEP_WORD
|
||||
#define WRDSO_OESC WRDSO_OESC_WORD
|
||||
#define WRDSO_XESC WRDSO_XESC_WORD
|
||||
|
||||
/* Indices into ws_escape */
|
||||
#define WRDSX_WORD 0
|
||||
|
|
147
src/wordsplit.c
147
src/wordsplit.c
|
@ -70,7 +70,7 @@ _wsplt_alloc_die (struct wordsplit *wsp)
|
|||
abort ();
|
||||
}
|
||||
|
||||
static void
|
||||
static void
|
||||
_wsplt_error (const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
@ -91,7 +91,7 @@ _wsplt_seterr (struct wordsplit *wsp, int ec)
|
|||
wordsplit_perror (wsp);
|
||||
return ec;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
_wsplt_nomem (struct wordsplit *wsp)
|
||||
{
|
||||
|
@ -122,7 +122,7 @@ _wsplt_subsplit (struct wordsplit *wsp, struct wordsplit *wss,
|
|||
int flags, int finalize)
|
||||
{
|
||||
int rc;
|
||||
|
||||
|
||||
wss->ws_delim = wsp->ws_delim;
|
||||
wss->ws_debug = wsp->ws_debug;
|
||||
wss->ws_error = wsp->ws_error;
|
||||
|
@ -146,12 +146,12 @@ _wsplt_subsplit (struct wordsplit *wsp, struct wordsplit *wss,
|
|||
}
|
||||
|
||||
wss->ws_options = wsp->ws_options;
|
||||
|
||||
|
||||
flags |= WRDSF_DELIM
|
||||
| WRDSF_ALLOC_DIE
|
||||
| WRDSF_ERROR
|
||||
| WRDSF_DEBUG
|
||||
| (wsp->ws_flags & (WRDSF_SHOWDBG | WRDSF_SHOWERR | WRDSF_OPTIONS));
|
||||
| WRDSF_ALLOC_DIE
|
||||
| WRDSF_ERROR
|
||||
| WRDSF_DEBUG
|
||||
| (wsp->ws_flags & (WRDSF_SHOWDBG | WRDSF_SHOWERR | WRDSF_OPTIONS));
|
||||
|
||||
rc = wordsplit_init (wss, str, len, flags);
|
||||
if (rc)
|
||||
|
@ -205,7 +205,7 @@ wordsplit_init0 (struct wordsplit *wsp)
|
|||
}
|
||||
|
||||
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)
|
||||
|
@ -278,8 +278,8 @@ wordsplit_init (struct wordsplit *wsp, const char *input, size_t len,
|
|||
{
|
||||
wsp->ws_escape[WRDSX_WORD] = wordsplit_c_escape_tab;
|
||||
wsp->ws_escape[WRDSX_QUOTE] = wordsplit_c_escape_tab;
|
||||
wsp->ws_options |= WRDSO_OESC_QUOTE | WRDSO_OESC_WORD
|
||||
| WRDSO_XESC_QUOTE | WRDSO_XESC_WORD;
|
||||
wsp->ws_options |= WRDSO_OESC_QUOTE | WRDSO_OESC_WORD
|
||||
| WRDSO_XESC_QUOTE | WRDSO_XESC_WORD;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -296,16 +296,16 @@ wordsplit_init (struct wordsplit *wsp, const char *input, size_t len,
|
|||
}
|
||||
wsp->ws_paramidx = wsp->ws_paramsiz = 0;
|
||||
wsp->ws_parambuf = NULL;
|
||||
|
||||
|
||||
wsp->ws_endp = 0;
|
||||
wsp->ws_wordi = 0;
|
||||
|
||||
if (wsp->ws_flags & WRDSF_REUSE)
|
||||
wordsplit_free_nodes (wsp);
|
||||
wsp->ws_head = wsp->ws_tail = NULL;
|
||||
|
||||
|
||||
wordsplit_init0 (wsp);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -591,7 +591,7 @@ coalesce_segment (struct wordsplit *wsp, struct wordsplit_node *node)
|
|||
|
||||
if (!(node->flags & _WSNF_JOIN))
|
||||
return 0;
|
||||
|
||||
|
||||
for (p = node; p && (p->flags & _WSNF_JOIN); p = p->next)
|
||||
{
|
||||
len += wsnode_len (p);
|
||||
|
@ -721,11 +721,11 @@ wordsplit_finish (struct wordsplit *wsp)
|
|||
|
||||
Nodes of type _WSNF_DELIM get inserted to the node list if either
|
||||
WRDSF_RETURN_DELIMS flag or WRDSO_MAXWORDS option is set.
|
||||
|
||||
|
||||
The following cases should be distinguished:
|
||||
|
||||
1. If both WRDSF_SQUEEZE_DELIMS and WRDSF_RETURN_DELIMS are set, compress
|
||||
any runs of similar delimiter nodes to a single node. The nodes are
|
||||
any runs of similar delimiter nodes to a single node. The nodes are
|
||||
'similar' if they point to the same delimiter character.
|
||||
|
||||
If WRDSO_MAXWORDS option is set, stop compressing when
|
||||
|
@ -733,12 +733,12 @@ wordsplit_finish (struct wordsplit *wsp)
|
|||
a single last node.
|
||||
|
||||
2. If WRDSO_MAXWORDS option is set, but WRDSF_RETURN_DELIMS is not,
|
||||
remove any delimiter nodes. Stop operation when
|
||||
remove any delimiter nodes. Stop operation when
|
||||
ws_wordi + 1 == ws_maxwords, and coalesce the rest of nodes into
|
||||
a single last node.
|
||||
|
||||
3. If incremental operation is in progress, restart the loop any time
|
||||
a delimiter node is about to be returned, unless WRDSF_RETURN_DELIMS
|
||||
a delimiter node is about to be returned, unless WRDSF_RETURN_DELIMS
|
||||
is set.
|
||||
*/
|
||||
again:
|
||||
|
@ -785,7 +785,7 @@ wordsplit_finish (struct wordsplit *wsp)
|
|||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
if (delim)
|
||||
{
|
||||
|
@ -858,8 +858,8 @@ wordsplit_finish (struct wordsplit *wsp)
|
|||
char *newstr = malloc (slen + 1);
|
||||
|
||||
/* Assign newstr first, even if it is NULL. This way
|
||||
wordsplit_free will work even if we return
|
||||
nomem later. */
|
||||
wordsplit_free will work even if we return
|
||||
nomem later. */
|
||||
wsp->ws_wordv[wsp->ws_offs + wsp->ws_wordc] = newstr;
|
||||
if (!newstr)
|
||||
return _wsplt_nomem (wsp);
|
||||
|
@ -972,7 +972,7 @@ find_closing_paren (const char *str, size_t i, size_t len, size_t *poff,
|
|||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case '"':
|
||||
state = st_dquote;
|
||||
break;
|
||||
|
@ -1052,7 +1052,7 @@ wsplt_assign_var (struct wordsplit *wsp, const char *name, size_t namelen,
|
|||
{
|
||||
int n = (wsp->ws_flags & WRDSF_ENV_KV) ? 2 : 1;
|
||||
char *v;
|
||||
|
||||
|
||||
if (wsp->ws_envidx + n >= wsp->ws_envsiz)
|
||||
{
|
||||
size_t sz;
|
||||
|
@ -1069,7 +1069,7 @@ wsplt_assign_var (struct wordsplit *wsp, const char *name, size_t namelen,
|
|||
for (; wsp->ws_env[i]; i++)
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
sz = i + n + 1;
|
||||
|
||||
newenv = calloc (sz, sizeof(newenv[0]));
|
||||
|
@ -1088,7 +1088,7 @@ wsplt_assign_var (struct wordsplit *wsp, const char *name, size_t namelen,
|
|||
}
|
||||
}
|
||||
newenv[j] = NULL;
|
||||
|
||||
|
||||
wsp->ws_envbuf = newenv;
|
||||
wsp->ws_envidx = i;
|
||||
wsp->ws_envsiz = sz;
|
||||
|
@ -1109,7 +1109,7 @@ wsplt_assign_var (struct wordsplit *wsp, const char *name, size_t namelen,
|
|||
else
|
||||
{
|
||||
size_t n = wsp->ws_envsiz;
|
||||
|
||||
|
||||
if ((size_t) -1 / 3 * 2 / sizeof (wsp->ws_envbuf[0]) <= n)
|
||||
return _wsplt_nomem (wsp);
|
||||
n += (n + 1) / 2;
|
||||
|
@ -1121,7 +1121,7 @@ wsplt_assign_var (struct wordsplit *wsp, const char *name, size_t namelen,
|
|||
wsp->ws_env = (const char**) wsp->ws_envbuf;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (wsp->ws_flags & WRDSF_ENV_KV)
|
||||
{
|
||||
/* A key-value pair environment */
|
||||
|
@ -1158,7 +1158,7 @@ int
|
|||
wsplt_assign_param (struct wordsplit *wsp, int param_idx, char *value)
|
||||
{
|
||||
char *v;
|
||||
|
||||
|
||||
if (param_idx < 0)
|
||||
return WRDSE_BADPARAM;
|
||||
if (param_idx == wsp->ws_paramc)
|
||||
|
@ -1167,7 +1167,7 @@ wsplt_assign_param (struct wordsplit *wsp, int param_idx, char *value)
|
|||
if (!wsp->ws_parambuf)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
|
||||
parambuf = calloc ((size_t)param_idx + 1, sizeof (parambuf[0]));
|
||||
if (!parambuf)
|
||||
return _wsplt_nomem (wsp);
|
||||
|
@ -1183,7 +1183,7 @@ wsplt_assign_param (struct wordsplit *wsp, int param_idx, char *value)
|
|||
return _wsplt_nomem (wsp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
wsp->ws_parambuf = parambuf;
|
||||
wsp->ws_paramidx = param_idx;
|
||||
wsp->ws_paramsiz = param_idx + 1;
|
||||
|
@ -1191,7 +1191,7 @@ wsplt_assign_param (struct wordsplit *wsp, int param_idx, char *value)
|
|||
else
|
||||
{
|
||||
size_t n = wsp->ws_paramsiz;
|
||||
|
||||
|
||||
if ((size_t) -1 / 3 * 2 / sizeof (wsp->ws_parambuf[0]) <= n)
|
||||
return _wsplt_nomem (wsp);
|
||||
n += (n + 1) / 2;
|
||||
|
@ -1208,11 +1208,11 @@ wsplt_assign_param (struct wordsplit *wsp, int param_idx, char *value)
|
|||
}
|
||||
else if (param_idx > wsp->ws_paramc)
|
||||
return WRDSE_BADPARAM;
|
||||
|
||||
|
||||
v = strdup (value);
|
||||
if (!v)
|
||||
return _wsplt_nomem (wsp);
|
||||
|
||||
|
||||
free (wsp->ws_parambuf[param_idx]);
|
||||
wsp->ws_parambuf[param_idx] = v;
|
||||
return WRDSE_OK;
|
||||
|
@ -1247,10 +1247,10 @@ expand_paramv (struct wordsplit *wsp, struct wordsplit_node **ptail, int flg,
|
|||
{
|
||||
struct wordsplit ws;
|
||||
int wsflags = WRDSF_NOVAR | WRDSF_NOCMD | WRDSF_QUOTE
|
||||
| (WSP_RETURN_DELIMS (wsp) ? WRDSF_RETURN_DELIMS : 0)
|
||||
| (q ? WRDSF_NOSPLIT : 0);
|
||||
| (WSP_RETURN_DELIMS (wsp) ? WRDSF_RETURN_DELIMS : 0)
|
||||
| (q ? WRDSF_NOSPLIT : 0);
|
||||
size_t i;
|
||||
|
||||
|
||||
for (i = 0; i < wsp->ws_paramc; i++)
|
||||
{
|
||||
struct wordsplit_node *np;
|
||||
|
@ -1272,7 +1272,7 @@ expand_paramv (struct wordsplit *wsp, struct wordsplit_node **ptail, int flg,
|
|||
*ptail = np;
|
||||
np->flags = _WSNF_WORD | _WSNF_NOEXPAND | flg;
|
||||
np->v.word = ws.ws_wordv[0];
|
||||
|
||||
|
||||
ws.ws_wordv[0] = NULL;
|
||||
}
|
||||
else
|
||||
|
@ -1283,7 +1283,7 @@ expand_paramv (struct wordsplit *wsp, struct wordsplit_node **ptail, int flg,
|
|||
*ptail = ws.ws_tail;
|
||||
ws.ws_head = ws.ws_tail = NULL;
|
||||
}
|
||||
|
||||
|
||||
wsflags |= WRDSF_REUSE;
|
||||
}
|
||||
if (wsflags & WRDSF_REUSE)
|
||||
|
@ -1305,7 +1305,7 @@ expvar (struct wordsplit *wsp, const char *str, size_t len,
|
|||
struct wordsplit ws;
|
||||
int is_param = 0;
|
||||
long param_idx = 0;
|
||||
|
||||
|
||||
if (ISVARBEG (str[0]))
|
||||
{
|
||||
for (i = 1; i < len; i++)
|
||||
|
@ -1358,7 +1358,7 @@ expvar (struct wordsplit *wsp, const char *str, size_t len,
|
|||
if (str[i] == ':')
|
||||
{
|
||||
size_t j;
|
||||
|
||||
|
||||
defstr = str + i + 1;
|
||||
if (find_closing_paren (str, i + 1, len, &j, "{}"))
|
||||
return _wsplt_seterr (wsp, WRDSE_CBRACE);
|
||||
|
@ -1374,7 +1374,7 @@ expvar (struct wordsplit *wsp, const char *str, size_t len,
|
|||
else if (strchr ("-+?=", str[i]))
|
||||
{
|
||||
size_t j;
|
||||
|
||||
|
||||
defstr = str + i;
|
||||
if (find_closing_paren (str, i, len, &j, "{}"))
|
||||
return _wsplt_seterr (wsp, WRDSE_CBRACE);
|
||||
|
@ -1400,10 +1400,10 @@ expvar (struct wordsplit *wsp, const char *str, size_t len,
|
|||
return expvar_recover (wsp, str - 1, ptail, pend, flg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (is_param && str[0] == '-')
|
||||
param_idx = wsp->ws_paramc - param_idx;
|
||||
|
||||
|
||||
if (i == len)
|
||||
return _wsplt_seterr (wsp, WRDSE_CBRACE);
|
||||
}
|
||||
|
@ -1456,7 +1456,7 @@ expvar (struct wordsplit *wsp, const char *str, size_t len,
|
|||
else
|
||||
rc = WRDSE_UNDEF;
|
||||
}
|
||||
|
||||
|
||||
if (rc == WRDSE_OK
|
||||
&& (!value || value[0] == 0)
|
||||
&& defstr && defstr[-1] == ':')
|
||||
|
@ -1465,7 +1465,7 @@ expvar (struct wordsplit *wsp, const char *str, size_t len,
|
|||
rc = WRDSE_UNDEF;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
switch (rc)
|
||||
{
|
||||
case WRDSE_OK:
|
||||
|
@ -1485,7 +1485,7 @@ expvar (struct wordsplit *wsp, const char *str, size_t len,
|
|||
wordsplit_free (&ws);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case WRDSE_UNDEF:
|
||||
if (defstr)
|
||||
{
|
||||
|
@ -1505,7 +1505,7 @@ expvar (struct wordsplit *wsp, const char *str, size_t len,
|
|||
value = ws.ws_wordv[0];
|
||||
ws.ws_wordv[0] = NULL;
|
||||
wordsplit_free (&ws);
|
||||
|
||||
|
||||
if (defstr[-1] == '=')
|
||||
{
|
||||
if (is_param)
|
||||
|
@ -1519,7 +1519,7 @@ expvar (struct wordsplit *wsp, const char *str, size_t len,
|
|||
return rc;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
if (*defstr == '?')
|
||||
{
|
||||
|
@ -1567,7 +1567,7 @@ expvar (struct wordsplit *wsp, const char *str, size_t len,
|
|||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case WRDSE_NOSPACE:
|
||||
return _wsplt_nomem (wsp);
|
||||
|
||||
|
@ -1606,7 +1606,7 @@ expvar (struct wordsplit *wsp, const char *str, size_t len,
|
|||
{
|
||||
struct wordsplit ws;
|
||||
int rc;
|
||||
|
||||
|
||||
rc = _wsplt_subsplit (wsp, &ws, value, strlen (value),
|
||||
WRDSF_NOVAR | WRDSF_NOCMD |
|
||||
WRDSF_QUOTE
|
||||
|
@ -1711,7 +1711,7 @@ node_expand (struct wordsplit *wsp, struct wordsplit_node *node,
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Remove NULL nodes from the list */
|
||||
static void
|
||||
wsnode_nullelim (struct wordsplit *wsp)
|
||||
|
@ -1765,7 +1765,7 @@ expcmd (struct wordsplit *wsp, const char *str, size_t len,
|
|||
char *value;
|
||||
struct wordsplit_node *newnode;
|
||||
struct wordsplit ws;
|
||||
|
||||
|
||||
str++;
|
||||
len--;
|
||||
|
||||
|
@ -1785,7 +1785,7 @@ expcmd (struct wordsplit *wsp, const char *str, size_t len,
|
|||
}
|
||||
rc = wsp->ws_command (&value, str, j, ws.ws_wordv, wsp->ws_closure);
|
||||
wordsplit_free (&ws);
|
||||
|
||||
|
||||
if (rc == WRDSE_NOSPACE)
|
||||
return _wsplt_nomem (wsp);
|
||||
else if (rc)
|
||||
|
@ -1893,13 +1893,13 @@ wordsplit_trimws (struct wordsplit *wsp)
|
|||
;
|
||||
p->v.segm.beg = n;
|
||||
}
|
||||
|
||||
|
||||
while (p->next && (p->flags & _WSNF_JOIN))
|
||||
p = p->next;
|
||||
|
||||
|
||||
if (p->flags & _WSNF_QUOTE)
|
||||
continue;
|
||||
|
||||
|
||||
/* Trim trailing whitespace */
|
||||
for (n = p->v.segm.end;
|
||||
n > p->v.segm.beg && ISWS (wsp->ws_input[n - 1]); n--);
|
||||
|
@ -1918,7 +1918,7 @@ wordsplit_tildexpand (struct wordsplit *wsp)
|
|||
struct wordsplit_node *p;
|
||||
char *uname = NULL;
|
||||
size_t usize = 0;
|
||||
|
||||
|
||||
for (p = wsp->ws_head; p; p = p->next)
|
||||
{
|
||||
const char *str;
|
||||
|
@ -1933,7 +1933,7 @@ wordsplit_tildexpand (struct wordsplit *wsp)
|
|||
size_t slen = wsnode_len (p);
|
||||
struct passwd *pw;
|
||||
char *newstr;
|
||||
|
||||
|
||||
for (i = 1; i < slen && str[i] != '/'; i++)
|
||||
;
|
||||
if (i == slen)
|
||||
|
@ -2009,7 +2009,7 @@ wordsplit_pathexpand (struct wordsplit *wsp)
|
|||
if (wsp->ws_options & WRDSO_DOTGLOB)
|
||||
flags = GLOB_PERIOD;
|
||||
#endif
|
||||
|
||||
|
||||
for (p = wsp->ws_head; p; p = next)
|
||||
{
|
||||
const char *str;
|
||||
|
@ -2027,7 +2027,7 @@ wordsplit_pathexpand (struct wordsplit *wsp)
|
|||
int i;
|
||||
glob_t g;
|
||||
struct wordsplit_node *prev;
|
||||
|
||||
|
||||
if (slen + 1 > patsize)
|
||||
{
|
||||
char *p = realloc (pattern, slen + 1);
|
||||
|
@ -2038,16 +2038,16 @@ wordsplit_pathexpand (struct wordsplit *wsp)
|
|||
}
|
||||
memcpy (pattern, str, slen);
|
||||
pattern[slen] = 0;
|
||||
|
||||
|
||||
switch (glob (pattern, flags, NULL, &g))
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
|
||||
case GLOB_NOSPACE:
|
||||
free (pattern);
|
||||
return _wsplt_nomem (wsp);
|
||||
|
||||
|
||||
case GLOB_NOMATCH:
|
||||
if (wsp->ws_options & WRDSO_NULLGLOB)
|
||||
{
|
||||
|
@ -2069,7 +2069,7 @@ wordsplit_pathexpand (struct wordsplit *wsp)
|
|||
return _wsplt_seterr (wsp, WRDSE_USERERR);
|
||||
}
|
||||
continue;
|
||||
|
||||
|
||||
default:
|
||||
free (pattern);
|
||||
return _wsplt_seterr (wsp, WRDSE_GLOBERR);
|
||||
|
@ -2080,7 +2080,7 @@ wordsplit_pathexpand (struct wordsplit *wsp)
|
|||
{
|
||||
struct wordsplit_node *newnode;
|
||||
char *newstr;
|
||||
|
||||
|
||||
if (wsnode_new (wsp, &newnode))
|
||||
return 1;
|
||||
newstr = strdup (g.gl_pathv[i]);
|
||||
|
@ -2196,7 +2196,7 @@ scan_word (struct wordsplit *wsp, size_t start, int consume_all)
|
|||
int join = 0;
|
||||
int flags = 0;
|
||||
struct wordsplit_node *np = wsp->ws_tail;
|
||||
|
||||
|
||||
size_t i = start;
|
||||
|
||||
if (i >= len)
|
||||
|
@ -2287,7 +2287,7 @@ scan_word (struct wordsplit *wsp, size_t start, int consume_all)
|
|||
wsp->ws_endp = i;
|
||||
if (wsp->ws_flags & WRDSF_INCREMENTAL)
|
||||
return _WRDS_EOF;
|
||||
|
||||
|
||||
if (consume_all)
|
||||
{
|
||||
if (!np)
|
||||
|
@ -2298,7 +2298,7 @@ scan_word (struct wordsplit *wsp, size_t start, int consume_all)
|
|||
np = np->next;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return _WRDS_OK;
|
||||
}
|
||||
|
||||
|
@ -2562,7 +2562,7 @@ wordsplit_process_list (struct wordsplit *wsp, size_t start)
|
|||
if (wsp->ws_flags & WRDSF_SHOWDBG)
|
||||
wsp->ws_debug (_("(%02d) Input:%.*s;"),
|
||||
wsp->ws_lvl, (int) wsp->ws_len, wsp->ws_input);
|
||||
|
||||
|
||||
if ((wsp->ws_flags & WRDSF_NOSPLIT)
|
||||
|| ((wsp->ws_options & WRDSO_MAXWORDS)
|
||||
&& wsp->ws_wordi + 1 == wsp->ws_maxwords))
|
||||
|
@ -2623,7 +2623,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)
|
||||
int flags, int lvl)
|
||||
{
|
||||
int rc;
|
||||
size_t start;
|
||||
|
@ -2659,8 +2659,8 @@ 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)
|
||||
wordsplit_len (const char *command, size_t length, struct wordsplit *wsp,
|
||||
int flags)
|
||||
{
|
||||
return wordsplit_run (command, length, wsp, flags, 0);
|
||||
}
|
||||
|
@ -2800,4 +2800,3 @@ wordsplit_perror (struct wordsplit *wsp)
|
|||
wsp->ws_error ("%s", wordsplit_strerror (wsp));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue