On Thu, Dec 19, 2019 at 01:46:33PM +0900, Kyotaro Horiguchi wrote: > I found some similar places by grep'ing for windows version names the > whole source tree. > > - The comment for trapsig is mentioning win98/Me/NT/2000/XP.
Let's refresh the comment here, as per the following: https://docs.microsoft.com/en-us/previous-versions/xdkz3x12(v=vs.140) > - We don't need the (only) caller site of IsWindows7OrGreater()? The compiled code can still run with Windows Server 2008. > - The comment for AddUserToTokenDacl() is mentioning "XP/2K3, > Vista/2008". Keeping some context is still good here IMO. > - InitializeLDAPConnection dynamically loads WLDAP32.DLL for Windows > 2000. It could either be statically loaded or could be left as it > is, but the comment seems to need a change in either case. Looks safer to me to keep it. > - The comment for IsoLocaleName mentioning Vista and Visual Studio > 2012. It is good to keep some history in this context. > - install-windows.sgml is mentioning "XP and later" around line 117. But this still applies to XP, even if compilation is supported from Windows 7. > - installation.sgml is mentioning NT/2000/XP as platforms that don't > support adduser/su, command. No objections to simplify that a bit. Attached is a simplified version. It is smaller than the previous one, but that's already a good cut. I have also done some testing with the service manager to check after pipe_read_line(), and that works. Thoughts? -- Michael
diff --git a/src/common/exec.c b/src/common/exec.c
index 359442cf0c..9b20195ce1 100644
--- a/src/common/exec.c
+++ b/src/common/exec.c
@@ -364,7 +364,6 @@ find_other_exec(const char *argv0, const char *target,
static char *
pipe_read_line(char *cmd, char *line, int maxsize)
{
-#ifndef WIN32
FILE *pgver;
/* flush output buffers in case popen does not... */
@@ -393,130 +392,6 @@ pipe_read_line(char *cmd, char *line, int maxsize)
return NULL;
return line;
-#else /* WIN32 */
-
- SECURITY_ATTRIBUTES sattr;
- HANDLE childstdoutrd,
- childstdoutwr,
- childstdoutrddup;
- PROCESS_INFORMATION pi;
- STARTUPINFO si;
- char *retval = NULL;
-
- sattr.nLength = sizeof(SECURITY_ATTRIBUTES);
- sattr.bInheritHandle = TRUE;
- sattr.lpSecurityDescriptor = NULL;
-
- if (!CreatePipe(&childstdoutrd, &childstdoutwr, &sattr, 0))
- return NULL;
-
- if (!DuplicateHandle(GetCurrentProcess(),
- childstdoutrd,
- GetCurrentProcess(),
- &childstdoutrddup,
- 0,
- FALSE,
- DUPLICATE_SAME_ACCESS))
- {
- CloseHandle(childstdoutrd);
- CloseHandle(childstdoutwr);
- return NULL;
- }
-
- CloseHandle(childstdoutrd);
-
- ZeroMemory(&pi, sizeof(pi));
- ZeroMemory(&si, sizeof(si));
- si.cb = sizeof(si);
- si.dwFlags = STARTF_USESTDHANDLES;
- si.hStdError = childstdoutwr;
- si.hStdOutput = childstdoutwr;
- si.hStdInput = INVALID_HANDLE_VALUE;
-
- if (CreateProcess(NULL,
- cmd,
- NULL,
- NULL,
- TRUE,
- 0,
- NULL,
- NULL,
- &si,
- &pi))
- {
- /* Successfully started the process */
- char *lineptr;
-
- ZeroMemory(line, maxsize);
-
- /* Try to read at least one line from the pipe */
- /* This may require more than one wait/read attempt */
- for (lineptr = line; lineptr < line + maxsize - 1;)
- {
- DWORD bytesread = 0;
-
- /* Let's see if we can read */
- if (WaitForSingleObject(childstdoutrddup, 10000) != WAIT_OBJECT_0)
- break; /* Timeout, but perhaps we got a line already */
-
- if (!ReadFile(childstdoutrddup, lineptr, maxsize - (lineptr - line),
- &bytesread, NULL))
- break; /* Error, but perhaps we got a line already */
-
- lineptr += strlen(lineptr);
-
- if (!bytesread)
- break; /* EOF */
-
- if (strchr(line, '\n'))
- break; /* One or more lines read */
- }
-
- if (lineptr != line)
- {
- /* OK, we read some data */
- int len;
-
- /* If we got more than one line, cut off after the first \n */
- lineptr = strchr(line, '\n');
- if (lineptr)
- *(lineptr + 1) = '\0';
-
- len = strlen(line);
-
- /*
- * If EOL is \r\n, convert to just \n. Because stdout is a
- * text-mode stream, the \n output by the child process is
- * received as \r\n, so we convert it to \n. The server main.c
- * sets setvbuf(stdout, NULL, _IONBF, 0) which has the effect of
- * disabling \n to \r\n expansion for stdout.
- */
- if (len >= 2 && line[len - 2] == '\r' && line[len - 1] == '\n')
- {
- line[len - 2] = '\n';
- line[len - 1] = '\0';
- len--;
- }
-
- /*
- * We emulate fgets() behaviour. So if there is no newline at the
- * end, we add one...
- */
- if (len == 0 || line[len - 1] != '\n')
- strcat(line, "\n");
-
- retval = line;
- }
-
- CloseHandle(pi.hProcess);
- CloseHandle(pi.hThread);
- }
-
- CloseHandle(childstdoutwr);
- CloseHandle(childstdoutrddup);
-
- return retval;
-#endif /* WIN32 */
}
diff --git a/src/port/getaddrinfo.c b/src/port/getaddrinfo.c
index b8b7827356..3892fafb8c 100644
--- a/src/port/getaddrinfo.c
+++ b/src/port/getaddrinfo.c
@@ -69,10 +69,9 @@ haveNativeWindowsIPv6routines(void)
return (getaddrinfo_ptr != NULL);
/*
- * For Windows XP and Windows 2003 (and longhorn/vista), the IPv6 routines
- * are present in the WinSock 2 library (ws2_32.dll). Try that first
+ * For Windows XP and later versions, the IPv6 routines are present in
+ * the WinSock 2 library (ws2_32.dll).
*/
-
hLibrary = LoadLibraryA("ws2_32");
if (hLibrary == NULL || GetProcAddress(hLibrary, "getaddrinfo") == NULL)
@@ -83,13 +82,6 @@ haveNativeWindowsIPv6routines(void)
*/
if (hLibrary != NULL)
FreeLibrary(hLibrary);
-
- /*
- * In Windows 2000, there was only the IPv6 Technology Preview look in
- * the IPv6 WinSock library (wship6.dll).
- */
-
- hLibrary = LoadLibraryA("wship6");
}
/* If hLibrary is null, we couldn't find a dll with functions */
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index 7f1534aebb..bb6656e406 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -2016,11 +2016,10 @@ make_postgres(FILE *cmdfd)
* exit() directly.
*
* Also note the behaviour of Windows with SIGINT, which says this:
- * Note SIGINT is not supported for any Win32 application, including
- * Windows 98/Me and Windows NT/2000/XP. When a CTRL+C interrupt occurs,
- * Win32 operating systems generate a new thread to specifically handle
- * that interrupt. This can cause a single-thread application such as UNIX,
- * to become multithreaded, resulting in unexpected behavior.
+ * SIGINT is not supported for any Win32 application. When a CTRL+C interrupt
+ * occurs, Win32 operating systems generate a new thread to specifically
+ * handle that interrupt. This can cause a single-thread application, such as
+ * one in UNIX, to become multithreaded and cause unexpected behavior.
*
* I have no idea how to handle this. (Strange they call UNIX an application!)
* So this will need some testing on Windows.
diff --git a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgml
index 08556b6ebe..e492d8957c 100644
--- a/doc/src/sgml/install-windows.sgml
+++ b/doc/src/sgml/install-windows.sgml
@@ -46,8 +46,7 @@
<productname>Cygwin</productname> is not recommended for running a
production server, and it should only be used for running on
older versions of <productname>Windows</productname> where
- the native build does not work, such as
- <productname>Windows 98</productname>. The official
+ the native build does not work. The official
binaries are built using <productname>Visual Studio</productname>.
</para>
signature.asc
Description: PGP signature
