* kill.c
* kill()
*
- * Copyright (c) 1996-2003, PostgreSQL Global Development Group
+ * Copyright (c) 1996-2013, PostgreSQL Global Development Group
*
* This is a replacement version of kill for Win32 which sends
* signals that the backend can recognize.
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/port/kill.c,v 1.1 2004/05/27 13:08:57 momjian Exp $
+ * src/port/kill.c
*
*-------------------------------------------------------------------------
*/
-#include "postgres.h"
+#include "c.h"
#ifdef WIN32
/* signal sending */
BYTE sigRet = 0;
DWORD bytes;
- if (sig >= PG_SIGNAL_COUNT || sig <= 0)
+ /* we allow signal 0 here, but it will be ignored in pg_queue_signal */
+ if (sig >= PG_SIGNAL_COUNT || sig < 0)
{
errno = EINVAL;
return -1;
errno = EINVAL;
return -1;
}
- wsprintf(pipename, "\\\\.\\pipe\\pgsignal_%i", pid);
- if (!CallNamedPipe(pipename, &sigData, 1, &sigRet, 1, &bytes, 1000))
+ snprintf(pipename, sizeof(pipename), "\\\\.\\pipe\\pgsignal_%u", pid);
+
+ if (CallNamedPipe(pipename, &sigData, 1, &sigRet, 1, &bytes, 1000))
{
- if (GetLastError() == ERROR_FILE_NOT_FOUND)
+ if (bytes != 1 || sigRet != sig)
+ {
errno = ESRCH;
- else if (GetLastError() == ERROR_ACCESS_DENIED)
- errno = EPERM;
- else
- errno = EINVAL;
- return -1;
- }
- if (bytes != 1 || sigRet != sig)
- {
- errno = ESRCH;
- return -1;
+ return -1;
+ }
+ return 0;
}
- return 0;
+ if (GetLastError() == ERROR_FILE_NOT_FOUND)
+ errno = ESRCH;
+ else if (GetLastError() == ERROR_ACCESS_DENIED)
+ errno = EPERM;
+ else
+ errno = EINVAL;
+ return -1;
}
+
#endif