aboutsummaryrefslogtreecommitdiffstats
path: root/ringbuffer.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2004-02-25 05:52:37 +0000
committerGuy Harris <guy@alum.mit.edu>2004-02-25 05:52:37 +0000
commitdd264ba190d731a551a64dd9ce2e1dbd8b83852f (patch)
tree74c18472dfc21acb5bb32c288c0d8c067847a7f6 /ringbuffer.c
parent983e4f9de31643e3d6b7829b26e8c69c68ec7dc2 (diff)
Only handle as a suffix stuff following a "." in the last component of a
pathname. svn path=/trunk/; revision=10233
Diffstat (limited to 'ringbuffer.c')
-rw-r--r--ringbuffer.c19
1 files changed, 16 insertions, 3 deletions
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 <gerald@ethereal.com>
@@ -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;
}