diff options
author | Guy Harris <guy@alum.mit.edu> | 2002-05-04 10:00:18 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2002-05-04 10:00:18 +0000 |
commit | 82f364ab1ab3bdfc58ebd9741b384f01ba606e68 (patch) | |
tree | deaf27215a0e8f4e1f0be469515d5e28a18a8d00 /wiretap/netmon.c | |
parent | 2be776e06c1df4d54dd5076760ee34b031cc8e8d (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.
svn path=/trunk/; revision=5385
Diffstat (limited to 'wiretap/netmon.c')
-rw-r--r-- | wiretap/netmon.c | 71 |
1 files changed, 39 insertions, 32 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; } |