mirror of
https://github.com/postgres/postgres.git
synced 2025-08-12 15:23:02 +03:00
Use Unix line endings instead of DOS ones, per Magnus.
This commit is contained in:
@@ -1,21 +1,21 @@
|
|||||||
/*
|
/*
|
||||||
* Headers for port/dirent.c, win32 native implementation of dirent functions
|
* Headers for port/dirent.c, win32 native implementation of dirent functions
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/include/port/win32_msvc/dirent.h,v 1.1 2006/06/07 22:24:45 momjian Exp $
|
* $PostgreSQL: pgsql/src/include/port/win32_msvc/dirent.h,v 1.2 2006/06/26 12:59:44 momjian Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _WIN32VC_DIRENT_H
|
#ifndef _WIN32VC_DIRENT_H
|
||||||
#define _WIN32VC_DIRENT_H
|
#define _WIN32VC_DIRENT_H
|
||||||
struct dirent {
|
struct dirent {
|
||||||
long d_ino;
|
long d_ino;
|
||||||
unsigned short d_reclen;
|
unsigned short d_reclen;
|
||||||
unsigned short d_namlen;
|
unsigned short d_namlen;
|
||||||
char d_name[MAX_PATH];
|
char d_name[MAX_PATH];
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct DIR DIR;
|
typedef struct DIR DIR;
|
||||||
|
|
||||||
DIR* opendir(const char *);
|
DIR* opendir(const char *);
|
||||||
struct dirent* readdir(DIR *);
|
struct dirent* readdir(DIR *);
|
||||||
int closedir(DIR*);
|
int closedir(DIR*);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,108 +1,108 @@
|
|||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* dirent.c
|
* dirent.c
|
||||||
* opendir/readdir/closedir for win32/msvc
|
* opendir/readdir/closedir for win32/msvc
|
||||||
*
|
*
|
||||||
* Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/port/dirent.c,v 1.1 2006/06/07 22:24:46 momjian Exp $
|
* $PostgreSQL: pgsql/src/port/dirent.c,v 1.2 2006/06/26 12:58:17 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "postgres.h"
|
#include "postgres.h"
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
|
|
||||||
|
|
||||||
struct DIR {
|
struct DIR {
|
||||||
char *dirname;
|
char *dirname;
|
||||||
struct dirent ret; /* Used to return to caller */
|
struct dirent ret; /* Used to return to caller */
|
||||||
HANDLE handle;
|
HANDLE handle;
|
||||||
};
|
};
|
||||||
|
|
||||||
DIR* opendir(const char *dirname)
|
DIR* opendir(const char *dirname)
|
||||||
{
|
{
|
||||||
DWORD attr;
|
DWORD attr;
|
||||||
DIR *d;
|
DIR *d;
|
||||||
|
|
||||||
/* Make sure it is a directory */
|
/* Make sure it is a directory */
|
||||||
attr = GetFileAttributes(dirname);
|
attr = GetFileAttributes(dirname);
|
||||||
if (attr == INVALID_FILE_ATTRIBUTES)
|
if (attr == INVALID_FILE_ATTRIBUTES)
|
||||||
{
|
{
|
||||||
errno = ENOENT;
|
errno = ENOENT;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if ((attr & FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY)
|
if ((attr & FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY)
|
||||||
{
|
{
|
||||||
errno = ENOTDIR;
|
errno = ENOTDIR;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
d = malloc(sizeof(DIR));
|
d = malloc(sizeof(DIR));
|
||||||
if (!d)
|
if (!d)
|
||||||
{
|
{
|
||||||
errno = ENOMEM;
|
errno = ENOMEM;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
d->dirname = malloc(strlen(dirname)+4);
|
d->dirname = malloc(strlen(dirname)+4);
|
||||||
if (!d->dirname)
|
if (!d->dirname)
|
||||||
{
|
{
|
||||||
errno = ENOMEM;
|
errno = ENOMEM;
|
||||||
free(d);
|
free(d);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
strcpy(d->dirname, dirname);
|
strcpy(d->dirname, dirname);
|
||||||
if (d->dirname[strlen(d->dirname)-1] != '/' &&
|
if (d->dirname[strlen(d->dirname)-1] != '/' &&
|
||||||
d->dirname[strlen(d->dirname)-1] != '\\')
|
d->dirname[strlen(d->dirname)-1] != '\\')
|
||||||
strcat(d->dirname,"\\"); /* Append backslash if not already there */
|
strcat(d->dirname,"\\"); /* Append backslash if not already there */
|
||||||
strcat(d->dirname,"*"); /* Search for entries named anything */
|
strcat(d->dirname,"*"); /* Search for entries named anything */
|
||||||
d->handle = INVALID_HANDLE_VALUE;
|
d->handle = INVALID_HANDLE_VALUE;
|
||||||
d->ret.d_ino = 0; /* no inodes on win32 */
|
d->ret.d_ino = 0; /* no inodes on win32 */
|
||||||
d->ret.d_reclen = 0; /* not used on win32 */
|
d->ret.d_reclen = 0; /* not used on win32 */
|
||||||
|
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct dirent* readdir(DIR * d)
|
struct dirent* readdir(DIR * d)
|
||||||
{
|
{
|
||||||
WIN32_FIND_DATA fd;
|
WIN32_FIND_DATA fd;
|
||||||
|
|
||||||
if (d->handle == INVALID_HANDLE_VALUE)
|
if (d->handle == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
d->handle = FindFirstFile(d->dirname, &fd);
|
d->handle = FindFirstFile(d->dirname, &fd);
|
||||||
if (d->handle == INVALID_HANDLE_VALUE)
|
if (d->handle == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
errno = ENOENT;
|
errno = ENOENT;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!FindNextFile(d->handle, &fd))
|
if (!FindNextFile(d->handle, &fd))
|
||||||
{
|
{
|
||||||
if (GetLastError() == ERROR_NO_MORE_FILES)
|
if (GetLastError() == ERROR_NO_MORE_FILES)
|
||||||
{
|
{
|
||||||
/* No more files, force errno=0 (unlike mingw) */
|
/* No more files, force errno=0 (unlike mingw) */
|
||||||
errno = 0;
|
errno = 0;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
_dosmaperr(GetLastError());
|
_dosmaperr(GetLastError());
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
strcpy(d->ret.d_name, fd.cFileName); /* Both strings are MAX_PATH long */
|
strcpy(d->ret.d_name, fd.cFileName); /* Both strings are MAX_PATH long */
|
||||||
d->ret.d_namlen = strlen(d->ret.d_name);
|
d->ret.d_namlen = strlen(d->ret.d_name);
|
||||||
return &d->ret;
|
return &d->ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int closedir(DIR *d)
|
int closedir(DIR *d)
|
||||||
{
|
{
|
||||||
if (d->handle != INVALID_HANDLE_VALUE)
|
if (d->handle != INVALID_HANDLE_VALUE)
|
||||||
FindClose(d->handle);
|
FindClose(d->handle);
|
||||||
free(d->dirname);
|
free(d->dirname);
|
||||||
free(d);
|
free(d);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -1,200 +1,200 @@
|
|||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* win32error.c
|
* win32error.c
|
||||||
* Map win32 error codes to errno values
|
* Map win32 error codes to errno values
|
||||||
*
|
*
|
||||||
* Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/port/win32error.c,v 1.1 2006/06/07 22:24:46 momjian Exp $
|
* $PostgreSQL: pgsql/src/port/win32error.c,v 1.2 2006/06/26 12:58:43 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "postgres.h"
|
#include "postgres.h"
|
||||||
|
|
||||||
static const struct
|
static const struct
|
||||||
{
|
{
|
||||||
DWORD winerr;
|
DWORD winerr;
|
||||||
int doserr;
|
int doserr;
|
||||||
} doserrors[] =
|
} doserrors[] =
|
||||||
|
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
ERROR_INVALID_FUNCTION, EINVAL
|
ERROR_INVALID_FUNCTION, EINVAL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_FILE_NOT_FOUND, ENOENT
|
ERROR_FILE_NOT_FOUND, ENOENT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_PATH_NOT_FOUND, ENOENT
|
ERROR_PATH_NOT_FOUND, ENOENT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_TOO_MANY_OPEN_FILES, EMFILE
|
ERROR_TOO_MANY_OPEN_FILES, EMFILE
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_ACCESS_DENIED, EACCES
|
ERROR_ACCESS_DENIED, EACCES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_INVALID_HANDLE, EBADF
|
ERROR_INVALID_HANDLE, EBADF
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_ARENA_TRASHED, ENOMEM
|
ERROR_ARENA_TRASHED, ENOMEM
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_NOT_ENOUGH_MEMORY, ENOMEM
|
ERROR_NOT_ENOUGH_MEMORY, ENOMEM
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_INVALID_BLOCK, ENOMEM
|
ERROR_INVALID_BLOCK, ENOMEM
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_BAD_ENVIRONMENT, E2BIG
|
ERROR_BAD_ENVIRONMENT, E2BIG
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_BAD_FORMAT, ENOEXEC
|
ERROR_BAD_FORMAT, ENOEXEC
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_INVALID_ACCESS, EINVAL
|
ERROR_INVALID_ACCESS, EINVAL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_INVALID_DATA, EINVAL
|
ERROR_INVALID_DATA, EINVAL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_INVALID_DRIVE, ENOENT
|
ERROR_INVALID_DRIVE, ENOENT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_CURRENT_DIRECTORY, EACCES
|
ERROR_CURRENT_DIRECTORY, EACCES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_NOT_SAME_DEVICE, EXDEV
|
ERROR_NOT_SAME_DEVICE, EXDEV
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_NO_MORE_FILES, ENOENT
|
ERROR_NO_MORE_FILES, ENOENT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_LOCK_VIOLATION, EACCES
|
ERROR_LOCK_VIOLATION, EACCES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_SHARING_VIOLATION, EACCES
|
ERROR_SHARING_VIOLATION, EACCES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_BAD_NETPATH, ENOENT
|
ERROR_BAD_NETPATH, ENOENT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_NETWORK_ACCESS_DENIED, EACCES
|
ERROR_NETWORK_ACCESS_DENIED, EACCES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_BAD_NET_NAME, ENOENT
|
ERROR_BAD_NET_NAME, ENOENT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_FILE_EXISTS, EEXIST
|
ERROR_FILE_EXISTS, EEXIST
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_CANNOT_MAKE, EACCES
|
ERROR_CANNOT_MAKE, EACCES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_FAIL_I24, EACCES
|
ERROR_FAIL_I24, EACCES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_INVALID_PARAMETER, EINVAL
|
ERROR_INVALID_PARAMETER, EINVAL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_NO_PROC_SLOTS, EAGAIN
|
ERROR_NO_PROC_SLOTS, EAGAIN
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_DRIVE_LOCKED, EACCES
|
ERROR_DRIVE_LOCKED, EACCES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_BROKEN_PIPE, EPIPE
|
ERROR_BROKEN_PIPE, EPIPE
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_DISK_FULL, ENOSPC
|
ERROR_DISK_FULL, ENOSPC
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_INVALID_TARGET_HANDLE, EBADF
|
ERROR_INVALID_TARGET_HANDLE, EBADF
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_INVALID_HANDLE, EINVAL
|
ERROR_INVALID_HANDLE, EINVAL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_WAIT_NO_CHILDREN, ECHILD
|
ERROR_WAIT_NO_CHILDREN, ECHILD
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_CHILD_NOT_COMPLETE, ECHILD
|
ERROR_CHILD_NOT_COMPLETE, ECHILD
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_DIRECT_ACCESS_HANDLE, EBADF
|
ERROR_DIRECT_ACCESS_HANDLE, EBADF
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_NEGATIVE_SEEK, EINVAL
|
ERROR_NEGATIVE_SEEK, EINVAL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_SEEK_ON_DEVICE, EACCES
|
ERROR_SEEK_ON_DEVICE, EACCES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_DIR_NOT_EMPTY, ENOTEMPTY
|
ERROR_DIR_NOT_EMPTY, ENOTEMPTY
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_NOT_LOCKED, EACCES
|
ERROR_NOT_LOCKED, EACCES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_BAD_PATHNAME, ENOENT
|
ERROR_BAD_PATHNAME, ENOENT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_MAX_THRDS_REACHED, EAGAIN
|
ERROR_MAX_THRDS_REACHED, EAGAIN
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_LOCK_FAILED, EACCES
|
ERROR_LOCK_FAILED, EACCES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_ALREADY_EXISTS, EEXIST
|
ERROR_ALREADY_EXISTS, EEXIST
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_FILENAME_EXCED_RANGE, ENOENT
|
ERROR_FILENAME_EXCED_RANGE, ENOENT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_NESTING_NOT_ALLOWED, EAGAIN
|
ERROR_NESTING_NOT_ALLOWED, EAGAIN
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ERROR_NOT_ENOUGH_QUOTA, ENOMEM
|
ERROR_NOT_ENOUGH_QUOTA, ENOMEM
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
_dosmaperr(unsigned long e)
|
_dosmaperr(unsigned long e)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (e == 0)
|
if (e == 0)
|
||||||
{
|
{
|
||||||
errno = 0;
|
errno = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < lengthof(doserrors); i++)
|
for (i = 0; i < lengthof(doserrors); i++)
|
||||||
{
|
{
|
||||||
if (doserrors[i].winerr == e)
|
if (doserrors[i].winerr == e)
|
||||||
{
|
{
|
||||||
errno = doserrors[i].doserr;
|
errno = doserrors[i].doserr;
|
||||||
#ifndef FRONTEND
|
#ifndef FRONTEND
|
||||||
ereport(DEBUG5,
|
ereport(DEBUG5,
|
||||||
(errmsg_internal("mapped win32 error code %lu to %d",
|
(errmsg_internal("mapped win32 error code %lu to %d",
|
||||||
e, errno)));
|
e, errno)));
|
||||||
#else
|
#else
|
||||||
fprintf(stderr, _("mapped win32 error code %lu to %d"), e, errno);
|
fprintf(stderr, _("mapped win32 error code %lu to %d"), e, errno);
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef FRONTEND
|
#ifndef FRONTEND
|
||||||
ereport(LOG,
|
ereport(LOG,
|
||||||
(errmsg_internal("unrecognized win32 error code: %lu",
|
(errmsg_internal("unrecognized win32 error code: %lu",
|
||||||
e)));
|
e)));
|
||||||
#else
|
#else
|
||||||
fprintf(stderr, _("unrecognized win32 error code: %lu"), e);
|
fprintf(stderr, _("unrecognized win32 error code: %lu"), e);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user