Skip to content

Commit ec6feaa

Browse files
committed
Under Win32, stat() returns an st_ino field, but it has no meaning (on
Win2K, and possibly all Win32 variants, it is always 0). This causes a number of problems in the dfmgr.c logic, which basically all revolve around the fact that *any* two files will appear to have the same inode. Claudio Natoli
1 parent 51b363e commit ec6feaa

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/backend/utils/fmgr/dfmgr.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.69 2004/01/19 02:06:41 tgl Exp $
11+
* $PostgreSQL: pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.70 2004/02/17 03:35:57 momjian Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -30,7 +30,9 @@ typedef struct df_files
3030
{
3131
struct df_files *next; /* List link */
3232
dev_t device; /* Device file is on */
33+
#ifndef WIN32 /* ensures we never again depend on this under win32 */
3334
ino_t inode; /* Inode number of file */
35+
#endif
3436
void *handle; /* a handle for pg_dl* functions */
3537
char filename[1]; /* Full pathname of file */
3638

@@ -43,7 +45,12 @@ typedef struct df_files
4345
static DynamicFileList *file_list = NULL;
4446
static DynamicFileList *file_tail = NULL;
4547

48+
/* stat() call under Win32 returns an st_ino field, but it has no meaning */
49+
#ifndef WIN32
4650
#define SAME_INODE(A,B) ((A).st_ino == (B).inode && (A).st_dev == (B).device)
51+
#else
52+
#define SAME_INODE(A,B) false
53+
#endif
4754

4855
char *Dynamic_library_path;
4956

@@ -121,7 +128,9 @@ load_external_function(char *filename, char *funcname,
121128
MemSet((char *) file_scanner, 0, sizeof(DynamicFileList));
122129
strcpy(file_scanner->filename, fullname);
123130
file_scanner->device = stat_buf.st_dev;
131+
#ifndef WIN32
124132
file_scanner->inode = stat_buf.st_ino;
133+
#endif
125134
file_scanner->next = NULL;
126135

127136
file_scanner->handle = pg_dlopen(fullname);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy