Rename various capture file routines to have names starting with "cf_".

svn path=/trunk/; revision=8479
This commit is contained in:
Guy Harris 2003-09-15 22:48:42 +00:00
parent 1332b99a2a
commit 14509164fc
6 changed files with 118 additions and 120 deletions

View File

@ -1,7 +1,7 @@
/* capture.c
* Routines for packet capture windows
*
* $Id: capture.c,v 1.208 2003/07/23 05:01:15 guy Exp $
* $Id: capture.c,v 1.209 2003/09/15 22:48:41 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -340,7 +340,7 @@ do_capture(const char *save_file)
g_free(capfile_name);
return;
}
close_cap_file(&cfile);
cf_close(&cfile);
g_assert(cfile.save_file == NULL);
cfile.save_file = capfile_name;
/* cfile.save_file is "g_free"ed below, which is equivalent to
@ -561,7 +561,7 @@ do_capture(const char *save_file)
}
if (c == SP_CAPSTART) {
/* Success. Open the capture file, and set up to read it. */
err = start_tail_cap_file(cfile.save_file, is_tempfile, &cfile);
err = cf_start_tail(cfile.save_file, is_tempfile, &cfile);
if (err == 0) {
/* We were able to open and set up to read the capture file;
arrange that our callback be called whenever it's possible
@ -639,7 +639,7 @@ do_capture(const char *save_file)
}
if (capture_succeeded) {
/* Capture succeeded; read in the capture file. */
if ((err = open_cap_file(cfile.save_file, is_tempfile, &cfile)) == 0) {
if ((err = cf_open(cfile.save_file, is_tempfile, &cfile)) == 0) {
/* Set the read filter to NULL. */
cfile.rfcode = NULL;
@ -650,18 +650,17 @@ do_capture(const char *save_file)
At some point, we will add support in Wiretap to return
packet-drop statistics for capture file formats that store it,
and will make "read_cap_file()" get those statistics from
Wiretap. We clear the statistics (marking them as "not known")
in "open_cap_file()", and "read_cap_file()" will only fetch
them and mark them as known if Wiretap supplies them, so if
we get the statistics now, after calling "open_cap_file()" but
before calling "read_cap_file()", the values we store will
be used by "read_cap_file()".
and will make "cf_read()" get those statistics from Wiretap.
We clear the statistics (marking them as "not known") in
"cf_open()", and "cf_read()" will only fetch them and mark
them as known if Wiretap supplies them, so if we get the
statistics now, after calling "cf_open()" but before calling
"cf_read()", the values we store will be used by "cf_read()".
If a future libpcap capture file format stores the statistics,
we'll put them into the capture file that we write, and will
thus not have to set them here - "read_cap_file()" will get
them from the file and use them. */
thus not have to set them here - "cf_read()" will get them from
the file and use them. */
if (stats_known) {
cfile.drops_known = TRUE;
@ -675,7 +674,7 @@ do_capture(const char *save_file)
supplies, allowing us to display only the ones it does. */
cfile.drops = stats.ps_drop;
}
switch (read_cap_file(&cfile, &err)) {
switch (cf_read(&cfile, &err)) {
case READ_SUCCESS:
case READ_ERROR:
@ -771,7 +770,7 @@ cap_file_input_cb(gpointer data, gint source _U_,
/* Read what remains of the capture file, and finish the capture.
XXX - do something if this fails? */
switch (finish_tail_cap_file(cf, &err)) {
switch (cf_finish_tail(cf, &err)) {
case READ_SUCCESS:
case READ_ERROR:
@ -853,7 +852,7 @@ cap_file_input_cb(gpointer data, gint source _U_,
/* Read from the capture file the number of records the child told us
it added.
XXX - do something if this fails? */
switch (continue_tail_cap_file(cf, to_read, &err)) {
switch (cf_continue_tail(cf, to_read, &err)) {
case READ_SUCCESS:
case READ_ERROR:

141
file.c
View File

@ -1,7 +1,7 @@
/* file.c
* File I/O routines
*
* $Id: file.c,v 1.312 2003/09/15 22:16:07 guy Exp $
* $Id: file.c,v 1.313 2003/09/15 22:48:41 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -145,7 +145,7 @@ typedef struct {
int
open_cap_file(char *fname, gboolean is_tempfile, capture_file *cf)
cf_open(char *fname, gboolean is_tempfile, capture_file *cf)
{
wtap *wth;
int err;
@ -166,7 +166,7 @@ open_cap_file(char *fname, gboolean is_tempfile, capture_file *cf)
/* The open succeeded. Close whatever capture file we had open,
and fill in the information for this file. */
close_cap_file(cf);
cf_close(cf);
/* Initialize all data structures used for dissection. */
init_dissection();
@ -224,7 +224,7 @@ fail:
/* Reset everything to a pristine state */
void
close_cap_file(capture_file *cf)
cf_close(capture_file *cf)
{
/* Die if we're in the middle of reading a file. */
g_assert(cf->state != FILE_READ_IN_PROGRESS);
@ -321,7 +321,7 @@ set_display_filename(capture_file *cf)
}
read_status_t
read_cap_file(capture_file *cf, int *err)
cf_read(capture_file *cf, int *err)
{
gchar *name_ptr, *load_msg, *load_fmt = "%s";
size_t msg_len;
@ -413,7 +413,7 @@ read_cap_file(capture_file *cf, int *err)
destroy_progress_dlg(progbar);
cf->state = FILE_READ_ABORTED; /* so that we're allowed to close it */
packet_list_thaw(); /* undo our freeze */
close_cap_file(cf);
cf_close(cf);
return (READ_ABORTED);
}
read_packet(cf, data_offset);
@ -500,12 +500,12 @@ read_cap_file(capture_file *cf, int *err)
#ifdef HAVE_LIBPCAP
int
start_tail_cap_file(char *fname, gboolean is_tempfile, capture_file *cf)
cf_start_tail(char *fname, gboolean is_tempfile, capture_file *cf)
{
int err;
int i;
err = open_cap_file(fname, is_tempfile, cf);
err = cf_open(fname, is_tempfile, cf);
if (err == 0) {
/* Disable menu items that make no sense if you're currently running
a capture. */
@ -531,7 +531,7 @@ start_tail_cap_file(char *fname, gboolean is_tempfile, capture_file *cf)
}
read_status_t
continue_tail_cap_file(capture_file *cf, int to_read, int *err)
cf_continue_tail(capture_file *cf, int to_read, int *err)
{
long data_offset = 0;
@ -561,7 +561,7 @@ continue_tail_cap_file(capture_file *cf, int to_read, int *err)
/* Well, the user decided to exit Ethereal. Return READ_ABORTED
so that our caller can kill off the capture child process;
this will cause an EOF on the pipe from the child, so
"finish_tail_cap_file()" will be called, and it will clean up
"cf_finish_tail()" will be called, and it will clean up
and exit. */
return READ_ABORTED;
} else if (*err != 0) {
@ -573,7 +573,7 @@ continue_tail_cap_file(capture_file *cf, int to_read, int *err)
}
read_status_t
finish_tail_cap_file(capture_file *cf, int *err)
cf_finish_tail(capture_file *cf, int *err)
{
long data_offset;
@ -595,7 +595,7 @@ finish_tail_cap_file(capture_file *cf, int *err)
it's probably exited), so we can just close the capture
file; we return READ_ABORTED so our caller can do whatever
is appropriate when that happens. */
close_cap_file(cf);
cf_close(cf);
return READ_ABORTED;
}
@ -2159,7 +2159,7 @@ thaw_plist(capture_file *cf)
* up a message box for the failure.
*/
gboolean
save_cap_file(char *fname, capture_file *cf, gboolean save_filtered,
cf_save(char *fname, capture_file *cf, gboolean save_filtered,
gboolean save_marked, guint save_format)
{
gchar *from_filename;
@ -2321,10 +2321,10 @@ save_cap_file(char *fname, capture_file *cf, gboolean save_filtered,
time if the file is large. */
cf->user_saved = TRUE;
if ((err = open_cap_file(fname, FALSE, cf)) == 0) {
if ((err = cf_open(fname, FALSE, cf)) == 0) {
/* XXX - report errors if this fails?
What should we return if it fails or is aborted? */
switch (read_cap_file(cf, &err)) {
switch (cf_read(cf, &err)) {
case READ_SUCCESS:
case READ_ERROR:
@ -2336,7 +2336,7 @@ save_cap_file(char *fname, capture_file *cf, gboolean save_filtered,
case READ_ABORTED:
/* The user bailed out of re-reading the capture file; the
capture file has been closed - just return (without
changing any menu settings; "close_cap_file()" set them
changing any menu settings; "cf_close()" set them
correctly for the "no capture file open" state). */
break;
}
@ -2558,65 +2558,64 @@ file_close_error_message(int err)
static gboolean
copy_binary_file(char *from_filename, char *to_filename)
{
int from_fd, to_fd, nread, nwritten, err;
guint8 pd[65536]; /* XXX - Hmm, 64K here, 64K in save_cap_file(),
perhaps we should make just one 64K buffer. */
int from_fd, to_fd, nread, nwritten, err;
guint8 pd[65536];
/* Copy the raw bytes of the file. */
from_fd = open(from_filename, O_RDONLY | O_BINARY);
if (from_fd < 0) {
err = errno;
simple_dialog(ESD_TYPE_CRIT, NULL,
file_open_error_message(err, TRUE, 0), from_filename);
goto done;
}
/* Copy the raw bytes of the file. */
from_fd = open(from_filename, O_RDONLY | O_BINARY);
if (from_fd < 0) {
err = errno;
simple_dialog(ESD_TYPE_CRIT, NULL,
file_open_error_message(err, TRUE, 0), from_filename);
goto done;
}
/* Use open() instead of creat() so that we can pass the O_BINARY
flag, which is relevant on Win32; it appears that "creat()"
may open the file in text mode, not binary mode, but we want
to copy the raw bytes of the file, so we need the output file
to be open in binary mode. */
to_fd = open(to_filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0644);
if (to_fd < 0) {
err = errno;
simple_dialog(ESD_TYPE_CRIT, NULL,
file_open_error_message(err, TRUE, 0), to_filename);
close(from_fd);
goto done;
}
/* Use open() instead of creat() so that we can pass the O_BINARY
flag, which is relevant on Win32; it appears that "creat()"
may open the file in text mode, not binary mode, but we want
to copy the raw bytes of the file, so we need the output file
to be open in binary mode. */
to_fd = open(to_filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0644);
if (to_fd < 0) {
err = errno;
simple_dialog(ESD_TYPE_CRIT, NULL,
file_open_error_message(err, TRUE, 0), to_filename);
close(from_fd);
goto done;
}
while ((nread = read(from_fd, pd, sizeof pd)) > 0) {
nwritten = write(to_fd, pd, nread);
if (nwritten < nread) {
if (nwritten < 0)
err = errno;
else
err = WTAP_ERR_SHORT_WRITE;
simple_dialog(ESD_TYPE_CRIT, NULL,
file_write_error_message(err), to_filename);
close(from_fd);
close(to_fd);
goto done;
}
}
if (nread < 0) {
err = errno;
simple_dialog(ESD_TYPE_CRIT, NULL,
file_read_error_message(err), from_filename);
close(from_fd);
close(to_fd);
goto done;
}
while ((nread = read(from_fd, pd, sizeof pd)) > 0) {
nwritten = write(to_fd, pd, nread);
if (nwritten < nread) {
if (nwritten < 0)
err = errno;
else
err = WTAP_ERR_SHORT_WRITE;
simple_dialog(ESD_TYPE_CRIT, NULL,
file_write_error_message(err), to_filename);
close(from_fd);
if (close(to_fd) < 0) {
err = errno;
simple_dialog(ESD_TYPE_CRIT, NULL,
file_close_error_message(err), to_filename);
goto done;
}
close(to_fd);
goto done;
}
}
if (nread < 0) {
err = errno;
simple_dialog(ESD_TYPE_CRIT, NULL,
file_read_error_message(err), from_filename);
close(from_fd);
close(to_fd);
goto done;
}
close(from_fd);
if (close(to_fd) < 0) {
err = errno;
simple_dialog(ESD_TYPE_CRIT, NULL,
file_close_error_message(err), to_filename);
goto done;
}
return TRUE;
return TRUE;
done:
return FALSE;
done:
return FALSE;
}

20
file.h
View File

@ -1,7 +1,7 @@
/* file.h
* Definitions for file structures and routines
*
* $Id: file.h,v 1.106 2003/09/15 22:16:08 guy Exp $
* $Id: file.h,v 1.107 2003/09/15 22:48:41 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -33,22 +33,22 @@
#include "cfile.h"
/* Return values from "read_cap_file()", "continue_tail_cap_file()",
and "finish_tail_cap_file()". */
/* Return values from "cf_read()", "cf_continue_tail()", and
"cf_finish_tail()". */
typedef enum {
READ_SUCCESS, /* read succeeded */
READ_ERROR, /* read got an error */
READ_ABORTED /* read aborted by user */
} read_status_t;
int open_cap_file(char *, gboolean, capture_file *);
void close_cap_file(capture_file *);
read_status_t read_cap_file(capture_file *, int *);
int start_tail_cap_file(char *, gboolean, capture_file *);
read_status_t continue_tail_cap_file(capture_file *, int, int *);
read_status_t finish_tail_cap_file(capture_file *, int *);
int cf_open(char *, gboolean, capture_file *);
void cf_close(capture_file *);
read_status_t cf_read(capture_file *, int *);
int cf_start_tail(char *, gboolean, capture_file *);
read_status_t cf_continue_tail(capture_file *, int, int *);
read_status_t cf_finish_tail(capture_file *, int *);
/* size_t read_frame_header(capture_file *); */
gboolean save_cap_file(char *, capture_file *, gboolean, gboolean, guint);
gboolean cf_save(char *, capture_file *, gboolean, gboolean, guint);
gchar *cf_get_display_name(capture_file *);
int filter_packets(capture_file *cf, gchar *dfilter);

View File

@ -1,7 +1,7 @@
/* file_dlg.c
* Dialog boxes for handling files
*
* $Id: file_dlg.c,v 1.58 2003/08/18 21:27:10 sahlberg Exp $
* $Id: file_dlg.c,v 1.59 2003/09/15 22:48:42 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -227,7 +227,7 @@ file_open_ok_cb(GtkWidget *w, GtkFileSelection *fs) {
}
/* Try to open the capture file. */
if ((err = open_cap_file(cf_name, FALSE, &cfile)) != 0) {
if ((err = cf_open(cf_name, FALSE, &cfile)) != 0) {
/* We couldn't open it; don't dismiss the open dialog box,
just leave it around so that the user can, after they
dismiss the alert box popped up for the open error,
@ -238,7 +238,7 @@ file_open_ok_cb(GtkWidget *w, GtkFileSelection *fs) {
return;
}
/* Attach the new read filter to "cf" ("open_cap_file()" succeeded, so
/* Attach the new read filter to "cf" ("cf_open()" succeeded, so
it closed the previous capture file, and thus destroyed any
previous read filter attached to "cf"). */
cfile.rfcode = rfcode;
@ -256,7 +256,7 @@ file_open_ok_cb(GtkWidget *w, GtkFileSelection *fs) {
gtk_widget_hide(GTK_WIDGET (fs));
gtk_widget_destroy(GTK_WIDGET (fs));
switch (read_cap_file(&cfile, &err)) {
switch (cf_read(&cfile, &err)) {
case READ_SUCCESS:
case READ_ERROR:
@ -294,7 +294,7 @@ file_open_destroy_cb(GtkWidget *win _U_, gpointer user_data _U_)
/* Close a file */
void
file_close_cmd_cb(GtkWidget *widget _U_, gpointer data _U_) {
close_cap_file(&cfile);
cf_close(&cfile);
}
void
@ -591,7 +591,7 @@ file_save_as_ok_cb(GtkWidget *w _U_, GtkFileSelection *fs) {
/* Write out the packets (all, or only the ones that are currently
displayed or marked) to the file with the specified name. */
if (! save_cap_file(cf_name, &cfile, filtered, marked, filetype)) {
if (! cf_save(cf_name, &cfile, filtered, marked, filetype)) {
/* The write failed; don't dismiss the open dialog box,
just leave it around so that the user can, after they
dismiss the alert box popped up for the error, try again. */
@ -628,21 +628,21 @@ file_reload_cmd_cb(GtkWidget *w, gpointer data _U_) {
g_free(cfile.dfilter);
cfile.dfilter = g_strdup(gtk_entry_get_text(GTK_ENTRY(filter_te)));
/* If the file could be opened, "open_cap_file()" calls "close_cap_file()"
/* If the file could be opened, "cf_open()" calls "cf_close()"
to get rid of state for the old capture file before filling in state
for the new capture file. "close_cap_file()" will remove the file if
for the new capture file. "cf_close()" will remove the file if
it's a temporary file; we don't want that to happen (for one thing,
it'd prevent subsequent reopens from working). Remember whether it's
a temporary file, mark it as not being a temporary file, and then
reopen it as the type of file it was.
Also, "close_cap_file()" will free "cfile.filename", so we must make
Also, "cf_close()" will free "cfile.filename", so we must make
a copy of it first. */
filename = g_strdup(cfile.filename);
is_tempfile = cfile.is_tempfile;
cfile.is_tempfile = FALSE;
if (open_cap_file(filename, is_tempfile, &cfile) == 0) {
switch (read_cap_file(&cfile, &err)) {
if (cf_open(filename, is_tempfile, &cfile) == 0) {
switch (cf_read(&cfile, &err)) {
case READ_SUCCESS:
case READ_ERROR:
@ -664,11 +664,11 @@ file_reload_cmd_cb(GtkWidget *w, gpointer data _U_) {
Instead, the file was left open, so we should restore "cfile.is_tempfile"
ourselves.
XXX - change the menu? Presumably "open_cap_file()" will do that;
XXX - change the menu? Presumably "cf_open()" will do that;
make sure it does! */
cfile.is_tempfile = is_tempfile;
}
/* "open_cap_file()" made a copy of the file name we handed it, so
/* "cf_open()" made a copy of the file name we handed it, so
we should free up our copy. */
g_free(filename);
}

View File

@ -1,6 +1,6 @@
/* main.c
*
* $Id: main.c,v 1.312 2003/09/15 20:45:19 guy Exp $
* $Id: main.c,v 1.313 2003/09/15 22:48:42 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -1193,7 +1193,7 @@ do_quit(void)
/* Close any capture file we have open; on some OSes, you
can't unlink a temporary capture file if you have it
open.
"close_cap_file()" will unlink it after closing it if
"cf_close()" will unlink it after closing it if
it's a temporary file.
We do this here, rather than after the main loop returns,
@ -1201,7 +1201,7 @@ do_quit(void)
been destroyed (if this is called due to a "destroy"
even on the main window rather than due to the user
selecting a menu item), and there may be a crash
or other problem when "close_cap_file()" tries to
or other problem when "cf_close()" tries to
clean up stuff in the main window.
XXX - is there a better place to put this?
@ -1210,7 +1210,7 @@ do_quit(void)
which we'd call here, and another routine that
calls that routine and also cleans up the UI, which
we'd call elsewhere? */
close_cap_file(&cfile);
cf_close(&cfile);
/* Exit by leaving the main loop, so that any quit functions
we registered get called. */
@ -2276,12 +2276,12 @@ main(int argc, char *argv[])
}
}
if (!rfilter_parse_failed) {
if ((err = open_cap_file(cf_name, FALSE, &cfile)) == 0) {
/* "open_cap_file()" succeeded, so it closed the previous
if ((err = cf_open(cf_name, FALSE, &cfile)) == 0) {
/* "cf_open()" succeeded, so it closed the previous
capture file, and thus destroyed any previous read filter
attached to "cf". */
cfile.rfcode = rfcode;
switch (read_cap_file(&cfile, &err)) {
switch (cf_read(&cfile, &err)) {
case READ_SUCCESS:
case READ_ERROR:

View File

@ -1,6 +1,6 @@
/* tethereal.c
*
* $Id: tethereal.c,v 1.196 2003/09/10 22:23:58 guy Exp $
* $Id: tethereal.c,v 1.197 2003/09/15 22:48:41 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -1344,7 +1344,7 @@ main(int argc, char *argv[])
}
cfile.rfcode = rfcode;
if (cf_name) {
err = open_cap_file(cf_name, FALSE, &cfile);
err = cf_open(cf_name, FALSE, &cfile);
if (err != 0) {
epan_cleanup();
exit(2);
@ -2664,7 +2664,7 @@ file_open_error_message(int err, gboolean for_writing, int file_type)
}
int
open_cap_file(char *fname, gboolean is_tempfile, capture_file *cf)
cf_open(char *fname, gboolean is_tempfile, capture_file *cf)
{
wtap *wth;
int err;