mirror of
https://github.com/sheumann/hush.git
synced 2025-01-04 22:34:37 +00:00
hush: style fixes
This commit is contained in:
parent
c72c1ed932
commit
bb81c5831a
50
shell/hush.c
50
shell/hush.c
@ -583,7 +583,8 @@ static int builtin_fg_bg(struct child_prog *child)
|
|||||||
for (i = 0; i < pi->num_progs; i++)
|
for (i = 0; i < pi->num_progs; i++)
|
||||||
pi->progs[i].is_stopped = 0;
|
pi->progs[i].is_stopped = 0;
|
||||||
|
|
||||||
if ( (i=kill(- pi->pgrp, SIGCONT)) < 0) {
|
i = kill(- pi->pgrp, SIGCONT);
|
||||||
|
if (i < 0) {
|
||||||
if (i == ESRCH) {
|
if (i == ESRCH) {
|
||||||
remove_bg_job(pi);
|
remove_bg_job(pi);
|
||||||
} else {
|
} else {
|
||||||
@ -2072,7 +2073,8 @@ static int done_word(o_string *dest, struct p_context *ctx)
|
|||||||
}
|
}
|
||||||
if (!child->argv && (ctx->type & FLAG_PARSE_SEMICOLON)) {
|
if (!child->argv && (ctx->type & FLAG_PARSE_SEMICOLON)) {
|
||||||
debug_printf("checking %s for reserved-ness\n",dest->data);
|
debug_printf("checking %s for reserved-ness\n",dest->data);
|
||||||
if (reserved_word(dest,ctx)) return ctx->w==RES_SNTX;
|
if (reserved_word(dest,ctx))
|
||||||
|
return (ctx->w == RES_SNTX);
|
||||||
}
|
}
|
||||||
glob_target = &child->glob_result;
|
glob_target = &child->glob_result;
|
||||||
if (child->argv) flags |= GLOB_APPEND;
|
if (child->argv) flags |= GLOB_APPEND;
|
||||||
@ -2195,7 +2197,8 @@ static int redirect_opt_num(o_string *o)
|
|||||||
{
|
{
|
||||||
int num;
|
int num;
|
||||||
|
|
||||||
if (o->length==0) return -1;
|
if (o->length == 0)
|
||||||
|
return -1;
|
||||||
for (num = 0; num < o->length; num++) {
|
for (num = 0; num < o->length; num++) {
|
||||||
if (!isdigit(*(o->data + num))) {
|
if (!isdigit(*(o->data + num))) {
|
||||||
return -1;
|
return -1;
|
||||||
@ -2262,7 +2265,8 @@ static int process_command_subs(o_string *dest, struct p_context *ctx, struct in
|
|||||||
/* XXX In case of a syntax error, should we try to kill the child?
|
/* XXX In case of a syntax error, should we try to kill the child?
|
||||||
* That would be tough to do right, so just read until EOF. */
|
* That would be tough to do right, so just read until EOF. */
|
||||||
if (retcode == 1) {
|
if (retcode == 1) {
|
||||||
while (b_getch(&pipe_str)!=EOF) { /* discard */ };
|
while (b_getch(&pipe_str) != EOF)
|
||||||
|
/* discard */;
|
||||||
}
|
}
|
||||||
|
|
||||||
debug_printf("done reading from pipe, pclose()ing\n");
|
debug_printf("done reading from pipe, pclose()ing\n");
|
||||||
@ -2291,9 +2295,15 @@ static int parse_group(o_string *dest, struct p_context *ctx,
|
|||||||
}
|
}
|
||||||
initialize_context(&sub);
|
initialize_context(&sub);
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case '(': endch=')'; child->subshell=1; break;
|
case '(':
|
||||||
case '{': endch='}'; break;
|
endch = ')';
|
||||||
default: syntax(); /* really logic error */
|
child->subshell = 1;
|
||||||
|
break;
|
||||||
|
case '{':
|
||||||
|
endch = '}';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
syntax(); /* really logic error */
|
||||||
}
|
}
|
||||||
rcode = parse_stream(dest,&sub,input,endch);
|
rcode = parse_stream(dest,&sub,input,endch);
|
||||||
done_word(dest,&sub); /* finish off the final word in the subcontext */
|
done_word(dest,&sub); /* finish off the final word in the subcontext */
|
||||||
@ -2359,7 +2369,10 @@ static int handle_dollar(o_string *dest, struct p_context *ctx, struct in_str *i
|
|||||||
ctx->child->sp++;
|
ctx->child->sp++;
|
||||||
b_getch(input);
|
b_getch(input);
|
||||||
/* XXX maybe someone will try to escape the '}' */
|
/* XXX maybe someone will try to escape the '}' */
|
||||||
while (ch=b_getch(input),ch!=EOF && ch!='}') {
|
while (1) {
|
||||||
|
ch = b_getch(input);
|
||||||
|
if (ch == EOF || ch == '}')
|
||||||
|
break;
|
||||||
b_addchr(dest,ch);
|
b_addchr(dest,ch);
|
||||||
}
|
}
|
||||||
if (ch != '}') {
|
if (ch != '}') {
|
||||||
@ -2376,7 +2389,8 @@ static int handle_dollar(o_string *dest, struct p_context *ctx, struct in_str *i
|
|||||||
sep[0] = ifs[0];
|
sep[0] = ifs[0];
|
||||||
for (i = 1; i < global_argc; i++) {
|
for (i = 1; i < global_argc; i++) {
|
||||||
parse_string(dest, ctx, global_argv[i]);
|
parse_string(dest, ctx, global_argv[i]);
|
||||||
if (i+1 < global_argc) parse_string(dest, ctx, sep);
|
if (i+1 < global_argc)
|
||||||
|
parse_string(dest, ctx, sep);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '@':
|
case '@':
|
||||||
@ -2426,7 +2440,8 @@ int parse_stream(o_string *dest, struct p_context *ctx,
|
|||||||
ch, ch, m, dest->quote);
|
ch, ch, m, dest->quote);
|
||||||
if (m == 0 || ((m == 1 || m == 2) && dest->quote)) {
|
if (m == 0 || ((m == 1 || m == 2) && dest->quote)) {
|
||||||
b_addqchr(dest, ch, dest->quote);
|
b_addqchr(dest, ch, dest->quote);
|
||||||
} else {
|
continue;
|
||||||
|
}
|
||||||
if (m == 2) { /* unquoted IFS */
|
if (m == 2) { /* unquoted IFS */
|
||||||
if (done_word(dest, ctx)) {
|
if (done_word(dest, ctx)) {
|
||||||
return 1;
|
return 1;
|
||||||
@ -2440,7 +2455,9 @@ int parse_stream(o_string *dest, struct p_context *ctx,
|
|||||||
debug_printf("leaving parse_stream (triggered)\n");
|
debug_printf("leaving parse_stream (triggered)\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (m!=2) switch (ch) {
|
if (m == 2)
|
||||||
|
continue;
|
||||||
|
switch (ch) {
|
||||||
case '#':
|
case '#':
|
||||||
if (dest->length == 0 && !dest->quote) {
|
if (dest->length == 0 && !dest->quote) {
|
||||||
while (1) {
|
while (1) {
|
||||||
@ -2540,19 +2557,18 @@ int parse_stream(o_string *dest, struct p_context *ctx,
|
|||||||
break;
|
break;
|
||||||
case '(':
|
case '(':
|
||||||
case '{':
|
case '{':
|
||||||
if (parse_group(dest, ctx, input, ch)!=0) return 1;
|
if (parse_group(dest, ctx, input, ch) != 0)
|
||||||
|
return 1;
|
||||||
break;
|
break;
|
||||||
case ')':
|
case ')':
|
||||||
case '}':
|
case '}':
|
||||||
syntax(); /* Proper use of this character caught by end_trigger */
|
syntax(); /* Proper use of this character caught by end_trigger */
|
||||||
return 1;
|
return 1;
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
syntax(); /* this is really an internal logic error */
|
syntax(); /* this is really an internal logic error */
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
/* complain if quote? No, maybe we just finished a command substitution
|
/* complain if quote? No, maybe we just finished a command substitution
|
||||||
* that was quoted. Example:
|
* that was quoted. Example:
|
||||||
* $ echo "`cat foo` plus more"
|
* $ echo "`cat foo` plus more"
|
||||||
@ -2712,7 +2728,6 @@ int hush_main(int argc, char **argv)
|
|||||||
|
|
||||||
last_return_code = EXIT_SUCCESS;
|
last_return_code = EXIT_SUCCESS;
|
||||||
|
|
||||||
|
|
||||||
if (argv[0] && argv[0][0] == '-') {
|
if (argv[0] && argv[0][0] == '-') {
|
||||||
debug_printf("\nsourcing /etc/profile\n");
|
debug_printf("\nsourcing /etc/profile\n");
|
||||||
if ((input = fopen("/etc/profile", "r")) != NULL) {
|
if ((input = fopen("/etc/profile", "r")) != NULL) {
|
||||||
@ -2757,8 +2772,9 @@ int hush_main(int argc, char **argv)
|
|||||||
* standard input is a terminal
|
* standard input is a terminal
|
||||||
* standard output is a terminal
|
* standard output is a terminal
|
||||||
* Refer to Posix.2, the description of the `sh' utility. */
|
* Refer to Posix.2, the description of the `sh' utility. */
|
||||||
if (argv[optind]==NULL && input==stdin &&
|
if (argv[optind] == NULL && input == stdin
|
||||||
isatty(STDIN_FILENO) && isatty(STDOUT_FILENO)) {
|
&& isatty(STDIN_FILENO) && isatty(STDOUT_FILENO)
|
||||||
|
) {
|
||||||
interactive++;
|
interactive++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user