[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Lost] [Patch] [2/3] io_split_filename()
Toni Kaufmann schrieb:
Ich würde mal sagen, ein paar list_destroy() wären nicht zuviel
verlangt. ;-)
Ach, das wird überbewertet. ;-) Neuer Versuch.
Index: lib/lost_path.c
===================================================================
--- lib/lost_path.c (Revision 608)
+++ lib/lost_path.c (Arbeitskopie)
@@ -459,3 +459,43 @@
return new_path;
}
+/**
+ * Trennt aus einem Pfad den Dateinamen (d.h. das letzte Pfadelement) heraus.
+ * Es wird keine Ueberpruefung 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);
+ }
+ list_destroy(element_stack);
+
+ return result;
+ } else {
+ list_destroy(element_stack);
+ 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_