changeset 543:b68fd1eb3243

remove_level_from_path() was simplified.
author zas_
date Fri, 02 May 2008 20:27:47 +0000
parents bdd86d86c8d3
children 8de7cdde59dd
files src/ui_fileops.c
diffstat 1 files changed, 10 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/ui_fileops.c	Fri May 02 09:03:52 2008 +0000
+++ b/src/ui_fileops.c	Fri May 02 20:27:47 2008 +0000
@@ -29,6 +29,7 @@
 #include "main.h"
 #include "ui_fileops.h"
 
+#include "debug.h"
 #include "ui_utildlg.h"	/* for locale warning dialog */
 
 /*
@@ -719,18 +720,18 @@
 
 gchar *remove_level_from_path(const gchar *path)
 {
-	gchar *new_path;
-	const gchar *ptr = path;
-	gint p;
+	gint p = 0, n = -1;
 
 	if (!path) return NULL;
 
-	p = strlen(path) - 1;
-	if (p < 0) return NULL;
-	while (ptr[p] != '/' && p > 0) p--;
-	if (p == 0 && ptr[p] == '/') p++;
-	new_path = g_strndup(path, (guint)p);
-	return new_path;
+	while (path[p])
+		{
+		if (path[p] == '/') n = p;
+		p++;
+		}
+	if (n <= 0) n++;
+
+	return g_strndup(path, (gsize) n);
 }
 
 gchar *concat_dir_and_file(const gchar *base, const gchar *name)