summaryrefslogtreecommitdiff
path: root/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/file.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/file.h')
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/file.h217
1 files changed, 217 insertions, 0 deletions
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/file.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/file.h
new file mode 100644
index 00000000000..8c59a9f2be7
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/file.h
@@ -0,0 +1,217 @@
+/*
+ * $Id$
+ *
+ * Copyright (c) 1994, 1995. Netscape Communications Corporation. All
+ * rights reserved.
+ *
+ * Use of this software is governed by the terms of the license agreement for
+ * the Netscape Communications or Netscape Comemrce Server between the
+ * parties.
+ */
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/*
+ * file.h: system specific functions for reading/writing files
+ *
+ * Rob McCool
+ */
+
+
+#ifndef FILE_H
+#define FILE_H
+
+#ifdef XP_WIN32
+#include <nt/ntfile.h>
+#else
+
+
+#include "netsite.h"
+#include "systems.h"
+
+
+/*
+ * I cheat: These are set up such that system_read can be a macro for read
+ * under UNIX. IO_OKAY is anything positive.
+ */
+
+#define IO_OKAY 1
+#define IO_ERROR -1
+#define IO_EOF 0
+
+
+#ifdef FILE_STDIO
+#include <stdio.h>
+
+#elif defined(FILE_UNIX)
+#include <sys/types.h>
+#include <sys/file.h>
+#include <fcntl.h>
+#include <unistd.h>
+#endif
+
+
+/* -------------------------- File related defs --------------------------- */
+
+
+/* The disk page size on this machine. */
+#define FILE_BUFFERSIZE 4096
+
+
+/*
+ * The fd data type for this system.
+ */
+
+#if defined(FILE_STDIO)
+typedef FILE* SYS_FILE;
+#define SYS_ERROR_FD NULL
+#define SYS_STDERR stderr
+
+#elif defined(FILE_UNIX)
+typedef int SYS_FILE;
+#define SYS_ERROR_FD -1
+#define SYS_STDERR STDERR_FILENO
+
+#else
+#error "undefined file typing for current system"
+#endif
+
+#ifdef XP_UNIX
+#define FILE_PATHSEP '/'
+#define FILE_PARENT "../"
+
+#define system_chdir chdir
+#endif
+
+
+/*
+ * system_fread reads sz bytes from fd into to buf, return number of bytes
+ * read, or IO_EOF if EOF, or IO_ERROR if error.
+ */
+
+#if defined(FILE_STDIO)
+int system_fread(SYS_FILE fd, char *buf, int sz);
+
+#elif defined(FILE_UNIX)
+#define system_fread(fd,buf,sz) read(fd,buf,sz)
+
+#endif
+
+/*
+ * system_fopenRO opens a given file for reading only
+ * system_fopenWA opens a given file for writing, appending new output
+ */
+
+#if defined(FILE_STDIO)
+#define system_fopenRO(path) fopen(path,"r")
+#define system_fopenWA(path) fopen(path,"a")
+#define system_fopenRW(path) fopen(path,"w")
+
+#elif defined(FILE_UNIX)
+#define system_fopenRO(path) open(path, O_RDONLY)
+#define system_fopenWA(path) \
+ open(path, O_RDWR | O_CREAT | O_APPEND, 0644)
+#define system_fopenRW(path) \
+ open(path, O_RDWR | O_CREAT, 0644)
+
+#endif
+
+
+/*
+ * system_fclose closes the file fd
+ */
+
+#if defined(FILE_STDIO)
+#define system_fclose(fd) fclose(fd)
+
+#elif defined(FILE_UNIX)
+#define system_fclose(fd) close(fd)
+#endif
+
+/*
+ * This call stops core dumps in a portable way. Returns -1 on error.
+ */
+
+int system_nocoredumps(void);
+
+
+#if defined(FILE_STDIO)
+#define system_lseek fseek
+
+#elif defined(FILE_UNIX)
+#define system_lseek lseek
+
+#endif
+
+/*
+ * system_write writes sz bytes from buf to fd. The handler function should
+ * handle partial writes and anything else like that. Returns IO_*
+ */
+
+int system_fwrite(SYS_FILE fd,char *buf,int sz);
+
+/*
+ * system_fwrite_atomic locks the given fd before writing to it. This avoids
+ * interference between simultaneous writes. Returns IO_*
+ */
+
+int system_fwrite_atomic(SYS_FILE fd, char *buf, int sz);
+
+/*
+ * system_errmsg returns the last error that occured while processing file
+ * descriptor fd. fd does not have to be specified (if the error is a global
+ * such as in UNIX systems). PPS: Rob is a halfwit. This parameter is useless.
+ */
+
+#ifndef FILE_WIN32
+#include <errno.h>
+
+extern char *sys_errlist[];
+#define file_notfound() (errno == ENOENT)
+#define system_errmsg(fd) (sys_errlist[errno])
+#endif
+
+
+/*
+ * flock locks a file against interference from other processes
+ * ulock unlocks it.
+ */
+#ifdef BSD_FLOCK
+#include <sys/file.h>
+#define system_initlock(fd) (0)
+#define system_flock(fd) flock(fd, LOCK_EX)
+#define system_ulock(fd) flock(fd, LOCK_UN)
+
+#elif defined(FILE_UNIX)
+#include <unistd.h>
+#define system_initlock(fd) (0)
+#define system_flock(fd) lockf(fd, F_LOCK, 0)
+#define system_ulock(fd) lockf(fd, F_ULOCK, 0)
+
+#endif
+
+
+/*
+ * unix2local converts a unix-style pathname to a local one
+ */
+
+#ifdef XP_UNIX
+#define file_unix2local(path,p2) strcpy(p2,path)
+#endif
+
+/* -------------------------- Dir related defs ---------------------------- */
+
+
+#ifdef XP_UNIX
+#include <dirent.h>
+typedef DIR* SYS_DIR;
+typedef struct dirent SYS_DIRENT;
+#define dir_open opendir
+#define dir_read readdir
+#define dir_close closedir
+
+#endif
+#endif
+#endif