summaryrefslogtreecommitdiffstats
path: root/funtools/util/gio.h
diff options
context:
space:
mode:
Diffstat (limited to 'funtools/util/gio.h')
-rw-r--r--funtools/util/gio.h162
1 files changed, 162 insertions, 0 deletions
diff --git a/funtools/util/gio.h b/funtools/util/gio.h
new file mode 100644
index 0000000..1331550
--- /dev/null
+++ b/funtools/util/gio.h
@@ -0,0 +1,162 @@
+/*
+ * Copyright (c) 1999-2003 Smithsonian Astrophysical Observatory
+ */
+
+/*
+ *
+ * GIO.H -- include file for gio.c
+ *
+ */
+
+#ifndef _gio_h
+
+#if HAVE_CONFIG_H
+#include "conf.h"
+#endif
+
+#include "xport.h"
+
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_MALLOC_H
+#include <malloc.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_SHM_H
+#include <sys/shm.h>
+#endif
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+#ifdef __STDC__
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+
+#include "prsetup.h"
+#include "xalloc.h"
+
+/* use ftello/fseeko (assuming its available) if we are using 64-bit offsets */
+#if _FILE_OFFSET_BITS == 64
+
+#ifdef USE_FTELLO
+#undef USE_FTELLO
+#endif
+#if HAVE_FTELLO
+#define USE_FTELLO 1
+#endif
+
+#ifdef USE_FSEEKO
+#undef USE_FSEEKO
+#endif
+#if HAVE_FSEEKO
+#define USE_FSEEKO 1
+#endif
+
+#endif
+
+/* make sure socklen_t is available, since some systems don't use it */
+#ifndef HAVE_SOCKLEN_T
+#define socklen_t int
+#endif
+
+/* define the types of "file" we can open */
+#define GIO_DISK 1
+#define GIO_STREAM 2
+#define GIO_MEMORY 4
+#define GIO_MMAP 8
+#define GIO_SHM 16
+#define GIO_PIPE 32
+#define GIO_SOCKET 64
+#define GIO_GZIP 128
+
+/* define the size of the memory buffer increment we allocate */
+#define GIO_BUFINC 81920
+
+/* define socket parameters */
+#define GIO_RETRIES 6000
+#define GIO_MAXLISTEN 1000
+#define GIO_TIMEOUT 60
+
+typedef struct {
+ int type;
+ char *name;
+ char *mode;
+ /* memory types */
+ char *buf;
+ off_t len;
+ off_t cur;
+ int extend;
+ /* disk files and streams */
+ FILE *fp;
+ int unbuffered;
+ /* gzip */
+ void *gz;
+ /* shared memory */
+ int shmid;
+ /* command pipes and sockets */
+ int pid;
+ int ifd;
+ int ofd;
+ /* cr-delimited files */
+ char *crbuf;
+ int crlen;
+} *GIO, GIORec, GFile;
+
+_PRbeg
+
+GIO gopen _PRx((char *name, char *mode));
+GIO gmemopen _PRx((char *buf, off_t len, char *mode));
+void *_gread _PRx((GIO gio, char *buf, size_t size, size_t n, size_t *got));
+size_t gread _PRx((GIO gio, char *buf, size_t size, size_t n));
+size_t gwrite _PRx((GIO gio, char *buf, size_t size, size_t n));
+void *ggets _PRx((GIO gio, char *buf, int len));
+int gflush _PRx((GIO gio));
+
+off_t gseek _PRx((GIO gio, off_t offset, int whence));
+off_t gtell _PRx((GIO gio));
+int gskip _PRx((GIO gio, off_t n));
+int ginfo _PRx((GIO gio,
+ char **name, int *type, off_t *cur, char **buf, int *len));
+void gfreebuf _PRx((GIO gio, void *buf));
+void gclose _PRx((GIO gio));
+int setgerror _PRx((int flag));
+char *gerrorstring _PRx((void));
+#ifdef __STDC__
+int gprintf(GIO gio, char *format, ...);
+void gerror(FILE *fd, char *format, ...);
+void gwarning(FILE *fd, char *format, ...);
+#else
+int gprintf();
+void gerror();
+void gwarning();
+#endif
+int setgwarning _PRx((int flag));
+char *gwarningstring _PRx((void));
+void gsleep _PRx((int millisec));
+
+#if USE_FTELLO
+off_t ftello _PRx((FILE *stream));
+#endif
+#if USE_FSEEKO
+int fseeko _PRx((FILE *stream, off_t offset, int whence));
+#endif
+
+_PRend
+
+#define _gio_h
+
+#endif