aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--wiretap/file.c39
-rw-r--r--wiretap/file.h11
-rw-r--r--wiretap/iptrace.c17
-rw-r--r--wiretap/lanalyzer.c35
-rw-r--r--wiretap/libpcap.c22
-rw-r--r--wiretap/netmon.c22
-rw-r--r--wiretap/netxray.c22
-rw-r--r--wiretap/ngsniffer.c42
-rw-r--r--wiretap/radcom.c41
-rw-r--r--wiretap/snoop.c27
-rw-r--r--wiretap/wtap.c12
-rw-r--r--wiretap/wtap.h13
12 files changed, 157 insertions, 146 deletions
diff --git a/wiretap/file.c b/wiretap/file.c
index bedaf92b6f..7a24ab3a05 100644
--- a/wiretap/file.c
+++ b/wiretap/file.c
@@ -1,6 +1,6 @@
/* file.c
*
- * $Id: file.c,v 1.24 1999/09/24 05:49:50 guy Exp $
+ * $Id: file.c,v 1.25 1999/10/05 07:06:05 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@verdict.uthscsa.edu>
@@ -261,3 +261,40 @@ int wtap_dump_close(wtap_dumper *wdh, int *err)
return ret;
}
+/*
+ * Routine to return a Wiretap error code (0 for no error, an errno
+ * for a file error, or a WTAP_ERR_ code for other errors) for an
+ * I/O stream.
+ */
+#ifdef HAVE_LIBZ
+int
+file_error(void *fh)
+{
+ int errnum;
+
+ gzerror(fh, &errnum);
+ switch (errnum) {
+
+ case Z_OK: /* no error */
+ return 0;
+
+ case Z_STREAM_END: /* EOF - not an error */
+ return 0;
+
+ case Z_ERRNO: /* file I/O error */
+ return errno;
+
+ default:
+ return WTAP_ERR_ZLIB + errnum;
+ }
+}
+#else /* HAVE_LIBZ */
+int
+file_error(FILE *fh)
+{
+ if (ferror(fh))
+ return errno;
+ else
+ return 0;
+}
+#endif /* HAVE_LIBZ */
diff --git a/wiretap/file.h b/wiretap/file.h
index eea3b3af06..d30592f3fb 100644
--- a/wiretap/file.h
+++ b/wiretap/file.h
@@ -1,6 +1,6 @@
/* file.h
*
- * $Id: file.h,v 1.3 1999/09/24 05:49:50 guy Exp $
+ * $Id: file.h,v 1.4 1999/10/05 07:06:05 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@verdict.uthscsa.edu>
@@ -33,12 +33,7 @@
#define file_close gzclose
#define file_tell gztell
#define file_getc gzgetc
-static inline int file_error(void *fh) {
- int errnum;
- gzerror(fh, &errnum);
- if (errnum<0) return errnum;
- return 0;
-}
+extern int file_error(void *fh);
#else /* No zLib */
#define file_open fopen
@@ -47,7 +42,7 @@ static inline int file_error(void *fh) {
#define file_read fread
#define file_write fwrite
#define file_close fclose
-#define file_error ferror
+extern int file_error(FILE *fh);
#define file_tell ftell
#define file_getc fgetc
#endif /* HAVE_LIBZ */
diff --git a/wiretap/iptrace.c b/wiretap/iptrace.c
index c8ffbf2b3f..ab2b05139d 100644
--- a/wiretap/iptrace.c
+++ b/wiretap/iptrace.c
@@ -1,6 +1,6 @@
/* iptrace.c
*
- * $Id: iptrace.c,v 1.12 1999/09/24 05:49:50 guy Exp $
+ * $Id: iptrace.c,v 1.13 1999/10/05 07:06:05 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@verdict.uthscsa.edu>
@@ -44,10 +44,9 @@ int iptrace_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(name, 1, 11, wth->fh);
if (bytes_read != 11) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
wth->data_offset += 11;
@@ -74,10 +73,9 @@ static int iptrace_read(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(header, 1, 40, wth->fh);
if (bytes_read != 40) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
if (bytes_read != 0) {
*err = WTAP_ERR_SHORT_READ;
return -1;
@@ -96,9 +94,8 @@ static int iptrace_read(wtap *wth, int *err)
packet_size, wth->fh);
if (bytes_read != packet_size) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
diff --git a/wiretap/lanalyzer.c b/wiretap/lanalyzer.c
index 97c9045f43..dc31977a3a 100644
--- a/wiretap/lanalyzer.c
+++ b/wiretap/lanalyzer.c
@@ -1,6 +1,6 @@
/* lanalyzer.c
*
- * $Id: lanalyzer.c,v 1.16 1999/09/24 05:49:51 guy Exp $
+ * $Id: lanalyzer.c,v 1.17 1999/10/05 07:06:05 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@verdict.uthscsa.edu>
@@ -67,10 +67,9 @@ int lanalyzer_open(wtap *wth, int *err)
bytes_read = file_read(LE_record_type, 1, 2, wth->fh);
bytes_read += file_read(LE_record_length, 1, 2, wth->fh);
if (bytes_read != 4) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
wth->data_offset += 4;
@@ -97,8 +96,8 @@ int lanalyzer_open(wtap *wth, int *err)
bytes_read = file_read(LE_record_type, 1, 2, wth->fh);
bytes_read += file_read(LE_record_length, 1, 2, wth->fh);
if (bytes_read != 4) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0) {
free(wth->capture.lanalyzer);
return -1;
}
@@ -118,8 +117,8 @@ int lanalyzer_open(wtap *wth, int *err)
bytes_read = file_read(summary, 1, sizeof summary,
wth->fh);
if (bytes_read != sizeof summary) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0) {
g_free(wth->capture.lanalyzer);
return -1;
}
@@ -214,10 +213,9 @@ static int lanalyzer_read(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(LE_record_type, 1, 2, wth->fh);
if (bytes_read != 2) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
if (bytes_read != 0) {
*err = WTAP_ERR_SHORT_READ;
return -1;
@@ -227,9 +225,8 @@ static int lanalyzer_read(wtap *wth, int *err)
wth->data_offset += 2;
bytes_read = file_read(LE_record_length, 1, 2, wth->fh);
if (bytes_read != 2) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
@@ -255,9 +252,8 @@ static int lanalyzer_read(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(descriptor, 1, DESCRIPTOR_LEN, wth->fh);
if (bytes_read != DESCRIPTOR_LEN) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
@@ -271,9 +267,8 @@ static int lanalyzer_read(wtap *wth, int *err)
packet_size, wth->fh);
if (bytes_read != packet_size) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
diff --git a/wiretap/libpcap.c b/wiretap/libpcap.c
index 2f22d78154..f4dfc19d35 100644
--- a/wiretap/libpcap.c
+++ b/wiretap/libpcap.c
@@ -1,6 +1,6 @@
/* libpcap.c
*
- * $Id: libpcap.c,v 1.20 1999/09/24 05:49:51 guy Exp $
+ * $Id: libpcap.c,v 1.21 1999/10/05 07:06:06 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@verdict.uthscsa.edu>
@@ -152,10 +152,9 @@ int libpcap_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&magic, 1, sizeof magic, wth->fh);
if (bytes_read != sizeof magic) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
wth->data_offset += sizeof magic;
@@ -173,10 +172,9 @@ int libpcap_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&hdr, 1, sizeof hdr, wth->fh);
if (bytes_read != sizeof hdr) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
wth->data_offset += sizeof hdr;
@@ -227,10 +225,9 @@ static int libpcap_read(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&hdr, 1, sizeof hdr, wth->fh);
if (bytes_read != sizeof hdr) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
if (bytes_read != 0) {
*err = WTAP_ERR_SHORT_READ;
return -1;
@@ -285,9 +282,8 @@ static int libpcap_read(wtap *wth, int *err)
packet_size, wth->fh);
if (bytes_read != packet_size) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
diff --git a/wiretap/netmon.c b/wiretap/netmon.c
index 7aeb64a69b..614660433f 100644
--- a/wiretap/netmon.c
+++ b/wiretap/netmon.c
@@ -1,6 +1,6 @@
/* netmon.c
*
- * $Id: netmon.c,v 1.15 1999/09/24 05:49:51 guy Exp $
+ * $Id: netmon.c,v 1.16 1999/10/05 07:06:06 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@verdict.uthscsa.edu>
@@ -122,10 +122,9 @@ int netmon_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(magic, 1, sizeof magic, wth->fh);
if (bytes_read != sizeof magic) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
@@ -138,10 +137,9 @@ int netmon_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&hdr, 1, sizeof hdr, wth->fh);
if (bytes_read != sizeof hdr) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
@@ -254,10 +252,9 @@ static int netmon_read(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&hdr, 1, hdr_size, wth->fh);
if (bytes_read != hdr_size) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
if (bytes_read != 0) {
*err = WTAP_ERR_SHORT_READ;
return -1;
@@ -293,9 +290,8 @@ static int netmon_read(wtap *wth, int *err)
packet_size, wth->fh);
if (bytes_read != packet_size) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
diff --git a/wiretap/netxray.c b/wiretap/netxray.c
index e70ec096b2..926dc32045 100644
--- a/wiretap/netxray.c
+++ b/wiretap/netxray.c
@@ -1,6 +1,6 @@
/* netxray.c
*
- * $Id: netxray.c,v 1.15 1999/09/24 05:49:51 guy Exp $
+ * $Id: netxray.c,v 1.16 1999/10/05 07:06:06 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@verdict.uthscsa.edu>
@@ -121,10 +121,9 @@ int netxray_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(magic, 1, sizeof magic, wth->fh);
if (bytes_read != sizeof magic) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
wth->data_offset += sizeof magic;
@@ -137,10 +136,9 @@ int netxray_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&hdr, 1, sizeof hdr, wth->fh);
if (bytes_read != sizeof hdr) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
wth->data_offset += sizeof hdr;
@@ -241,10 +239,9 @@ reread:
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&hdr, 1, hdr_size, wth->fh);
if (bytes_read != hdr_size) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
if (bytes_read != 0) {
*err = WTAP_ERR_SHORT_READ;
return -1;
@@ -272,9 +269,8 @@ reread:
packet_size, wth->fh);
if (bytes_read != packet_size) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
diff --git a/wiretap/ngsniffer.c b/wiretap/ngsniffer.c
index 4bd358cc91..f148e9413e 100644
--- a/wiretap/ngsniffer.c
+++ b/wiretap/ngsniffer.c
@@ -1,6 +1,6 @@
/* ngsniffer.c
*
- * $Id: ngsniffer.c,v 1.24 1999/09/30 20:34:26 guy Exp $
+ * $Id: ngsniffer.c,v 1.25 1999/10/05 07:06:07 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@verdict.uthscsa.edu>
@@ -274,10 +274,9 @@ int ngsniffer_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(magic, 1, 17, wth->fh);
if (bytes_read != 17) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
wth->data_offset += 17;
@@ -296,10 +295,9 @@ int ngsniffer_open(wtap *wth, int *err)
bytes_read = file_read(record_type, 1, 2, wth->fh);
bytes_read += file_read(record_length, 1, 4, wth->fh);
if (bytes_read != 6) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
wth->data_offset += 6;
@@ -316,10 +314,9 @@ int ngsniffer_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&version, 1, sizeof version, wth->fh);
if (bytes_read != sizeof version) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
wth->data_offset += sizeof version;
@@ -411,10 +408,9 @@ static int ngsniffer_read(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(record_type, 1, 2, wth->fh);
if (bytes_read != 2) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
if (bytes_read != 0) {
*err = WTAP_ERR_SHORT_READ;
return -1;
@@ -425,9 +421,8 @@ static int ngsniffer_read(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(record_length, 1, 4, wth->fh);
if (bytes_read != 4) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
@@ -453,9 +448,8 @@ static int ngsniffer_read(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&frame2, 1, sizeof frame2, wth->fh);
if (bytes_read != sizeof frame2) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
@@ -490,9 +484,8 @@ static int ngsniffer_read(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&frame4, 1, sizeof frame4, wth->fh);
if (bytes_read != sizeof frame4) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
@@ -565,9 +558,8 @@ found:
length, wth->fh);
if (bytes_read != length) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
diff --git a/wiretap/radcom.c b/wiretap/radcom.c
index 6fac1bf283..9787fff8fc 100644
--- a/wiretap/radcom.c
+++ b/wiretap/radcom.c
@@ -1,6 +1,6 @@
/* radcom.c
*
- * $Id: radcom.c,v 1.12 1999/09/24 05:49:52 guy Exp $
+ * $Id: radcom.c,v 1.13 1999/10/05 07:06:07 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@verdict.uthscsa.edu>
@@ -85,10 +85,9 @@ int radcom_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(magic, 1, 8, wth->fh);
if (bytes_read != 8) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
@@ -101,10 +100,9 @@ int radcom_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&byte, 1, 1, wth->fh);
if (bytes_read != 1) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
wth->data_offset += 1;
@@ -112,10 +110,9 @@ int radcom_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&byte, 1, 1, wth->fh);
if (bytes_read != 1) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
wth->data_offset += 1;
@@ -127,10 +124,9 @@ int radcom_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&start_date, 1, sizeof(struct frame_date), wth->fh);
if (bytes_read != sizeof(struct frame_date)) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
wth->data_offset += sizeof(struct frame_date);
@@ -215,8 +211,8 @@ int radcom_open(wtap *wth, int *err)
return 1;
read_error:
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0) {
free(wth->capture.radcom);
return -1;
}
@@ -239,10 +235,9 @@ static int radcom_read(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&hdr, 1, sizeof hdr, wth->fh);
if (bytes_read != sizeof hdr) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
if (bytes_read != 0) {
*err = WTAP_ERR_SHORT_READ;
return -1;
@@ -281,9 +276,8 @@ static int radcom_read(wtap *wth, int *err)
length, wth->fh);
if (bytes_read != length) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
@@ -297,9 +291,8 @@ static int radcom_read(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&fcs, 1, sizeof fcs, wth->fh);
if (bytes_read != sizeof fcs) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
diff --git a/wiretap/snoop.c b/wiretap/snoop.c
index 187721a1f0..479baf809e 100644
--- a/wiretap/snoop.c
+++ b/wiretap/snoop.c
@@ -1,6 +1,6 @@
/* snoop.c
*
- * $Id: snoop.c,v 1.13 1999/09/28 01:19:01 guy Exp $
+ * $Id: snoop.c,v 1.14 1999/10/05 07:06:07 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@verdict.uthscsa.edu>
@@ -82,10 +82,9 @@ int snoop_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(magic, 1, sizeof magic, wth->fh);
if (bytes_read != sizeof magic) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
wth->data_offset += sizeof magic;
@@ -98,10 +97,9 @@ int snoop_open(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&hdr, 1, sizeof hdr, wth->fh);
if (bytes_read != sizeof hdr) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
return 0;
}
wth->data_offset += sizeof hdr;
@@ -145,10 +143,9 @@ static int snoop_read(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(&hdr, 1, sizeof hdr, wth->fh);
if (bytes_read != sizeof hdr) {
- if (file_error(wth->fh)) {
- *err = errno;
+ *err = file_error(wth->fh);
+ if (*err != 0)
return -1;
- }
if (bytes_read != 0) {
*err = WTAP_ERR_SHORT_READ;
return -1;
@@ -175,9 +172,8 @@ static int snoop_read(wtap *wth, int *err)
packet_size, wth->fh);
if (bytes_read != packet_size) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
@@ -204,9 +200,8 @@ static int snoop_read(wtap *wth, int *err)
errno = WTAP_ERR_CANT_READ;
bytes_read = file_read(padbuf, 1, bytes_to_read, wth->fh);
if (bytes_read != bytes_to_read) {
- if (file_error(wth->fh))
- *err = errno;
- else
+ *err = file_error(wth->fh);
+ if (*err == 0)
*err = WTAP_ERR_SHORT_READ;
return -1;
}
diff --git a/wiretap/wtap.c b/wiretap/wtap.c
index a8ad39fcbd..e4a85ec7ff 100644
--- a/wiretap/wtap.c
+++ b/wiretap/wtap.c
@@ -1,6 +1,6 @@
/* wtap.c
*
- * $Id: wtap.c,v 1.22 1999/09/24 05:49:53 guy Exp $
+ * $Id: wtap.c,v 1.23 1999/10/05 07:06:07 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@verdict.uthscsa.edu>
@@ -123,7 +123,15 @@ const char *wtap_strerror(int err)
if (err < 0) {
wtap_errlist_index = -1 - err;
if (wtap_errlist_index >= WTAP_ERRLIST_SIZE) {
- sprintf(errbuf, "Error %d", err);
+#ifdef HAVE_ZLIB
+ if (err >= WTAP_ERR_ZLIB_MIN
+ && err <= WTAP_ERR_ZLIB_MAX) {
+ /* Assume it's a zlib error. */
+ sprintf(errbuf, "Zlib error: %s",
+ zError(err));
+ } else
+#endif
+ sprintf(errbuf, "Error %d", err);
return errbuf;
}
if (wtap_errlist[wtap_errlist_index] == NULL)
diff --git a/wiretap/wtap.h b/wiretap/wtap.h
index 84dedcb863..22e76a611c 100644
--- a/wiretap/wtap.h
+++ b/wiretap/wtap.h
@@ -1,6 +1,6 @@
/* wtap.h
*
- * $Id: wtap.h,v 1.41 1999/09/24 05:49:53 guy Exp $
+ * $Id: wtap.h,v 1.42 1999/10/05 07:06:08 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@verdict.uthscsa.edu>
@@ -393,6 +393,17 @@ int wtap_pcap_encap_to_wtap_encap(int encap);
#define WTAP_ERR_SHORT_WRITE -12
/* An attempt to write wrote less data than it should have */
+/* Errors from zlib; zlib error Z_xxx turns into Wiretap error
+ WTAP_ERR_ZLIB + Z_xxx.
+
+ WTAP_ERR_ZLIB_MIN and WTAP_ERR_ZLIB_MAX bound the range of zlib
+ errors; we leave room for 100 positive and 100 negative error
+ codes. */
+
+#define WTAP_ERR_ZLIB -200
+#define WTAP_ERR_ZLIB_MAX -100
+#define WTAP_ERR_ZLIB_MIN -300
+
/* Pointer versions of ntohs and ntohl. Given a pointer to a member of a
* byte array, returns the value of the two or four bytes at the pointer.
* The pletoh[sl] versions return the little-endian representation.