mirror of
https://github.com/postgres/postgres.git
synced 2025-05-01 01:04:50 +03:00
More consistent behavior of GetDataDirectoryCreatePerm on Windows
On Windows, GetDataDirectoryCreatePerm() just did nothing. The way the code in some callers is structured, this is the first function that tries to access the data directory. So it also ends up the place that is responsible for reporting that a data directory does not exist or similar. Therefore, on Windows, these scenarios end up on potentially completely different code paths. To unify this, to make testing more consistent across platforms, have GetDataDirectoryCreatePerm() run the stat() call on Windows as well, even though it won't do anything with the result. That way, file system errors are reporting to callers in the same way as on non-Windows. Reviewed-by: Aleksander Alekseev <aleksander@timescale.com> Discussion: https://www.postgresql.org/message-id/15a59bca-0383-183c-9383-0446da9b87e1%40eisentraut.org
This commit is contained in:
parent
151ffcf6d8
commit
2c7c6c417f
@ -59,12 +59,12 @@ SetDataDirectoryCreatePerm(int dataDirMode)
|
||||
* false is returned.
|
||||
*
|
||||
* Suppress when on Windows, because there may not be proper support for Unix-y
|
||||
* file permissions.
|
||||
* file permissions. But we still run stat() on the directory so that callers
|
||||
* get consistent behavior for example if the directory does not exist.
|
||||
*/
|
||||
bool
|
||||
GetDataDirectoryCreatePerm(const char *dataDir)
|
||||
{
|
||||
#if !defined(WIN32) && !defined(__CYGWIN__)
|
||||
struct stat statBuf;
|
||||
|
||||
/*
|
||||
@ -75,16 +75,12 @@ GetDataDirectoryCreatePerm(const char *dataDir)
|
||||
if (stat(dataDir, &statBuf) == -1)
|
||||
return false;
|
||||
|
||||
#if !defined(WIN32) && !defined(__CYGWIN__)
|
||||
/* Set permissions */
|
||||
SetDataDirectoryCreatePerm(statBuf.st_mode);
|
||||
return true;
|
||||
#else /* !defined(WIN32) && !defined(__CYGWIN__) */
|
||||
/*
|
||||
* On Windows, we don't have anything to do here since they don't have
|
||||
* Unix-y permissions.
|
||||
*/
|
||||
return true;
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user