aboutsummaryrefslogtreecommitdiff
path: root/src/backend/libpq/libpq-fs.h
diff options
context:
space:
mode:
authorMarc G. Fournier <scrappy@hub.org>1996-07-09 06:22:35 +0000
committerMarc G. Fournier <scrappy@hub.org>1996-07-09 06:22:35 +0000
commitd31084e9d1118b25fd16580d9d8c2924b5740dff (patch)
tree3179e66307d54df9c7b966543550e601eb55e668 /src/backend/libpq/libpq-fs.h
downloadpostgresql-PG95-1_01.tar.gz
postgresql-PG95-1_01.zip
Postgres95 1.01 Distribution - Virgin SourcesPG95-1_01
Diffstat (limited to 'src/backend/libpq/libpq-fs.h')
-rw-r--r--src/backend/libpq/libpq-fs.h119
1 files changed, 119 insertions, 0 deletions
diff --git a/src/backend/libpq/libpq-fs.h b/src/backend/libpq/libpq-fs.h
new file mode 100644
index 00000000000..76f1f84c30b
--- /dev/null
+++ b/src/backend/libpq/libpq-fs.h
@@ -0,0 +1,119 @@
+/*-------------------------------------------------------------------------
+ *
+ * libpq-fs.h--
+ * definitions for using Inversion file system routines
+ *
+ *
+ * Copyright (c) 1994, Regents of the University of California
+ *
+ * $Id: libpq-fs.h,v 1.1.1.1 1996/07/09 06:21:30 scrappy Exp $
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef LIBPQ_FS_H
+#define LIBPQ_FS_H
+
+#include "lib/dllist.h"
+#include <sys/file.h>
+#include <sys/stat.h>
+
+#include <fcntl.h> /* for O_ on some */
+#ifndef WIN32
+#include <unistd.h> /* for SEEK_ on most */
+#endif /* WIN32 */
+#ifndef SEEK_SET
+#include <stdio.h> /* for SEEK_ on others */
+#endif /* SEEK_SET */
+
+/* UNIX compatibility junk. This should be in all systems' include files,
+ but this is not always the case. */
+
+#ifndef MAXNAMLEN
+#define MAXNAMLEN 255
+#endif /* MAXNAMLEN */
+
+struct pgdirent {
+ unsigned long d_ino;
+ unsigned short d_namlen;
+ char d_name[MAXNAMLEN+1];
+};
+
+/*
+ * SysV struct dirent doesn't have d_namlen.
+ * This counts on d_name being last, which is moderately safe (ha) since
+ * it's the variable-length part of the structure.
+ */
+#ifdef SYSV_DIRENT
+#define D_NAMLEN(dp) \
+ ((dp)->d_reclen - offsetof(struct dirent, d_name[0]))
+#else /* SYSV_DIRENT */
+#define D_NAMLEN(dp) \
+ ((dp)->d_namlen)
+#endif /* SYSV_DIRENT */
+
+/* for stat(2) */
+#ifndef S_IRUSR
+/* file modes */
+
+#define S_IRWXU 00700 /* read, write, execute: owner */
+#define S_IRUSR 00400 /* read permission: owner */
+#define S_IWUSR 00200 /* write permission: owner */
+#define S_IXUSR 00100 /* execute permission: owner */
+
+#define S_IRWXG 00070 /* read, write, execute: group */
+#define S_IRGRP 00040 /* read permission: group */
+#define S_IWGRP 00020 /* write permission: group */
+#define S_IXGRP 00010 /* execute permission: group */
+
+#define S_IRWXO 00007 /* read, write, execute: other */
+#define S_IROTH 00004 /* read permission: other */
+#define S_IWOTH 00002 /* write permission: other */
+#define S_IXOTH 00001 /* execute permission: other */
+
+#define _S_IFMT 0170000 /* type of file; sync with S_IFMT */
+#define _S_IFBLK 0060000 /* block special; sync with S_IFBLK */
+#define _S_IFCHR 0020000 /* character special sync with S_IFCHR */
+#define _S_IFDIR 0040000 /* directory; sync with S_IFDIR */
+#define _S_IFIFO 0010000 /* FIFO - named pipe; sync with S_IFIFO */
+#define _S_IFREG 0100000 /* regular; sync with S_IFREG */
+
+#define S_IFDIR _S_IFDIR
+#define S_IFREG _S_IFREG
+
+#define S_ISDIR( mode ) (((mode) & _S_IFMT) == _S_IFDIR)
+
+#endif /* S_IRUSR */
+
+/*
+ * Inversion doesn't have links.
+ */
+#ifndef S_ISLNK
+#define S_ISLNK(x) 0
+#endif
+
+/*
+ * Flags for inversion file system large objects. Normally, creat()
+ * takes mode arguments, but we don't use them in inversion, since
+ * you get postgres protections. Instead, we use the low sixteen bits
+ * of the integer mode argument to store the number of the storage
+ * manager to be used, and the high sixteen bits for flags.
+ */
+
+#define INV_SMGRMASK 0x0000ffff
+#define INV_ARCHIVE 0x00010000
+#define INV_WRITE 0x00020000
+#define INV_READ 0x00040000
+
+/* Error values for p_errno */
+#define PEPERM 1 /* Not owner */
+#define PENOENT 2 /* No such file or directory */
+#define PEACCES 13 /* Permission denied */
+#define PEEXIST 17 /* File exists */
+#define PENOTDIR 20 /* Not a directory*/
+#define PEISDIR 21 /* Is a directory */
+#define PEINVAL 22 /* Invalid argument */
+#define PENAMETOOLONG 63 /* File name too long */
+#define PENOTEMPTY 66 /* Directory not empty */
+#define PEPGIO 99 /* postgres backend had problems */
+
+#endif /* LIBPQ_FS_H */