diff options
author | axel <axel@liljencrantz.se> | 2005-10-12 05:23:43 +1000 |
---|---|---|
committer | axel <axel@liljencrantz.se> | 2005-10-12 05:23:43 +1000 |
commit | 838ba08eaa883026d6fb88cd65dde33b16a564fd (patch) | |
tree | 164ec92c2b27f82e7fced328e5f0922813645d00 /event.c | |
parent | 0a4b983afa4137da9392b2bb198a02f6d1df38f7 (diff) |
Event handling and job reaping updates
darcs-hash:20051011192343-ac50b-aa3f5ae5e2b34d122f10e3b59ceb6fdd447f4ae3.gz
Diffstat (limited to 'event.c')
-rw-r--r-- | event.c | 29 |
1 files changed, 16 insertions, 13 deletions
@@ -280,7 +280,7 @@ static void event_fire_internal( event_t *event, array_list_t *arguments ) for( i=0; i<al_get_count( events ); i++ ) { event_t *criterion = (event_t *)al_get( events, i ); - + /* Check if this event is a match */ @@ -329,8 +329,16 @@ static void event_fire_internal( event_t *event, array_list_t *arguments ) sb_append( b, arg_esc ); free( arg_esc ); } + +// debug( 1, L"Event handler fires command '%ls'", (wchar_t *)b->buff ); + is_subshell=1; + is_interactive=1; + eval( (wchar_t *)b->buff, 0, TOP ); + is_subshell=0; + is_interactive=1; + } if( b ) @@ -349,7 +357,7 @@ static void event_fire_internal( event_t *event, array_list_t *arguments ) Free killed events */ event_free_kills(); - + } /** @@ -394,9 +402,8 @@ static void event_fire_signal_events() void event_fire( event_t *event, array_list_t *arguments ) { - - int is_event_old = is_event; - is_event=1; + //int is_event_old = is_event; + is_event++; if( event && (event->type == EVENT_SIGNAL) ) { @@ -411,20 +418,16 @@ void event_fire( event_t *event, array_list_t *arguments ) else sig_list[active_list].overflow=1; - return; - } + } else { event_fire_signal_events(); - + if( event ) event_fire_internal( event, arguments ); - + } - is_event = is_event_old; - - if( !is_event ) - job_do_notification(); + is_event--;// = is_event_old; } |