mirror of
https://github.com/postgres/postgres.git
synced 2025-07-12 21:01:52 +03:00
Switch dependency order of libpgcommon and libpgport
Continuing 63f32f3416
, libpgcommon should
depend on libpgport, but not vice versa. But wait_result_to_str() in
wait_error.c depends on pstrdup() in libpgcommon. So move exec.c and
wait_error.c from libpgport to libpgcommon. Also switch the link order
in the place that's actually used by the failing ecpg builds.
The function declarations have been left in port.h for now. That should
perhaps be separated sometime.
This commit is contained in:
86
src/common/wait_error.c
Normal file
86
src/common/wait_error.c
Normal file
@ -0,0 +1,86 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* wait_error.c
|
||||
* Convert a wait/waitpid(2) result code to a human-readable string
|
||||
*
|
||||
*
|
||||
* Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* src/common/wait_error.c
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#ifndef FRONTEND
|
||||
#include "postgres.h"
|
||||
#else
|
||||
#include "postgres_fe.h"
|
||||
#endif
|
||||
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
/*
|
||||
* Return a human-readable string explaining the reason a child process
|
||||
* terminated. The argument is a return code returned by wait(2) or
|
||||
* waitpid(2). The result is a translated, palloc'd or malloc'd string.
|
||||
*/
|
||||
char *
|
||||
wait_result_to_str(int exitstatus)
|
||||
{
|
||||
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);
|
||||
}
|
Reference in New Issue
Block a user