diff options
author | guy <guy@f5534014-38df-0310-8fa8-9805f1628bb7> | 2002-05-04 10:00:18 +0000 |
---|---|---|
committer | guy <guy@f5534014-38df-0310-8fa8-9805f1628bb7> | 2002-05-04 10:00:18 +0000 |
commit | 81b4b9850b50535b4ea1836bf2afacb442c742e1 (patch) | |
tree | deaf27215a0e8f4e1f0be469515d5e28a18a8d00 /wiretap | |
parent | 67ae239f5314aad91a9492a37779d312d3602f10 (diff) |
Fix capture-file-specific "close output" routines to check whether the
"err" argument is null and return an error code through that argument
only if it isn't, to match what "wtap_dump_close()", which calls those
routines, does.
Put the NetXRay dump routines in order by version number.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5385 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'wiretap')
-rw-r--r-- | wiretap/netmon.c | 71 | ||||
-rw-r--r-- | wiretap/netxray.c | 104 | ||||
-rw-r--r-- | wiretap/ngsniffer.c | 12 | ||||
-rw-r--r-- | wiretap/visual.c | 37 |
4 files changed, 124 insertions, 100 deletions
diff --git a/wiretap/netmon.c b/wiretap/netmon.c index b40f9f8cab..6df2312e64 100644 --- a/wiretap/netmon.c +++ b/wiretap/netmon.c @@ -1,6 +1,6 @@ /* netmon.c * - * $Id: netmon.c,v 1.53 2002/04/30 09:21:41 guy Exp $ + * $Id: netmon.c,v 1.54 2002/05/04 10:00:18 guy Exp $ * * Wiretap Library * Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu> @@ -748,10 +748,12 @@ static gboolean netmon_dump_close(wtap_dumper *wdh, int *err) n_to_write = netmon->frame_table_index * sizeof *netmon->frame_table; nwritten = fwrite(netmon->frame_table, 1, n_to_write, wdh->fh); if (nwritten != n_to_write) { - if (nwritten == 0 && ferror(wdh->fh)) - *err = errno; - else - *err = WTAP_ERR_SHORT_WRITE; + if (err != NULL) { + if (nwritten == 0 && ferror(wdh->fh)) + *err = errno; + else + *err = WTAP_ERR_SHORT_WRITE; + } return FALSE; } @@ -779,48 +781,53 @@ static gboolean netmon_dump_close(wtap_dumper *wdh, int *err) default: /* We should never get here - our open routine should only get called for the types above. */ - *err = WTAP_ERR_UNSUPPORTED_FILE_TYPE; + if (err != NULL) + *err = WTAP_ERR_UNSUPPORTED_FILE_TYPE; return FALSE; } nwritten = fwrite(magicp, 1, magic_size, wdh->fh); if (nwritten != magic_size) { - if (nwritten == 0 && ferror(wdh->fh)) - *err = errno; - else - *err = WTAP_ERR_SHORT_WRITE; + if (err != NULL) { + if (nwritten == 0 && ferror(wdh->fh)) + *err = errno; + else + *err = WTAP_ERR_SHORT_WRITE; + } return FALSE; } file_hdr.network = htoles(wtap_encap[wdh->encap]); tm = localtime(&netmon->first_record_time.tv_sec); - if (tm != NULL) { - file_hdr.ts_year = htoles(1900 + tm->tm_year); - file_hdr.ts_month = htoles(tm->tm_mon + 1); - file_hdr.ts_dow = htoles(tm->tm_wday); - file_hdr.ts_day = htoles(tm->tm_mday); - file_hdr.ts_hour = htoles(tm->tm_hour); - file_hdr.ts_min = htoles(tm->tm_min); - file_hdr.ts_sec = htoles(tm->tm_sec); - } else { - file_hdr.ts_year = htoles(1900 + 0); - file_hdr.ts_month = htoles(0 + 1); - file_hdr.ts_dow = htoles(0); - file_hdr.ts_day = htoles(0); - file_hdr.ts_hour = htoles(0); - file_hdr.ts_min = htoles(0); - file_hdr.ts_sec = htoles(0); - } - file_hdr.ts_msec = htoles(netmon->first_record_time.tv_usec/1000); + if (tm != NULL) { + file_hdr.ts_year = htoles(1900 + tm->tm_year); + file_hdr.ts_month = htoles(tm->tm_mon + 1); + file_hdr.ts_dow = htoles(tm->tm_wday); + file_hdr.ts_day = htoles(tm->tm_mday); + file_hdr.ts_hour = htoles(tm->tm_hour); + file_hdr.ts_min = htoles(tm->tm_min); + file_hdr.ts_sec = htoles(tm->tm_sec); + } else { + file_hdr.ts_year = htoles(1900 + 0); + file_hdr.ts_month = htoles(0 + 1); + file_hdr.ts_dow = htoles(0); + file_hdr.ts_day = htoles(0); + file_hdr.ts_hour = htoles(0); + file_hdr.ts_min = htoles(0); + file_hdr.ts_sec = htoles(0); + } + file_hdr.ts_msec = htoles(netmon->first_record_time.tv_usec/1000); /* XXX - what about rounding? */ file_hdr.frametableoffset = htolel(netmon->frame_table_offset); file_hdr.frametablelength = htolel(netmon->frame_table_index * sizeof *netmon->frame_table); nwritten = fwrite(&file_hdr, 1, sizeof file_hdr, wdh->fh); if (nwritten != sizeof file_hdr) { - if (nwritten == 0 && ferror(wdh->fh)) - *err = errno; - else - *err = WTAP_ERR_SHORT_WRITE; + if (err != NULL) { + if (nwritten == 0 && ferror(wdh->fh)) + *err = errno; + else + *err = WTAP_ERR_SHORT_WRITE; + } return FALSE; } diff --git a/wiretap/netxray.c b/wiretap/netxray.c index 572e950163..143ced8cc9 100644 --- a/wiretap/netxray.c +++ b/wiretap/netxray.c @@ -1,6 +1,6 @@ /* netxray.c * - * $Id: netxray.c,v 1.53 2002/04/18 21:35:57 guy Exp $ + * $Id: netxray.c,v 1.54 2002/05/04 10:00:18 guy Exp $ * * Wiretap Library * Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu> @@ -124,15 +124,14 @@ static void netxray_set_pseudo_header(wtap *wth, static gboolean netxray_read_rec_data(FILE_T fh, guint8 *data_ptr, guint32 packet_size, int *err); static void netxray_close(wtap *wth); -static gboolean netxray_dump_2_0(wtap_dumper *wdh, const struct - wtap_pkthdr *phdr, const union - wtap_pseudo_header *pseudo_header, - const u_char *pd, int *err); static -gboolean netxray_dump_close_2_0(wtap_dumper *wdh, int *err); static -gboolean netxray_dump_1_1(wtap_dumper *wdh, const struct wtap_pkthdr - *phdr, const union wtap_pseudo_header - *pseudo_header, const u_char *pd, int *err); +static gboolean netxray_dump_1_1(wtap_dumper *wdh, + const struct wtap_pkthdr *phdr, + const union wtap_pseudo_header *pseudo_header, const u_char *pd, int *err); static gboolean netxray_dump_close_1_1(wtap_dumper *wdh, int *err); +static gboolean netxray_dump_2_0(wtap_dumper *wdh, + const struct wtap_pkthdr *phdr, + const union wtap_pseudo_header *pseudo_header, const u_char *pd, int *err); +static gboolean netxray_dump_close_2_0(wtap_dumper *wdh, int *err); int netxray_open(wtap *wth, int *err) { @@ -506,11 +505,11 @@ int netxray_dump_can_write_encap(int encap) /* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on failure */ -gboolean netxray_dump_open_2_0(wtap_dumper *wdh, int *err) +gboolean netxray_dump_open_1_1(wtap_dumper *wdh, int *err) { /* This is a netxray file */ - wdh->subtype_write = netxray_dump_2_0; - wdh->subtype_close = netxray_dump_close_2_0; + wdh->subtype_write = netxray_dump_1_1; + wdh->subtype_close = netxray_dump_close_1_1; /* We can't fill in all the fields in the file header, as we haven't yet written any packets. As we'll have to rewrite @@ -532,14 +531,14 @@ gboolean netxray_dump_open_2_0(wtap_dumper *wdh, int *err) /* Write a record for a packet to a dump file. Returns TRUE on success, FALSE on failure. */ -static gboolean netxray_dump_2_0(wtap_dumper *wdh, +static gboolean netxray_dump_1_1(wtap_dumper *wdh, const struct wtap_pkthdr *phdr, const union wtap_pseudo_header *pseudo_header _U_, const u_char *pd, int *err) { netxray_dump_t *netxray = wdh->dump.netxray; guint32 timestamp; - struct netxrayrec_2_x_hdr rec_hdr; + struct netxrayrec_1_x_hdr rec_hdr; size_t nwritten; /* NetXRay/Windows Sniffer files have a capture start date/time @@ -565,14 +564,7 @@ static gboolean netxray_dump_2_0(wtap_dumper *wdh, rec_hdr.timehi = htolel(0); rec_hdr.orig_len = htoles(phdr->len); rec_hdr.incl_len = htoles(phdr->caplen); - - if (phdr->pkt_encap == WTAP_ENCAP_IEEE_802_11_WITH_RADIO) - { - rec_hdr.xxx[12] = pseudo_header->ieee_802_11.channel; - rec_hdr.xxx[13] = pseudo_header->ieee_802_11.data_rate; - rec_hdr.xxx[14] = pseudo_header->ieee_802_11.signal_level; - } - + nwritten = fwrite(&rec_hdr, 1, sizeof(rec_hdr), wdh->fh); if (nwritten != sizeof(rec_hdr)) { if (nwritten == 0 && ferror(wdh->fh)) @@ -599,7 +591,7 @@ static gboolean netxray_dump_2_0(wtap_dumper *wdh, /* Finish writing to a dump file. Returns TRUE on success, FALSE on failure. */ -static gboolean netxray_dump_close_2_0(wtap_dumper *wdh, int *err) +static gboolean netxray_dump_close_1_1(wtap_dumper *wdh, int *err) { char hdr_buf[CAPTUREFILE_HEADER_SIZE - sizeof(netxray_magic)]; netxray_dump_t *netxray = wdh->dump.netxray; @@ -615,16 +607,18 @@ static gboolean netxray_dump_close_2_0(wtap_dumper *wdh, int *err) /* Rewrite the file header. */ nwritten = fwrite(netxray_magic, 1, sizeof netxray_magic, wdh->fh); if (nwritten != sizeof netxray_magic) { - if (nwritten == 0 && ferror(wdh->fh)) - *err = errno; - else - *err = WTAP_ERR_SHORT_WRITE; + if (err != NULL) { + if (nwritten == 0 && ferror(wdh->fh)) + *err = errno; + else + *err = WTAP_ERR_SHORT_WRITE; + } return FALSE; } /* "sniffer" version ? */ memset(&file_hdr, '\0', sizeof file_hdr); - memcpy(file_hdr.version, vers_2_001, sizeof vers_2_001); + memcpy(file_hdr.version, vers_1_1, sizeof vers_1_1); file_hdr.start_time = htolel(netxray->start.tv_sec); file_hdr.nframes = htolel(netxray->nframes); file_hdr.start_offset = htolel(CAPTUREFILE_HEADER_SIZE); @@ -637,10 +631,12 @@ static gboolean netxray_dump_close_2_0(wtap_dumper *wdh, int *err) memcpy(hdr_buf, &file_hdr, sizeof(file_hdr)); nwritten = fwrite(hdr_buf, 1, sizeof hdr_buf, wdh->fh); if (nwritten != sizeof hdr_buf) { - if (nwritten == 0 && ferror(wdh->fh)) - *err = errno; - else - *err = WTAP_ERR_SHORT_WRITE; + if (err != NULL) { + if (nwritten == 0 && ferror(wdh->fh)) + *err = errno; + else + *err = WTAP_ERR_SHORT_WRITE; + } return FALSE; } @@ -649,11 +645,11 @@ static gboolean netxray_dump_close_2_0(wtap_dumper *wdh, int *err) /* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on failure */ -gboolean netxray_dump_open_1_1(wtap_dumper *wdh, int *err) +gboolean netxray_dump_open_2_0(wtap_dumper *wdh, int *err) { /* This is a netxray file */ - wdh->subtype_write = netxray_dump_1_1; - wdh->subtype_close = netxray_dump_close_1_1; + wdh->subtype_write = netxray_dump_2_0; + wdh->subtype_close = netxray_dump_close_2_0; /* We can't fill in all the fields in the file header, as we haven't yet written any packets. As we'll have to rewrite @@ -675,14 +671,14 @@ gboolean netxray_dump_open_1_1(wtap_dumper *wdh, int *err) /* Write a record for a packet to a dump file. Returns TRUE on success, FALSE on failure. */ -static gboolean netxray_dump_1_1(wtap_dumper *wdh, +static gboolean netxray_dump_2_0(wtap_dumper *wdh, const struct wtap_pkthdr *phdr, const union wtap_pseudo_header *pseudo_header _U_, const u_char *pd, int *err) { netxray_dump_t *netxray = wdh->dump.netxray; guint32 timestamp; - struct netxrayrec_1_x_hdr rec_hdr; + struct netxrayrec_2_x_hdr rec_hdr; size_t nwritten; /* NetXRay/Windows Sniffer files have a capture start date/time @@ -708,7 +704,14 @@ static gboolean netxray_dump_1_1(wtap_dumper *wdh, rec_hdr.timehi = htolel(0); rec_hdr.orig_len = htoles(phdr->len); rec_hdr.incl_len = htoles(phdr->caplen); - + + if (phdr->pkt_encap == WTAP_ENCAP_IEEE_802_11_WITH_RADIO) + { + rec_hdr.xxx[12] = pseudo_header->ieee_802_11.channel; + rec_hdr.xxx[13] = pseudo_header->ieee_802_11.data_rate; + rec_hdr.xxx[14] = pseudo_header->ieee_802_11.signal_level; + } + nwritten = fwrite(&rec_hdr, 1, sizeof(rec_hdr), wdh->fh); if (nwritten != sizeof(rec_hdr)) { if (nwritten == 0 && ferror(wdh->fh)) @@ -735,7 +738,7 @@ static gboolean netxray_dump_1_1(wtap_dumper *wdh, /* Finish writing to a dump file. Returns TRUE on success, FALSE on failure. */ -static gboolean netxray_dump_close_1_1(wtap_dumper *wdh, int *err) +static gboolean netxray_dump_close_2_0(wtap_dumper *wdh, int *err) { char hdr_buf[CAPTUREFILE_HEADER_SIZE - sizeof(netxray_magic)]; netxray_dump_t *netxray = wdh->dump.netxray; @@ -751,16 +754,18 @@ static gboolean netxray_dump_close_1_1(wtap_dumper *wdh, int *err) /* Rewrite the file header. */ nwritten = fwrite(netxray_magic, 1, sizeof netxray_magic, wdh->fh); if (nwritten != sizeof netxray_magic) { - if (nwritten == 0 && ferror(wdh->fh)) - *err = errno; - else - *err = WTAP_ERR_SHORT_WRITE; + if (err != NULL) { + if (nwritten == 0 && ferror(wdh->fh)) + *err = errno; + else + *err = WTAP_ERR_SHORT_WRITE; + } return FALSE; } /* "sniffer" version ? */ memset(&file_hdr, '\0', sizeof file_hdr); - memcpy(file_hdr.version, vers_1_1, sizeof vers_1_1); + memcpy(file_hdr.version, vers_2_001, sizeof vers_2_001); file_hdr.start_time = htolel(netxray->start.tv_sec); file_hdr.nframes = htolel(netxray->nframes); file_hdr.start_offset = htolel(CAPTUREFILE_HEADER_SIZE); @@ -773,13 +778,14 @@ static gboolean netxray_dump_close_1_1(wtap_dumper *wdh, int *err) memcpy(hdr_buf, &file_hdr, sizeof(file_hdr)); nwritten = fwrite(hdr_buf, 1, sizeof hdr_buf, wdh->fh); if (nwritten != sizeof hdr_buf) { - if (nwritten == 0 && ferror(wdh->fh)) - *err = errno; - else - *err = WTAP_ERR_SHORT_WRITE; + if (err != NULL) { + if (nwritten == 0 && ferror(wdh->fh)) + *err = errno; + else + *err = WTAP_ERR_SHORT_WRITE; + } return FALSE; } return TRUE; } - diff --git a/wiretap/ngsniffer.c b/wiretap/ngsniffer.c index 8758fb8d9e..2caef77d0a 100644 --- a/wiretap/ngsniffer.c +++ b/wiretap/ngsniffer.c @@ -1,6 +1,6 @@ /* ngsniffer.c * - * $Id: ngsniffer.c,v 1.79 2002/04/30 08:48:27 guy Exp $ + * $Id: ngsniffer.c,v 1.80 2002/05/04 10:00:18 guy Exp $ * * Wiretap Library * Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu> @@ -1559,10 +1559,12 @@ static gboolean ngsniffer_dump_close(wtap_dumper *wdh, int *err) nwritten = fwrite(buf, 1, 6, wdh->fh); if (nwritten != 6) { - if (nwritten == 0 && ferror(wdh->fh)) - *err = errno; - else - *err = WTAP_ERR_SHORT_WRITE; + if (err != NULL) { + if (nwritten == 0 && ferror(wdh->fh)) + *err = errno; + else + *err = WTAP_ERR_SHORT_WRITE; + } return FALSE; } return TRUE; diff --git a/wiretap/visual.c b/wiretap/visual.c index 100441ae7a..7e1baf8e90 100644 --- a/wiretap/visual.c +++ b/wiretap/visual.c @@ -2,7 +2,7 @@ * File read and write routines for Visual Networks cap files. * Copyright (c) 2001, Tom Nisbet tnisbet@visualnetworks.com * - * $Id: visual.c,v 1.6 2002/04/09 08:15:04 guy Exp $ + * $Id: visual.c,v 1.7 2002/05/04 10:00:18 guy Exp $ * * Wiretap Library * Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu> @@ -120,7 +120,7 @@ static gboolean visual_seek_read(wtap *wth, long seek_off, static gboolean visual_dump(wtap_dumper *wdh, const struct wtap_pkthdr *phdr, const union wtap_pseudo_header *pseudo_header, const u_char *pd, int *err); static gboolean visual_dump_close(wtap_dumper *wdh, int *err); -static void visual_dump_free(); +static void visual_dump_free(wtap_dumper *wdh); /* Open a file for reading */ @@ -594,10 +594,13 @@ static gboolean visual_dump_close(wtap_dumper *wdh, int *err) nwritten = fwrite(visual->index_table, 1, n_to_write, wdh->fh); if (nwritten != n_to_write) { - if (nwritten == 0 && ferror(wdh->fh)) - *err = errno; - else - *err = WTAP_ERR_SHORT_WRITE; + if (err != NULL) + { + if (nwritten == 0 && ferror(wdh->fh)) + *err = errno; + else + *err = WTAP_ERR_SHORT_WRITE; + } visual_dump_free(wdh); return FALSE; } @@ -610,10 +613,13 @@ static gboolean visual_dump_close(wtap_dumper *wdh, int *err) nwritten = fwrite(magicp, 1, magic_size, wdh->fh); if (nwritten != magic_size) { - if (nwritten == 0 && ferror(wdh->fh)) - *err = errno; - else - *err = WTAP_ERR_SHORT_WRITE; + if (err != NULL) + { + if (nwritten == 0 && ferror(wdh->fh)) + *err = errno; + else + *err = WTAP_ERR_SHORT_WRITE; + } visual_dump_free(wdh); return FALSE; } @@ -643,10 +649,13 @@ static gboolean visual_dump_close(wtap_dumper *wdh, int *err) nwritten = fwrite(&vfile_hdr, 1, sizeof vfile_hdr, wdh->fh); if (nwritten != sizeof vfile_hdr) { - if (nwritten == 0 && ferror(wdh->fh)) - *err = errno; - else - *err = WTAP_ERR_SHORT_WRITE; + if (err != NULL) + { + if (nwritten == 0 && ferror(wdh->fh)) + *err = errno; + else + *err = WTAP_ERR_SHORT_WRITE; + } visual_dump_free(wdh); return FALSE; } |