fix: remove checking for waitpid
This commit is contained in:
		
							parent
							
								
									969fa07d28
								
							
						
					
					
						commit
						0c150e1f9d
					
				| 
						 | 
					@ -76,7 +76,11 @@ void chld_handler(int sig) {
 | 
				
			||||||
                    if (WIFEXITED(status))
 | 
					                    if (WIFEXITED(status))
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        job_data_array[i]->exit_status = WEXITSTATUS(status);
 | 
					                        job_data_array[i]->exit_status = WEXITSTATUS(status);
 | 
				
			||||||
                        job_data_array[i]->status = job_data_array[i]->exit_status == 0 ? COMPLETED : ABORTED;
 | 
					                        job_data_array[i]->status = COMPLETED;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else {
 | 
				
			||||||
 | 
					                        job_data_array[i]->exit_status = 6;
 | 
				
			||||||
 | 
					                        job_data_array[i]->status = ABORTED;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					@ -119,6 +123,8 @@ void io_handler(int sig) {
 | 
				
			||||||
 * @return 0 if finalization is completely successful, otherwise -1.
 | 
					 * @return 0 if finalization is completely successful, otherwise -1.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
int jobs_fini(void) {
 | 
					int jobs_fini(void) {
 | 
				
			||||||
 | 
					    store_fini();
 | 
				
			||||||
 | 
					    prog_fini();
 | 
				
			||||||
    for (size_t i = 0; i < MAX_JOBS; i++)
 | 
					    for (size_t i = 0; i < MAX_JOBS; i++)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (job_data_array[i])
 | 
					        if (job_data_array[i])
 | 
				
			||||||
| 
						 | 
					@ -133,9 +139,6 @@ int jobs_fini(void) {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    store_fini();
 | 
					 | 
				
			||||||
    prog_fini();
 | 
					 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -378,8 +381,7 @@ int jobs_run(PIPELINE *pline) {
 | 
				
			||||||
        for (size_t i = 0; i < size; i++)
 | 
					        for (size_t i = 0; i < size; i++)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int status;
 | 
					            int status;
 | 
				
			||||||
            if (waitpid(pids[i], &status, 0) == -1)
 | 
					            waitpid(pids[i], &status, 0);
 | 
				
			||||||
                exit(-1);
 | 
					 | 
				
			||||||
            if (WIFEXITED(status))
 | 
					            if (WIFEXITED(status))
 | 
				
			||||||
                exit_code = WEXITSTATUS(status);
 | 
					                exit_code = WEXITSTATUS(status);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -440,14 +442,12 @@ int jobs_wait(int jobid) {
 | 
				
			||||||
    int return_stat = -1;
 | 
					    int return_stat = -1;
 | 
				
			||||||
    if (WIFEXITED(status)) {
 | 
					    if (WIFEXITED(status)) {
 | 
				
			||||||
        return_stat = WEXITSTATUS(status);
 | 
					        return_stat = WEXITSTATUS(status);
 | 
				
			||||||
        if (return_stat == 0)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
        job_data_array[jobid]->status = COMPLETED;
 | 
					        job_data_array[jobid]->status = COMPLETED;
 | 
				
			||||||
 | 
					        job_data_array[jobid]->exit_status = return_stat;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
        job_data_array[jobid]->status = ABORTED;
 | 
					        job_data_array[jobid]->status = ABORTED;
 | 
				
			||||||
        }
 | 
					        job_data_array[jobid]->exit_status = 6;
 | 
				
			||||||
        job_data_array[jobid]->exit_status = return_stat;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return return_stat;
 | 
					    return return_stat;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -503,7 +503,6 @@ int jobs_expunge(int jobid) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (job_data_array[jobid]->pipeline->capture_output) {
 | 
					    if (job_data_array[jobid]->pipeline->capture_output) {
 | 
				
			||||||
        close(job_data_array[jobid]->pipe[0]);
 | 
					        close(job_data_array[jobid]->pipe[0]);
 | 
				
			||||||
        // close(job_data_array[jobid]->pipe[1]);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    free_pipeline(job_data_array[jobid]->pipeline);
 | 
					    free_pipeline(job_data_array[jobid]->pipeline);
 | 
				
			||||||
| 
						 | 
					@ -545,11 +544,14 @@ int jobs_cancel(int jobid) {
 | 
				
			||||||
    if (kill(pid, SIGKILL) == -1)
 | 
					    if (kill(pid, SIGKILL) == -1)
 | 
				
			||||||
        return -1;
 | 
					        return -1;
 | 
				
			||||||
    int status;
 | 
					    int status;
 | 
				
			||||||
    if (waitpid(pid, &status, 0) == -1)
 | 
					    waitpid(pid, &status, 0);
 | 
				
			||||||
        return -1; 
 | 
					 | 
				
			||||||
    if (WIFEXITED(status)) {
 | 
					    if (WIFEXITED(status)) {
 | 
				
			||||||
        job_data_array[jobid]->exit_status = WEXITSTATUS(status);
 | 
					        job_data_array[jobid]->exit_status = WEXITSTATUS(status);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        job_data_array[jobid]->exit_status = 9;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    job_data_array[jobid]->status = CANCELED;
 | 
					    job_data_array[jobid]->status = CANCELED;
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,7 +31,7 @@
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
char *store_get_string(char *var) {
 | 
					char *store_get_string(char *var) {
 | 
				
			||||||
    if (!var)
 | 
					    if (!var)
 | 
				
			||||||
        return -1;
 | 
					        return NULL;
 | 
				
			||||||
    store_data *data = store_get_data(var);
 | 
					    store_data *data = store_get_data(var);
 | 
				
			||||||
    if (data)
 | 
					    if (data)
 | 
				
			||||||
        return data->value;
 | 
					        return data->value;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user