[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Lost] [Patch] Hardlinks für LostIO



Toni Kaufmann schrieb:

+ * @return 0 bei Erfolg, im Fehlerfall:
+ *      -1: Ziel nicht vorhanden
+ */

Da fehlen noch ein paar Rückgabewerte mehr. #defines statt magischen Zahlen wären übrigens vermutlich auch nicht ganz verkehrt dafür.

+int io_create_link(const char* target_path, const char* link_path,
+    bool hardlink)
+{
+    int result;
+    // Jetzt wird er absolute Pfad zum Link ermittelt. Das ist hier notwendig,
+    // damit ein io_split_dirname danach sicher funktioniert
+    char* link_full_path = io_get_absolute_path(link_path);

Inwiefern kann io_split_dirname() sonst schiefgehen? Und wenn dem so ist, ist das ein Problem in io_split_dirname(), das nicht durch einen Workaround an dieser Stelle "gelöst" werden sollte.

+int io_remove_link(const char* link_path)
+{

+    // Verzeichnis oeffnen, in dem der Link angelegt werden soll
+    FILE* link_dir = fopen(link_dirname, "rd");

Nein, der Link soll gerade nicht angelegt werden. ;-)

Beim Öffnen mit "rd" hätte ich übrigens auch erwartet, daß es in den Tests schiefgeht. Da hast du also wohl auch noch einen Fehler im Server.

+    // Geoffnetes Link-Ziel und Link-Verzeichnis schliessen
+    fclose(link_dir);

Kommentar <-> Code?

+        // Pruefen, ob der Pfad wirklich Nullterminiert ist
+        if (strnlen(link_request->name, link_request->name_len + 1) !=
+            link_request->name_len)

Kommt es mir nur so vor oder ignorierst du data_size systematisch und absichtlich? Irgendwie habe ich kaum Code von dir in Erinnerung, der das berücksichtigt, aber dafür ein paar Stellen, an denen ich das gefixt habe...

Beim nächsten Versuch kannst du dann auch noch die lostio.h dazupacken, die fehlt hier (wenn ich sie nicht übersehen habe) und müßte das geänderte typehandle-struct enthalten.