From dd264ba190d731a551a64dd9ce2e1dbd8b83852f Mon Sep 17 00:00:00 2001 From: Guy Harris Date: Wed, 25 Feb 2004 05:52:37 +0000 Subject: Only handle as a suffix stuff following a "." in the last component of a pathname. svn path=/trunk/; revision=10233 --- ringbuffer.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'ringbuffer.c') diff --git a/ringbuffer.c b/ringbuffer.c index 2584dde4b4..453697e6d0 100644 --- a/ringbuffer.c +++ b/ringbuffer.c @@ -1,7 +1,7 @@ /* ringbuffer.c * Routines for packet capture windows * - * $Id: ringbuffer.c,v 1.8 2004/02/25 05:21:08 guy Exp $ + * $Id: ringbuffer.c,v 1.9 2004/02/25 05:52:37 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs @@ -151,7 +151,7 @@ int ringbuf_init(const char *capfile_name, guint num_files) { unsigned int i; - char *pfx; + char *pfx, *last_pathsep; gchar *save_file; rb_data.files = NULL; @@ -179,13 +179,26 @@ ringbuf_init(const char *capfile_name, guint num_files) /* set file name prefix/suffix */ save_file = g_strdup(capfile_name); + last_pathsep = strrchr(save_file, G_DIR_SEPARATOR); pfx = strrchr(save_file,'.'); - if (pfx != NULL) { + if (pfx != NULL && (last_pathsep == NULL || pfx > last_pathsep)) { + /* The pathname has a "." in it, and it's in the last component + of the pathname (because there is either only one component, + i.e. last_pathsep is null as there are no path separators, + or the "." is after the path separator before the last + component. + + Treat it as a separator between the rest of the file name and + the file name suffix, and arrange that the names given to the + ring buffer files have the specified suffix, i.e. put the + changing part of the name *before* the suffix. */ pfx[0] = '\0'; rb_data.fprefix = g_strdup(save_file); pfx[0] = '.'; /* restore capfile_name */ rb_data.fsuffix = g_strdup(pfx); } else { + /* Either there's no "." in the pathname, or it's in a directory + component, so the last component has no suffix. */ rb_data.fprefix = g_strdup(save_file); rb_data.fsuffix = NULL; } -- cgit v1.2.3