+2023-04-20 Bruno Haible <bruno@clisp.org>
+
+ getumask: Make it work on native Windows.
+ * lib/getumask.c (getumask): When TMPDIR is unset, try TMP and TEMP.
+ * tests/test-getumask.c (ASSUME_UMASK_CONSTANT): Define to 1 on native
+ Windows.
+
2023-04-20 Bruno Haible <bruno@clisp.org>
posixtm tests: Fix link error.
/* Retrieve the umask of the process (multithread-safe).
- Copyright (C) 2020-2022 Free Software Foundation, Inc.
+ Copyright (C) 2020-2023 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
{
/* Create a temporary file and inspect its access permissions. */
const char *tmpdir = getenv ("TMPDIR");
+# if defined _WIN32 && !defined __CYGWIN__
+ if (tmpdir == NULL || *tmpdir == '\0')
+ {
+ /* On native Windows, TMPDIR is typically not set, and /tmp does not
+ exist. $TMP and $TEMP can be used instead. */
+ tmpdir = getenv ("TMP");
+ if (tmpdir == NULL || *tmpdir == '\0')
+ tmpdir = getenv ("TEMP");
+ }
+# endif
if (tmpdir == NULL || *tmpdir == '\0')
tmpdir = "/tmp";
size_t tmpdir_length = strlen (tmpdir);
/* Test of retrieving the umask of the process.
- Copyright (C) 2020-2022 Free Software Foundation, Inc.
+ Copyright (C) 2020-2023 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "macros.h"
+#if defined _WIN32 && !defined __CYGWIN__
+/* On native Windows, getumask() always returns 0111. */
+# define ASSUME_UMASK_CONSTANT 1
+#endif
+
int
main (void)
{