#include "postgres.h"
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <sys/wait.h>
Go to the source code of this file.
Functions | |
char * | wait_result_to_str (int exitstatus) |
char* wait_result_to_str | ( | int | exitstatus | ) |
Definition at line 34 of file wait_error.c.
References _, pstrdup(), snprintf(), WEXITSTATUS, WIFEXITED, WIFSIGNALED, and WTERMSIG.
Referenced by ClosePipeToProgram(), do_copy(), and pclose_check().
{ char str[512]; if (WIFEXITED(exitstatus)) { /* * Give more specific error message for some common exit codes that * have a special meaning in shells. */ switch (WEXITSTATUS(exitstatus)) { case 126: snprintf(str, sizeof(str), _("command not executable")); break; case 127: snprintf(str, sizeof(str), _("command not found")); break; default: snprintf(str, sizeof(str), _("child process exited with exit code %d"), WEXITSTATUS(exitstatus)); } } else if (WIFSIGNALED(exitstatus)) #if defined(WIN32) snprintf(str, sizeof(str), _("child process was terminated by exception 0x%X"), WTERMSIG(exitstatus)); #elif defined(HAVE_DECL_SYS_SIGLIST) && HAVE_DECL_SYS_SIGLIST { char str2[256]; snprintf(str2, sizeof(str2), "%d: %s", WTERMSIG(exitstatus), WTERMSIG(exitstatus) < NSIG ? sys_siglist[WTERMSIG(exitstatus)] : "(unknown)"); snprintf(str, sizeof(str), _("child process was terminated by signal %s"), str2); } #else snprintf(str, sizeof(str), _("child process was terminated by signal %d"), WTERMSIG(exitstatus)); #endif else snprintf(str, sizeof(str), _("child process exited with unrecognized status %d"), exitstatus); return pstrdup(str); }