aboutsummaryrefslogtreecommitdiffhomepage
path: root/parser.c
diff options
context:
space:
mode:
authorGravatar axel <axel@liljencrantz.se>2005-10-15 10:51:26 +1000
committerGravatar axel <axel@liljencrantz.se>2005-10-15 10:51:26 +1000
commit9298f610f6f26425db36d8727ad533d660a6c5d6 (patch)
tree53c6f257f99c7e35c0975744edf5ca7d4e10818f /parser.c
parent638df31ca462b032d59bde586254be5f3dc21e35 (diff)
Add support for specifying event handler for calling job in command supstitution. Add psub shellscript function for process substitution
darcs-hash:20051015005126-ac50b-d2aedca3a50a78362502f3fa9dd8bf25cb7dc6e1.gz
Diffstat (limited to 'parser.c')
-rw-r--r--parser.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/parser.c b/parser.c
index b3d063dd..32192ceb 100644
--- a/parser.c
+++ b/parser.c
@@ -176,7 +176,8 @@ void parser_push_block( int type )
if( type == TOP || type == SUBST )
new->skip = 0;
-
+ new->job = 0;
+
new->loop_status=LOOP_NORMAL;
current_block = new;
@@ -1681,7 +1682,9 @@ static void eval_job( tokenizer *tok )
j->fg=1;
j->constructed=0;
j->skip_notification = is_subshell || is_block || is_event || (!is_interactive);
-
+
+ current_block->job = j;
+
proc_had_barrier=0;
if( is_interactive )
@@ -1733,7 +1736,7 @@ static void eval_job( tokenizer *tok )
p->cmd = wcsdup( j->command );
p->skipped=current_block->skip;
}
-
+
skip |= current_block->skip;
if(!skip )
@@ -1785,6 +1788,7 @@ static void eval_job( tokenizer *tok )
*/
job_free( j );
}
+ current_block->job = 0;
break;
}
@@ -1889,7 +1893,7 @@ int eval( const wchar_t *cmd, io_data_t *io, int block_type )
exit(1);
break;
}
-
+
if( (!error_code) && (!exit_status()) && (!proc_get_last_status()) )
{
char *h;