summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xamiga/misc.c15
-rw-r--r--beos/beos_gui.cpp19
-rw-r--r--desktop/save_complete.c16
-rw-r--r--framebuffer/misc.c19
-rw-r--r--gtk/gtk_gui.c19
-rw-r--r--riscos/gui.c19
-rw-r--r--utils/utils.h1
-rw-r--r--windows/misc.c19
8 files changed, 118 insertions, 9 deletions
diff --git a/amiga/misc.c b/amiga/misc.c
index 17ea4c22b..8b148d852 100755
--- a/amiga/misc.c
+++ b/amiga/misc.c
@@ -107,6 +107,21 @@ char *filename_from_path(char *path)
}
/**
+ * Add a path component/filename to an existing path
+ *
+ * \param path buffer containing path + free space
+ * \param length length of buffer "path"
+ * \param newpart string containing path component to add to path
+ * \return true on success
+ */
+
+bool path_add_part(char *path, int length, char *newpart)
+{
+ if(AddPart(path, newpart, length)) return true;
+ else return false;
+}
+
+/**
* returns a string without escape chars or |M chars.
* (based on remove_underscores from utils.c)
* \param translate true to insert a linebreak where there was |M,
diff --git a/beos/beos_gui.cpp b/beos/beos_gui.cpp
index 83af4b682..460ae1a87 100644
--- a/beos/beos_gui.cpp
+++ b/beos/beos_gui.cpp
@@ -1197,3 +1197,22 @@ char *filename_from_path(char *path)
return strdup(leafname);
}
+
+/**
+ * Add a path component/filename to an existing path
+ *
+ * \param path buffer containing path + free space
+ * \param length length of buffer "path"
+ * \param newpart string containing path component to add to path
+ * \return true on success
+ */
+
+bool path_add_part(char *path, int length, char *newpart)
+{
+ if(path[strlen(path)] != '/')
+ strncat(path, "/", length);
+
+ strncat(path, newpart, length);
+
+ return true;
+}
diff --git a/desktop/save_complete.c b/desktop/save_complete.c
index 88fe31560..19c1696d6 100644
--- a/desktop/save_complete.c
+++ b/desktop/save_complete.c
@@ -759,21 +759,19 @@ void save_complete_list_dump(void)
bool save_complete_inventory(const char *path,
struct save_complete_entry *list)
{
- char urlpath[256];
+ char fullpath[256];
FILE *fp;
- char *pathstring, *standardpath = (path[0] == '/') ?
- (char *)(path + 1) : (char *)path;
struct save_complete_entry *entry;
+ bool error;
- snprintf(urlpath, sizeof urlpath, "file:///%s/Inventory",
- standardpath);
- pathstring = url_to_path(urlpath);
- if (pathstring == NULL) {
+ strncpy(fullpath, path, sizeof fullpath);
+ error = path_add_part(fullpath, sizeof fullpath, path);
+
+ if (error == false) {
warn_user("NoMemory", 0);
return false;
}
- fp = fopen(pathstring, "w");
- free(pathstring);
+ fp = fopen(fullpath, "w");
if (!fp) {
LOG(("fopen(): errno = %i", errno));
warn_user("SaveError", strerror(errno));
diff --git a/framebuffer/misc.c b/framebuffer/misc.c
index 5e351f517..143ea8cf9 100644
--- a/framebuffer/misc.c
+++ b/framebuffer/misc.c
@@ -59,3 +59,22 @@ char *filename_from_path(char *path)
return strdup(leafname);
}
+
+/**
+ * Add a path component/filename to an existing path
+ *
+ * \param path buffer containing path + free space
+ * \param length length of buffer "path"
+ * \param newpart string containing path component to add to path
+ * \return true on success
+ */
+
+bool path_add_part(char *path, int length, char *newpart)
+{
+ if(path[strlen(path)] != '/')
+ strncat(path, "/", length);
+
+ strncat(path, newpart, length);
+
+ return true;
+}
diff --git a/gtk/gtk_gui.c b/gtk/gtk_gui.c
index 79391ab4f..2470f30b5 100644
--- a/gtk/gtk_gui.c
+++ b/gtk/gtk_gui.c
@@ -978,3 +978,22 @@ char *filename_from_path(char *path)
return strdup(leafname);
}
+
+/**
+ * Add a path component/filename to an existing path
+ *
+ * \param path buffer containing path + free space
+ * \param length length of buffer "path"
+ * \param newpart string containing path component to add to path
+ * \return true on success
+ */
+
+bool path_add_part(char *path, int length, char *newpart)
+{
+ if(path[strlen(path)] != '/')
+ strncat(path, "/", length);
+
+ strncat(path, newpart, length);
+
+ return true;
+}
diff --git a/riscos/gui.c b/riscos/gui.c
index eaba7bf58..0c04d69a5 100644
--- a/riscos/gui.c
+++ b/riscos/gui.c
@@ -2478,3 +2478,22 @@ char *filename_from_path(char *path)
return leafname;
}
+
+/**
+ * Add a path component/filename to an existing path
+ *
+ * \param path buffer containing path + free space
+ * \param length length of buffer "path"
+ * \param newpart string containing path component to add to path
+ * \return true on success
+ */
+
+bool path_add_part(char *path, int length, char *newpart)
+{
+ if(path[strlen(path)] != '.')
+ strncat(path, ".", length);
+
+ strncat(path, newpart, length);
+
+ return true;
+}
diff --git a/utils/utils.h b/utils/utils.h
index 5b06d9caa..b8edfb836 100644
--- a/utils/utils.h
+++ b/utils/utils.h
@@ -121,4 +121,5 @@ query_id query_user(const char *query, const char *detail,
void query_close(query_id);
void PDF_Password(char **owner_pass, char **user_pass, char *path);
char *filename_from_path(char *path);
+bool path_add_part(char *path, int length, char *newpart);
#endif
diff --git a/windows/misc.c b/windows/misc.c
index 7a6fc3206..bb1ca3f38 100644
--- a/windows/misc.c
+++ b/windows/misc.c
@@ -65,3 +65,22 @@ char *filename_from_path(char *path)
return strdup(leafname);
}
+
+/**
+ * Add a path component/filename to an existing path
+ *
+ * \param path buffer containing path + free space
+ * \param length length of buffer "path"
+ * \param newpart string containing path component to add to path
+ * \return true on success
+ */
+
+bool path_add_part(char *path, int length, char *newpart)
+{
+ if(path[strlen(path)] != '\\')
+ strncat(path, "\\", length);
+
+ strncat(path, newpart, length);
+
+ return true;
+}