Skip to content

Commit 6f21f4a

Browse files
committed
Move pgkill out into /port so pg_ctl can use it on Win32.
1 parent d157b7b commit 6f21f4a

File tree

5 files changed

+67
-46
lines changed

5 files changed

+67
-46
lines changed

configure

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12014,6 +12014,7 @@ esac
1201412014
case $host_os in mingw*)
1201512015
LIBOBJS="$LIBOBJS copydir.$ac_objext"
1201612016
LIBOBJS="$LIBOBJS gettimeofday.$ac_objext"
12017+
LIBOBJS="$LIBOBJS kill.$ac_objext"
1201712018
LIBOBJS="$LIBOBJS open.$ac_objext"
1201812019
LIBOBJS="$LIBOBJS rand.$ac_objext" ;;
1201912020
esac

configure.in

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
dnl Process this file with autoconf to produce a configure script.
2-
dnl $PostgreSQL: pgsql/configure.in,v 1.358 2004/05/22 00:34:49 tgl Exp $
2+
dnl $PostgreSQL: pgsql/configure.in,v 1.359 2004/05/27 13:08:48 momjian Exp $
33
dnl
44
dnl Developers, please strive to achieve this order:
55
dnl
@@ -891,6 +891,7 @@ esac
891891
case $host_os in mingw*)
892892
AC_LIBOBJ(copydir)
893893
AC_LIBOBJ(gettimeofday)
894+
AC_LIBOBJ(kill)
894895
AC_LIBOBJ(open)
895896
AC_LIBOBJ(rand) ;;
896897
esac

src/backend/port/win32/signal.c

Lines changed: 1 addition & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
77
*
88
* IDENTIFICATION
9-
* $PostgreSQL: pgsql/src/backend/port/win32/signal.c,v 1.1 2004/04/12 16:19:18 momjian Exp $
9+
* $PostgreSQL: pgsql/src/backend/port/win32/signal.c,v 1.2 2004/05/27 13:08:50 momjian Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -152,46 +152,6 @@ pqsignal(int signum, pqsigfunc handler)
152152
return prevfunc;
153153
}
154154

155-
/* signal sending */
156-
int
157-
pqkill(int pid, int sig)
158-
{
159-
char pipename[128];
160-
BYTE sigData = sig;
161-
BYTE sigRet = 0;
162-
DWORD bytes;
163-
164-
if (sig >= PG_SIGNAL_COUNT || sig <= 0)
165-
{
166-
errno = EINVAL;
167-
return -1;
168-
}
169-
if (pid <= 0)
170-
{
171-
/* No support for process groups */
172-
errno = EINVAL;
173-
return -1;
174-
}
175-
wsprintf(pipename, "\\\\.\\pipe\\pgsignal_%i", pid);
176-
if (!CallNamedPipe(pipename, &sigData, 1, &sigRet, 1, &bytes, 1000))
177-
{
178-
if (GetLastError() == ERROR_FILE_NOT_FOUND)
179-
errno = ESRCH;
180-
else if (GetLastError() == ERROR_ACCESS_DENIED)
181-
errno = EPERM;
182-
else
183-
errno = EINVAL;
184-
return -1;
185-
}
186-
if (bytes != 1 || sigRet != sig)
187-
{
188-
errno = ESRCH;
189-
return -1;
190-
}
191-
192-
return 0;
193-
}
194-
195155
/*
196156
* All functions below execute on the signal handler thread
197157
* and must be synchronized as such!

src/include/port/win32.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $PostgreSQL: pgsql/src/include/port/win32.h,v 1.23 2004/04/22 03:51:24 momjian Exp $ */
1+
/* $PostgreSQL: pgsql/src/include/port/win32.h,v 1.24 2004/05/27 13:08:54 momjian Exp $ */
22

33
/* undefine and redefine after #include */
44
#undef mkdir
@@ -116,10 +116,10 @@ void pg_queue_signal(int signum);
116116
#define SIG_ERR ((pqsigfunc)-1)
117117
#define SIG_IGN ((pqsigfunc)1)
118118

119-
#ifndef FRONTEND
120-
#define kill(pid,sig) pqkill(pid,sig)
121-
extern int pqkill(int pid, int sig);
119+
#define kill(pid,sig) pgkill(pid,sig)
120+
extern int pgkill(int pid, int sig);
122121

122+
#ifndef FRONTEND
123123
#define pg_usleep(t) pgwin32_backend_usleep(t)
124124
void pgwin32_backend_usleep(long microsec);
125125
#endif

src/port/kill.c

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*-------------------------------------------------------------------------
2+
*
3+
* kill.c
4+
* kill()
5+
*
6+
* Copyright (c) 1996-2003, PostgreSQL Global Development Group
7+
*
8+
* This is a replacement version of kill for Win32 which sends
9+
* signals that the backend can recognize.
10+
*
11+
* IDENTIFICATION
12+
* $PostgreSQL: pgsql/src/port/kill.c,v 1.1 2004/05/27 13:08:57 momjian Exp $
13+
*
14+
*-------------------------------------------------------------------------
15+
*/
16+
17+
#include "postgres.h"
18+
19+
#ifdef WIN32
20+
/* signal sending */
21+
int
22+
pgkill(int pid, int sig)
23+
{
24+
char pipename[128];
25+
BYTE sigData = sig;
26+
BYTE sigRet = 0;
27+
DWORD bytes;
28+
29+
if (sig >= PG_SIGNAL_COUNT || sig <= 0)
30+
{
31+
errno = EINVAL;
32+
return -1;
33+
}
34+
if (pid <= 0)
35+
{
36+
/* No support for process groups */
37+
errno = EINVAL;
38+
return -1;
39+
}
40+
wsprintf(pipename, "\\\\.\\pipe\\pgsignal_%i", pid);
41+
if (!CallNamedPipe(pipename, &sigData, 1, &sigRet, 1, &bytes, 1000))
42+
{
43+
if (GetLastError() == ERROR_FILE_NOT_FOUND)
44+
errno = ESRCH;
45+
else if (GetLastError() == ERROR_ACCESS_DENIED)
46+
errno = EPERM;
47+
else
48+
errno = EINVAL;
49+
return -1;
50+
}
51+
if (bytes != 1 || sigRet != sig)
52+
{
53+
errno = ESRCH;
54+
return -1;
55+
}
56+
57+
return 0;
58+
}
59+
#endif

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy