[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Lost] [Patch] [2/3] io_split_filename()
Dieser Patch fügt eine io_split_filename()-Funktion hinzu, die aus einem
Pfad den Dateinamen heraussplittet und im
io.h-Header landet.
Index: lib/lost_path.c
===================================================================
--- lib/lost_path.c (Revision 608)
+++ lib/lost_path.c (Arbeitskopie)
@@ -459,3 +459,41 @@
return new_path;
}
+/**
+ * Trennt aus einem Pfad den Dateinamen (d.h. das letzte Pfadelement) heraus.
+ * Es wird keine �berprüfung vorgenommen, ob die Datei existiert.
+ *
+ * @param path Zu splittender Pfad
+ * @return Name der durch den Pfad angesprochenen Datei
+ */
+char* io_split_filename(const char* path)
+{
+ struct path_element* element;
+
+ // Liste fuer die Elemente des Pfades erstellen
+ list_t* element_stack = list_create();
+ get_path_elements(path, element_stack, 0);
+
+ // Das letzte Element des Pfads (erstes in der Liste) herausgreifen
+ element = list_get_element_at(element_stack, 0);
+ if (element != NULL) {
+ char* result;
+ size_t length;
+
+ // Den Ergebnisstring anlegen
+ length = strnlen(element->text, MAX_FILENAME_LEN);
+ if ((result = malloc(length + 1))) {
+ strncpy(result, element->text, length);
+ result[length] = '\0';
+ }
+
+ // Freigeben der Liste
+ while ((element = list_pop(element_stack))) {
+ free(element);
+ }
+
+ return result;
+ } else {
+ return NULL;
+ }
+}
Index: include/io.h
===================================================================
--- include/io.h (Revision 608)
+++ include/io.h (Arbeitskopie)
@@ -125,5 +125,6 @@
#endif
char* io_get_absolute_path(const char* path);
+char* io_split_filename(const char* path);
#endif //ifndef _IO_H_