From Harald Welte:
[obnox/wireshark/wip.git] / wiretap / file_wrappers.h
index 7be3b0b8d5a04bfa15b59fa116db1770dfa3f2a7..5ae970ef6ba689cfcc84f3ecb8d03a80e31bd403 100644 (file)
@@ -1,54 +1,58 @@
 /* file_wrappers.h
  *
- * $Id: file_wrappers.h,v 1.5 2001/09/20 16:36:45 ashokn Exp $
+ * $Id$
  *
  * Wiretap Library
- * Copyright (c) 1998 by Gilbert Ramirez <gram@xiexie.org>
- * 
+ * Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
+ *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
  * of the License, or (at your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- *
  */
 
 #ifndef __FILE_H__
 #define __FILE_H__
 
+#include <glib.h>
+#include <wtap.h>
+#include <wsutil/file_util.h>
+
+extern gint64 file_seek(FILE_T stream, gint64 offset, int whence, int *err);
+extern gint64 file_tell(FILE_T stream);
+extern gint64 file_tell_raw(FILE_T stream);
+extern int file_fstat(FILE_T stream, ws_statb64 *statb, int *err);
+extern int file_error(FILE_T fh, gchar **err_info);
+
+extern FILE_T file_open(const char *path);
+extern FILE_T filed_open(int fildes);
+extern int file_read(void *buf, unsigned int count, FILE_T file);
+extern int file_close(FILE_T file);
+extern int file_getc(FILE_T stream);
+extern char *file_gets(char *buf, int len, FILE_T stream);
+extern int file_eof(FILE_T stream);
+extern void file_clearerr(FILE_T stream);
+
+extern void file_set_random_access(FILE_T stream, gboolean random, GPtrArray *seek);
+
 #ifdef HAVE_LIBZ
-#define file_open gzopen
-#define filed_open gzdopen
-extern long file_seek(void *stream, long offset, int whence);
-#define file_read(buf, bsize, count, file) gzread((file),(buf),((count)*(bsize)))
-#define file_write(buf, bsize, count, file) gzwrite((file),(buf),((count)*(bsize)))
-#define file_close gzclose
-extern long file_tell(void *stream);
-char * internal_gzgets(gzFile file, char *buf, int len);
-int internal_gzgetc(gzFile file);
-#define file_getc internal_gzgetc
-#define file_gets(buf, len, file) internal_gzgets((file), (buf), (len))
-extern int file_error(void *fh);
-
-#else /* No zLib */
-#define file_open fopen
-#define filed_open fdopen
-#define file_seek fseek
-#define file_read fread
-#define file_write fwrite
-#define file_close fclose
-extern int file_error(FILE *fh);
-#define file_tell ftell
-#define file_getc fgetc
-#define file_gets fgets
+typedef struct wtap_writer *GZWFILE_T;
+
+extern GZWFILE_T gzwfile_open(const char *path);
+extern GZWFILE_T gzwfile_fdopen(int fd);
+extern unsigned gzwfile_write(GZWFILE_T state, const void *buf, unsigned len);
+extern int gzwfile_flush(GZWFILE_T state);
+extern int gzwfile_close(GZWFILE_T state);
+extern int gzwfile_geterr(GZWFILE_T state);
 #endif /* HAVE_LIBZ */
 
 #endif /* __FILE_H__ */