Changeset: f40bd9c6b0f8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f40bd9c6b0f8
Modified Files:
gdk/gdk_storage.c
Branch: default
Log Message:
Merge with Jan2022 branch.
diffs (138 lines):
diff --git a/common/utils/msabaoth.c b/common/utils/msabaoth.c
--- a/common/utils/msabaoth.c
+++ b/common/utils/msabaoth.c
@@ -46,8 +46,12 @@
#endif
#ifndef O_CLOEXEC
+#ifdef _O_NOINHERIT
+#define O_CLOEXEC _O_NOINHERIT /* Windows */
+#else
#define O_CLOEXEC 0
#endif
+#endif
/** the directory where the databases are (aka dbfarm) */
static char *_sabaoth_internal_dbfarm = NULL;
diff --git a/common/utils/mutils.c b/common/utils/mutils.c
--- a/common/utils/mutils.c
+++ b/common/utils/mutils.c
@@ -30,8 +30,12 @@
#endif
#ifndef O_CLOEXEC
+#ifdef _O_NOINHERIT
+#define O_CLOEXEC _O_NOINHERIT /* Windows */
+#else
#define O_CLOEXEC 0
#endif
+#endif
#ifdef NATIVE_WIN32
@@ -494,7 +498,7 @@ MT_lockf(const char *filename, int mode)
* directly */
fh = CreateFileW(wfilename,
GENERIC_READ | GENERIC_WRITE, 0,
- NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ NULL, OPEN_ALWAYS,
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED, NULL);
free(wfilename);
if (fh == INVALID_HANDLE_VALUE)
return -2;
@@ -556,8 +560,8 @@ MT_fopen(const char *filename, const cha
wfilename = utf8towchar(filename);
wmode = utf8towchar(mode);
FILE *f = NULL;
- if (wfilename != NULL && wmode != NULL)
- f = _wfopen(wfilename, wmode);
+ if (wfilename != NULL && wmode != NULL && (f = _wfopen(wfilename,
wmode)) != NULL && strchr(mode, 'w') != NULL)
+ SetFileAttributesW(wfilename,
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED);
free(wfilename);
free(wmode);
return f;
@@ -572,6 +576,8 @@ MT_open(const char *filename, int flags)
int fd;
if (_wsopen_s(&fd, wfilename, flags, _SH_DENYNO, _S_IREAD | _S_IWRITE)
!= 0)
fd = -1;
+ else if (flags & O_CREAT)
+ SetFileAttributesW(wfilename,
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED);
free(wfilename);
return fd;
}
@@ -684,6 +690,8 @@ MT_mkdir(const char *pathname)
if (wpathname == NULL)
return -1;
int ret = _wmkdir(wpathname);
+ if (ret == 0)
+ SetFileAttributesW(wpathname,
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED);
free(wpathname);
return ret;
}
diff --git a/gdk/ChangeLog.Jan2022 b/gdk/ChangeLog.Jan2022
--- a/gdk/ChangeLog.Jan2022
+++ b/gdk/ChangeLog.Jan2022
@@ -1,3 +1,8 @@
# ChangeLog file for GDK
# This file is updated with Maddlog
+* Tue Jan 11 2022 Sjoerd Mullender <[email protected]>
+- On Windows, files and directories we create now get the attribute
+ FILE_ATTIBUTE_NOT_CONTENT_INDEXED, meaning that they should not be
+ indexed by indexing or search services.
+
diff --git a/gdk/gdk_posix.c b/gdk/gdk_posix.c
--- a/gdk/gdk_posix.c
+++ b/gdk/gdk_posix.c
@@ -60,8 +60,12 @@
#define MMAP_WRITABLE (MMAP_WRITE|MMAP_COPY)
#ifndef O_CLOEXEC
+#ifdef _O_NOINHERIT
+#define O_CLOEXEC _O_NOINHERIT /* Windows */
+#else
#define O_CLOEXEC 0
#endif
+#endif
/* Crude VM buffer management that keep a list of all memory mapped
* regions.
@@ -730,6 +734,7 @@ MT_mmap(const char *path, int mode, size
mode3 = PAGE_READWRITE;
mode4 = FILE_MAP_WRITE;
}
+ mode2 |= FILE_ATTRIBUTE_NOT_CONTENT_INDEXED;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = TRUE;
sa.lpSecurityDescriptor = 0;
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -32,8 +32,12 @@
#endif
#ifndef O_CLOEXEC
+#ifdef _O_NOINHERIT
+#define O_CLOEXEC _O_NOINHERIT /* Windows */
+#else
#define O_CLOEXEC 0
#endif
+#endif
/* GDKfilepath returns a newly allocated string containing the path
* name of a database farm.
diff --git a/monetdb5/mal/mal_linker.c b/monetdb5/mal/mal_linker.c
--- a/monetdb5/mal/mal_linker.c
+++ b/monetdb5/mal/mal_linker.c
@@ -45,8 +45,12 @@ static int maxfiles = MAXMODULES;
static int lastfile = 0;
#ifndef O_CLOEXEC
+#ifdef _O_NOINHERIT
+#define O_CLOEXEC _O_NOINHERIT /* Windows */
+#else
#define O_CLOEXEC 0
#endif
+#endif
/*
* returns 1 if the file exists
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list