changeset 40235:5a52ef2d4772

all: Update URLs to msdn.microsoft.com. * lib/stat-w32.c et al.: Update URLs after most of msdn.microsoft.com was moved to docs.microsoft.com.
author Bruno Haible <bruno@clisp.org>
date Thu, 14 Mar 2019 09:49:24 +0100
parents fab7ce42e03f
children e3496deebf30
files ChangeLog doc/acl-resources.txt doc/ld-output-def.texi doc/windows-stat-timespec.texi lib/clean-temp.c lib/ctime.c lib/getprogname.c lib/gettimeofday.c lib/localename.c lib/localtime.c lib/mktime.c lib/msvc-inval.h lib/pathmax.h lib/stat-time.h lib/stat-w32.c lib/stat.c lib/strftime-fixes.c lib/sys_socket.in.h lib/tmpfile.c lib/tzset.c lib/utime.c lib/utimecmp.c lib/utimens.c lib/vasnprintf.c lib/wcsftime.c m4/gethostname.m4 tests/nap.h tests/test-utimens-common.h
diffstat 28 files changed, 92 insertions(+), 85 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Mar 13 20:00:53 2019 +0100
+++ b/ChangeLog	Thu Mar 14 09:49:24 2019 +0100
@@ -1,3 +1,9 @@
+2019-03-14  Bruno Haible  <bruno@clisp.org>
+
+	all: Update URLs to msdn.microsoft.com.
+	* lib/stat-w32.c et al.: Update URLs after most of msdn.microsoft.com
+	was moved to docs.microsoft.com.
+
 2019-03-13  Bruno Haible  <bruno@clisp.org>
 
 	gnulib-tool: Clarify the coding style.
--- a/doc/acl-resources.txt	Wed Mar 13 20:00:53 2019 +0100
+++ b/doc/acl-resources.txt	Thu Mar 14 09:49:24 2019 +0100
@@ -511,9 +511,9 @@
 Introduction:
   https://helgeklein.com/blog/2009/03/permissions-a-primer-or-dacl-sacl-owner-sid-and-ace-explained/
 Manual pages:
-  https://msdn.microsoft.com/en-us/library/aa374872.aspx
-  https://msdn.microsoft.com/en-us/library/aa446659.aspx
-  https://msdn.microsoft.com/en-us/library/aa374931.aspx
+  https://docs.microsoft.com/en-us/windows/desktop/SecAuthZ/access-control-lists
+  https://docs.microsoft.com/en-us/windows/desktop/SecAuthZ/getting-information-from-an-acl
+  https://docs.microsoft.com/en-us/windows/desktop/api/winnt/ns-winnt-_acl
   https://en.wikipedia.org/wiki/Cacls
 Library:
   ?
--- a/doc/ld-output-def.texi	Wed Mar 13 20:00:53 2019 +0100
+++ b/doc/ld-output-def.texi	Thu Mar 14 09:49:24 2019 +0100
@@ -15,7 +15,8 @@
 
 @itemize @bullet
 @item Use DUMPBIN /EXPORTS.
-This is explained in @url{https://support.microsoft.com/kb/131313/en-us}.
+This is explained in
+@url{https://docs.microsoft.com/en-us/cpp/build/reference/dash-exports}.
 The tool does not generate DEF files directly, so its output needs to
 be post processed manually:
 @smallexample
--- a/doc/windows-stat-timespec.texi	Wed Mar 13 20:00:53 2019 +0100
+++ b/doc/windows-stat-timespec.texi	Thu Mar 14 09:49:24 2019 +0100
@@ -10,4 +10,4 @@
 Note: On some types of file systems, the timestamp resolution is limited
 by the file system.  For example, on FAT file systems, @code{st_mtim}
 only has a resolution of 2 seconds.  For more details, see
-@url{https://msdn.microsoft.com/en-us/library/ms724290.aspx}.
+@url{https://docs.microsoft.com/en-us/windows/desktop/SysInfo/file-times}.
--- a/lib/clean-temp.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/clean-temp.c	Thu Mar 14 09:49:24 2019 +0100
@@ -580,7 +580,7 @@
       OSVERSIONINFO v;
 
       /* According to
-         <https://msdn.microsoft.com/en-us/library/ms724451.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getversionexa>
          this structure must be initialized as follows:  */
       v.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
 
--- a/lib/ctime.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/ctime.c	Thu Mar 14 09:49:24 2019 +0100
@@ -31,7 +31,7 @@
   /* Rectify the value of the environment variable TZ.
      There are four possible kinds of such values:
        - Traditional US time zone names, e.g. "PST8PDT".  Syntax: see
-         <https://msdn.microsoft.com/en-us/library/90s5c885.aspx>
+         <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/tzset>
        - Time zone names based on geography, that contain one or more
          slashes, e.g. "Europe/Moscow".
        - Time zone names based on geography, without slashes, e.g.
--- a/lib/getprogname.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/getprogname.c	Thu Mar 14 09:49:24 2019 +0100
@@ -70,7 +70,7 @@
     p = "?";
   return last_component (p);
 # elif HAVE_DECL___ARGV                                     /* mingw, MSVC */
-  /* https://msdn.microsoft.com/en-us/library/dn727674.aspx */
+  /* https://docs.microsoft.com/en-us/cpp/c-runtime-library/argc-argv-wargv */
   const char *p = __argv && __argv[0] ? __argv[0] : "?";
   return last_component (p);
 # elif HAVE_VAR___PROGNAME                                  /* OpenBSD, Android, QNX */
--- a/lib/gettimeofday.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/gettimeofday.c	Thu Mar 14 09:49:24 2019 +0100
@@ -72,10 +72,10 @@
 
   /* On native Windows, there are two ways to get the current time:
      GetSystemTimeAsFileTime
-     <https://msdn.microsoft.com/en-us/library/ms724397.aspx>
+     <https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getsystemtimeasfiletime>
      or
      GetSystemTimePreciseAsFileTime
-     <https://msdn.microsoft.com/en-us/library/hh706895.aspx>.
+     <https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getsystemtimepreciseasfiletime>.
      GetSystemTimeAsFileTime produces values that jump by increments of
      15.627 milliseconds (!) on average.
      Whereas GetSystemTimePreciseAsFileTime values usually jump by 1 or 2
@@ -92,7 +92,7 @@
     GetSystemTimeAsFileTime (&current_time);
 
   /* Convert from FILETIME to 'struct timeval'.  */
-  /* FILETIME: <https://msdn.microsoft.com/en-us/library/ms724284.aspx> */
+  /* FILETIME: <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ns-minwinbase-filetime> */
   ULONGLONG since_1601 =
     ((ULONGLONG) current_time.dwHighDateTime << 32)
     | (ULONGLONG) current_time.dwLowDateTime;
--- a/lib/localename.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/localename.c	Thu Mar 14 09:49:24 2019 +0100
@@ -2296,8 +2296,8 @@
           }
         return "wen";
       case LANG_SOTHO:
-        /* <https://msdn.microsoft.com/en-us/library/dd318693.aspx> calls
-           it "Sesotho sa Leboa"; according to
+        /* <https://docs.microsoft.com/en-us/windows/desktop/Intl/language-identifier-constants-and-strings>
+           calls it "Sesotho sa Leboa"; according to
            <https://www.ethnologue.com/show_language.asp?code=nso>
            <https://www.ethnologue.com/show_language.asp?code=sot>
            it's the same as Northern Sotho.  */
--- a/lib/localtime.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/localtime.c	Thu Mar 14 09:49:24 2019 +0100
@@ -34,7 +34,7 @@
   /* Rectify the value of the environment variable TZ.
      There are four possible kinds of such values:
        - Traditional US time zone names, e.g. "PST8PDT".  Syntax: see
-         <https://msdn.microsoft.com/en-us/library/90s5c885.aspx>
+         <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/tzset>
        - Time zone names based on geography, that contain one or more
          slashes, e.g. "Europe/Moscow".
        - Time zone names based on geography, without slashes, e.g.
--- a/lib/mktime.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/mktime.c	Thu Mar 14 09:49:24 2019 +0100
@@ -72,7 +72,7 @@
   /* Rectify the value of the environment variable TZ.
      There are four possible kinds of such values:
        - Traditional US time zone names, e.g. "PST8PDT".  Syntax: see
-         <https://msdn.microsoft.com/en-us/library/90s5c885.aspx>
+         <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/tzset>
        - Time zone names based on geography, that contain one or more
          slashes, e.g. "Europe/Moscow".
        - Time zone names based on geography, without slashes, e.g.
--- a/lib/msvc-inval.h	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/msvc-inval.h	Thu Mar 14 09:49:24 2019 +0100
@@ -95,7 +95,7 @@
 
 /* Gnulib can define its own status codes, as described in the page
    "Raising Software Exceptions" on microsoft.com
-   <https://msdn.microsoft.com/en-us/library/het71c37.aspx>.
+   <https://docs.microsoft.com/en-us/cpp/cpp/raising-software-exceptions>.
    Our status codes are composed of
      - 0xE0000000, mandatory for all user-defined status codes,
      - 0x474E550, a API identifier ("GNU"),
@@ -106,7 +106,7 @@
 #  if defined _MSC_VER
 /* A compiler that supports __try/__except, as described in the page
    "try-except statement" on microsoft.com
-   <https://msdn.microsoft.com/en-us/library/s58ftw19.aspx>.
+   <https://docs.microsoft.com/en-us/cpp/cpp/try-except-statement>.
    With __try/__except, we can use the multithread-safe exception handling.  */
 
 #   ifdef __cplusplus
--- a/lib/pathmax.h	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/pathmax.h	Thu Mar 14 09:49:24 2019 +0100
@@ -68,7 +68,7 @@
 # if defined _WIN32 && ! defined __CYGWIN__
 /* The page "Naming Files, Paths, and Namespaces" on msdn.microsoft.com,
    section "Maximum Path Length Limitation",
-   <https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath>
+   <https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#maximum-path-length-limitation>
    explains that the maximum size of a filename, including the terminating
    NUL byte, is 260 = 3 + 256 + 1.
    This is the same value as
--- a/lib/stat-time.h	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/stat-time.h	Thu Mar 14 09:49:24 2019 +0100
@@ -171,7 +171,7 @@
 #elif defined _WIN32 && ! defined __CYGWIN__
   /* Native Windows platforms (but not Cygwin) put the "file creation
      time" in st_ctime (!).  See
-     <https://msdn.microsoft.com/en-us/library/14h5k7ff(VS.80).aspx>.  */
+     <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/stat-functions>.  */
 # if _GL_WINDOWS_STAT_TIMESPEC
   t = st->st_ctim;
 # else
--- a/lib/stat-w32.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/stat-w32.c	Thu Mar 14 09:49:24 2019 +0100
@@ -80,7 +80,7 @@
 _gl_convert_FILETIME_to_timespec (const FILETIME *ft)
 {
   struct timespec result;
-  /* FILETIME: <https://msdn.microsoft.com/en-us/library/ms724284.aspx> */
+  /* FILETIME: <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ns-minwinbase-filetime> */
   unsigned long long since_1601 =
     ((unsigned long long) ft->dwHighDateTime << 32)
     | (unsigned long long) ft->dwLowDateTime;
@@ -104,7 +104,7 @@
 time_t
 _gl_convert_FILETIME_to_POSIX (const FILETIME *ft)
 {
-  /* FILETIME: <https://msdn.microsoft.com/en-us/library/ms724284.aspx> */
+  /* FILETIME: <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ns-minwinbase-filetime> */
   unsigned long long since_1601 =
     ((unsigned long long) ft->dwHighDateTime << 32)
     | (unsigned long long) ft->dwLowDateTime;
@@ -128,7 +128,7 @@
 _gl_fstat_by_handle (HANDLE h, const char *path, struct stat *buf)
 {
   /* GetFileType
-     <https://msdn.microsoft.com/en-us/library/aa364960.aspx> */
+     <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfiletype> */
   DWORD type = GetFileType (h);
   if (type == FILE_TYPE_DISK)
     {
@@ -137,16 +137,16 @@
 
       /* st_mode can be determined through
          GetFileAttributesEx
-         <https://msdn.microsoft.com/en-us/library/aa364946.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa365739.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileattributesexa>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_win32_file_attribute_data>
          or through
          GetFileInformationByHandle
-         <https://msdn.microsoft.com/en-us/library/aa364952.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa363788.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileinformationbyhandle>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_by_handle_file_information>
          or through
          GetFileInformationByHandleEx with argument FileBasicInfo
-         <https://msdn.microsoft.com/en-us/library/aa364953.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa364217.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-getfileinformationbyhandleex>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/ns-winbase-_file_basic_info>
          The latter requires -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher.  */
       BY_HANDLE_FILE_INFORMATION info;
       if (! GetFileInformationByHandle (h, &info))
@@ -162,12 +162,12 @@
 #if _GL_WINDOWS_STAT_INODES
       /* st_ino can be determined through
          GetFileInformationByHandle
-         <https://msdn.microsoft.com/en-us/library/aa364952.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa363788.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileinformationbyhandle>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_by_handle_file_information>
          as 64 bits, or through
          GetFileInformationByHandleEx with argument FileIdInfo
-         <https://msdn.microsoft.com/en-us/library/aa364953.aspx>
-         <https://msdn.microsoft.com/en-us/library/hh802691.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-getfileinformationbyhandleex>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/ns-winbase-_file_id_info>
          as 128 bits.
          The latter requires -D_WIN32_WINNT=_WIN32_WINNT_WIN8 or higher.  */
       /* Experiments show that GetFileInformationByHandleEx does not provide
@@ -238,11 +238,11 @@
              If the file name is already known, use it. Otherwise, for
              non-empty files, it can be determined through
              GetFinalPathNameByHandle
-             <https://msdn.microsoft.com/en-us/library/aa364962.aspx>
+             <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfinalpathnamebyhandlea>
              or through
              GetFileInformationByHandleEx with argument FileNameInfo
-             <https://msdn.microsoft.com/en-us/library/aa364953.aspx>
-             <https://msdn.microsoft.com/en-us/library/aa364388.aspx>
+             <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-getfileinformationbyhandleex>
+             <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/ns-winbase-_file_name_info>
              Both require -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher.  */
           if (info.nFileSizeHigh > 0 || info.nFileSizeLow > 0)
             {
@@ -277,12 +277,12 @@
 
       /* st_nlink can be determined through
          GetFileInformationByHandle
-         <https://msdn.microsoft.com/en-us/library/aa364952.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa363788.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileinformationbyhandle>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_by_handle_file_information>
          or through
          GetFileInformationByHandleEx with argument FileStandardInfo
-         <https://msdn.microsoft.com/en-us/library/aa364953.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa364401.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-getfileinformationbyhandleex>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/ns-winbase-_file_standard_info>
          The latter requires -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher.  */
       buf->st_nlink = (info.nNumberOfLinks > SHRT_MAX ? SHRT_MAX : info.nNumberOfLinks);
 
@@ -295,19 +295,19 @@
 
       /* st_size can be determined through
          GetFileSizeEx
-         <https://msdn.microsoft.com/en-us/library/aa364957.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfilesizeex>
          or through
          GetFileAttributesEx
-         <https://msdn.microsoft.com/en-us/library/aa364946.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa365739.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileattributesexa>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_win32_file_attribute_data>
          or through
          GetFileInformationByHandle
-         <https://msdn.microsoft.com/en-us/library/aa364952.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa363788.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileinformationbyhandle>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_by_handle_file_information>
          or through
          GetFileInformationByHandleEx with argument FileStandardInfo
-         <https://msdn.microsoft.com/en-us/library/aa364953.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa364401.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-getfileinformationbyhandleex>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/ns-winbase-_file_standard_info>
          The latter requires -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher.  */
       if (sizeof (buf->st_size) <= 4)
         /* Range check already done above.  */
@@ -317,19 +317,19 @@
 
       /* st_atime, st_mtime, st_ctime can be determined through
          GetFileTime
-         <https://msdn.microsoft.com/en-us/library/ms724320.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfiletime>
          or through
          GetFileAttributesEx
-         <https://msdn.microsoft.com/en-us/library/aa364946.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa365739.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileattributesexa>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_win32_file_attribute_data>
          or through
          GetFileInformationByHandle
-         <https://msdn.microsoft.com/en-us/library/aa364952.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa363788.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileinformationbyhandle>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_by_handle_file_information>
          or through
          GetFileInformationByHandleEx with argument FileBasicInfo
-         <https://msdn.microsoft.com/en-us/library/aa364953.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa364217.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-getfileinformationbyhandleex>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/ns-winbase-_file_basic_info>
          The latter requires -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher.  */
 #if _GL_WINDOWS_STAT_TIMESPEC
       buf->st_atim = _gl_convert_FILETIME_to_timespec (&info.ftLastAccessTime);
--- a/lib/stat.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/stat.c	Thu Mar 14 09:49:24 2019 +0100
@@ -111,7 +111,7 @@
      <https://lists.gnu.org/r/bug-gnulib/2017-04/msg00134.html>  */
   /* XXX Should we convert to wchar_t* and prepend '\\?\', in order to work
      around length limitations
-     <https://msdn.microsoft.com/en-us/library/aa365247.aspx> ?  */
+     <https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file> ?  */
 
   /* POSIX <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13>
      specifies: "More than two leading <slash> characters shall be treated as
@@ -194,8 +194,8 @@
 
       /* Open a handle to the file.
          CreateFile
-         <https://msdn.microsoft.com/en-us/library/aa363858.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa363874.aspx>  */
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-createfilea>
+         <https://docs.microsoft.com/en-us/windows/desktop/FileIO/creating-and-opening-files>  */
       HANDLE h =
         CreateFile (rname,
                     FILE_READ_ATTRIBUTES,
@@ -236,13 +236,13 @@
 
       /* Get the details about the directory entry.  This can be done through
          FindFirstFile
-         <https://msdn.microsoft.com/en-us/library/aa364418.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa365740.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-findfirstfilea>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ns-minwinbase-_win32_find_dataa>
          or through
          FindFirstFileEx with argument FindExInfoBasic
-         <https://msdn.microsoft.com/en-us/library/aa364419.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa364415.aspx>
-         <https://msdn.microsoft.com/en-us/library/aa365740.aspx>  */
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-findfirstfileexa>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ne-minwinbase-findex_info_levels>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ns-minwinbase-_win32_find_dataa>  */
       WIN32_FIND_DATA info;
       HANDLE h = FindFirstFile (rname, &info);
       if (h == INVALID_HANDLE_VALUE)
--- a/lib/strftime-fixes.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/strftime-fixes.c	Thu Mar 14 09:49:24 2019 +0100
@@ -31,7 +31,7 @@
   /* Rectify the value of the environment variable TZ.
      There are four possible kinds of such values:
        - Traditional US time zone names, e.g. "PST8PDT".  Syntax: see
-         <https://msdn.microsoft.com/en-us/library/90s5c885.aspx>
+         <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/tzset>
        - Time zone names based on geography, that contain one or more
          slashes, e.g. "Europe/Moscow".
        - Time zone names based on geography, without slashes, e.g.
--- a/lib/sys_socket.in.h	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/sys_socket.in.h	Thu Mar 14 09:49:24 2019 +0100
@@ -169,7 +169,7 @@
    code may not run on older Windows releases then.  My Windows 2000
    box was not able to run the code, for example.  The situation is
    slightly confusing because
-   <https://msdn.microsoft.com/en-us/library/ms738520>
+   <https://docs.microsoft.com/en-us/windows/desktop/api/ws2tcpip/nf-ws2tcpip-getaddrinfo>
    suggests that getaddrinfo should be available on all Windows
    releases. */
 
--- a/lib/tmpfile.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/tmpfile.c	Thu Mar 14 09:49:24 2019 +0100
@@ -67,7 +67,7 @@
       OSVERSIONINFO v;
 
       /* According to
-         <https://msdn.microsoft.com/en-us/library/ms724451.aspx>
+         <https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getversionexa>
          this structure must be initialized as follows:  */
       v.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
 
--- a/lib/tzset.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/tzset.c	Thu Mar 14 09:49:24 2019 +0100
@@ -44,7 +44,7 @@
   /* Rectify the value of the environment variable TZ.
      There are four possible kinds of such values:
        - Traditional US time zone names, e.g. "PST8PDT".  Syntax: see
-         <https://msdn.microsoft.com/en-us/library/90s5c885.aspx>
+         <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/tzset>
        - Time zone names based on geography, that contain one or more
          slashes, e.g. "Europe/Moscow".
        - Time zone names based on geography, without slashes, e.g.
@@ -68,8 +68,8 @@
     _putenv ("TZ=");
 
   /* On native Windows, tzset() is deprecated.  Use _tzset() instead.  See
-     https://msdn.microsoft.com/en-us/library/ms235451.aspx
-     https://msdn.microsoft.com/en-us/library/90s5c885.aspx  */
+     <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/posix-tzset>
+     <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/tzset>  */
   _tzset ();
 #elif HAVE_TZSET
   tzset ();
--- a/lib/utime.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/utime.c	Thu Mar 14 09:49:24 2019 +0100
@@ -83,8 +83,8 @@
 
   /* Open a handle to the file.
      CreateFile
-     <https://msdn.microsoft.com/en-us/library/aa363858.aspx>
-     <https://msdn.microsoft.com/en-us/library/aa363874.aspx>  */
+     <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-createfilea>
+     <https://docs.microsoft.com/en-us/windows/desktop/FileIO/creating-and-opening-files>  */
   HANDLE handle =
     CreateFile (rname,
                 FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES,
@@ -105,7 +105,7 @@
   if (check_dir)
     {
       /* GetFileAttributes
-         <https://msdn.microsoft.com/en-us/library/aa364944.aspx>  */
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileattributesa>  */
       DWORD attributes = GetFileAttributes (rname);
       if (attributes == INVALID_FILE_ATTRIBUTES)
         {
@@ -125,18 +125,18 @@
 
   {
     /* Use SetFileTime(). See
-       <https://msdn.microsoft.com/en-us/library/ms724933.aspx>
-       <https://msdn.microsoft.com/en-us/library/ms724284.aspx>  */
+       <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-setfiletime>
+       <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ns-minwinbase-filetime>  */
     FILETIME last_access_time;
     FILETIME last_write_time;
     if (ts == NULL)
       {
         /* GetSystemTimeAsFileTime is the same as
            GetSystemTime followed by SystemTimeToFileTime.
-           <https://msdn.microsoft.com/en-us/library/ms724397.aspx>.
+           <https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getsystemtimeasfiletime>.
            It would be overkill to use
            GetSystemTimePreciseAsFileTime
-           <https://msdn.microsoft.com/en-us/library/hh706895.aspx>.  */
+           <https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getsystemtimepreciseasfiletime>.  */
         FILETIME current_time;
         GetSystemTimeAsFileTime (&current_time);
         last_access_time = current_time;
--- a/lib/utimecmp.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/utimecmp.c	Thu Mar 14 09:49:24 2019 +0100
@@ -49,7 +49,7 @@
 enum { SYSCALL_RESOLUTION = 1 };
 #elif defined _WIN32 && ! defined __CYGWIN__
 /* On native Windows, file times have 100 ns resolution. See
-   <https://msdn.microsoft.com/en-us/library/ms724284.aspx>  */
+   <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ns-minwinbase-filetime>  */
 enum { SYSCALL_RESOLUTION = 100 };
 #elif ((HAVE_FUTIMESAT || HAVE_WORKING_UTIMES)                  \
        && (defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC             \
--- a/lib/utimens.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/utimens.c	Thu Mar 14 09:49:24 2019 +0100
@@ -288,8 +288,8 @@
 
 #ifdef USE_SETFILETIME
   /* On native Windows, use SetFileTime(). See
-     <https://msdn.microsoft.com/en-us/library/ms724933.aspx>
-     <https://msdn.microsoft.com/en-us/library/ms724284.aspx>  */
+     <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-setfiletime>
+     <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ns-minwinbase-filetime>  */
   if (0 <= fd)
     {
       HANDLE handle;
@@ -307,10 +307,10 @@
       if (ts == NULL || ts[0].tv_nsec == UTIME_NOW || ts[1].tv_nsec == UTIME_NOW)
         {
           /* GetSystemTimeAsFileTime
-             <https://msdn.microsoft.com/en-us/library/ms724397.aspx>.
+             <https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getsystemtimeasfiletime>.
              It would be overkill to use
              GetSystemTimePreciseAsFileTime
-             <https://msdn.microsoft.com/en-us/library/hh706895.aspx>.  */
+             <https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getsystemtimepreciseasfiletime>.  */
           GetSystemTimeAsFileTime (&current_time);
         }
 
--- a/lib/vasnprintf.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/vasnprintf.c	Thu Mar 14 09:49:24 2019 +0100
@@ -4917,7 +4917,7 @@
                    Windows Vista, the use of %n in format strings by default
                    crashes the program. See
                      <https://gcc.gnu.org/ml/gcc/2007-06/msg00122.html> and
-                     <https://msdn.microsoft.com/en-us/library/ms175782.aspx>
+                     <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/set-printf-count-output>
                    So we should avoid %n in this situation.  */
                 fbp[1] = '\0';
 # endif
--- a/lib/wcsftime.c	Wed Mar 13 20:00:53 2019 +0100
+++ b/lib/wcsftime.c	Thu Mar 14 09:49:24 2019 +0100
@@ -32,7 +32,7 @@
   /* Rectify the value of the environment variable TZ.
      There are four possible kinds of such values:
        - Traditional US time zone names, e.g. "PST8PDT".  Syntax: see
-         <https://msdn.microsoft.com/en-us/library/90s5c885.aspx>
+         <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/tzset>
        - Time zone names based on geography, that contain one or more
          slashes, e.g. "Europe/Moscow".
        - Time zone names based on geography, without slashes, e.g.
--- a/m4/gethostname.m4	Wed Mar 13 20:00:53 2019 +0100
+++ b/m4/gethostname.m4	Thu Mar 14 09:49:24 2019 +0100
@@ -1,4 +1,4 @@
-# gethostname.m4 serial 13
+# gethostname.m4 serial 14
 dnl Copyright (C) 2002, 2008-2019 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -48,7 +48,7 @@
   dnl - On most Unix systems, use MAXHOSTNAMELEN from <sys/param.h> instead.
   dnl - On Solaris, Cygwin, BeOS, use MAXHOSTNAMELEN from <netdb.h> instead.
   dnl - On mingw, use 256, because
-  dnl   <https://msdn.microsoft.com/en-us/library/ms738527.aspx> says:
+  dnl   <https://docs.microsoft.com/en-us/windows/desktop/api/winsock/nf-winsock-gethostname> says:
   dnl   "if a buffer of 256 bytes is passed in the name parameter and
   dnl    the namelen parameter is set to 256, the buffer size will always
   dnl    be adequate."
--- a/tests/nap.h	Wed Mar 13 20:00:53 2019 +0100
+++ b/tests/nap.h	Thu Mar 14 09:49:24 2019 +0100
@@ -67,7 +67,7 @@
 #if defined _WIN32 || defined __CYGWIN__
       /* On Windows, the modification times are not changed until NAP_FD
          is closed. See
-         https://msdn.microsoft.com/en-us/library/windows/desktop/aa365747(v=vs.85).aspx */
+         <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-writefile> */
       close (nap_fd);
       nap_fd = open (TEMPFILE, O_RDWR, 0600);
       ASSERT (nap_fd != -1);
--- a/tests/test-utimens-common.h	Wed Mar 13 20:00:53 2019 +0100
+++ b/tests/test-utimens-common.h	Thu Mar 14 09:49:24 2019 +0100
@@ -53,7 +53,7 @@
 /* Skip ctime tests on native Windows, since it is either a copy of
    mtime or birth time (depending on the file system), rather than a
    properly tracked change time.  See
-   <https://msdn.microsoft.com/en-us/library/14h5k7ff(VS.80).aspx>.  */
+   <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/stat-functions>.  */
 #  define check_ctime 0
 # else
 #  define check_ctime 1