Reguläre und nicht-Reguläre Dateien
-
Hiho,
habe folgendes Problem. Ich schreibe an einem Kopierkommando für Dateien unter Unix. Das Kommando wird bspw. mit copy ein.txt aus.txt aufgerufen. Sobald die Ausgabedatei nicht-Regulär ist, darf diese nicht überschrieben werden. Falls die Ausgabedatei regulär ist, so kann sie überschrieben werden. Wenn die Ausgabedatei nicht existiert (d.h. also auch nicht-Regulär ist), sollte sie eigentlich neu angelegt werden, stattdessen bekomme ich die Fehlermeldung, dass es sich um eine nicht-Reguläre Datei handelt, was ja an sich auch logisch ist, aber eben nicht gewollt. Gibt es da einen Weg diese beiden Fälle zu unterscheiden? Hier mal ein Auszug aus meinem Programm:
if ((statein = stat(arg[0], &file1)) < 0) { error = 1; rc = 3; } else { stataus = stat(arg[1], &file2); if (stataus != -1) ausexist = 1; } if (((file1.st_mode & S_IFMT) == S_IFREG) && ((file2.st_mode & S_IFMT) == S_IFREG)) { einreg = 1; ausreg = 1; } else if (((file1.st_mode & S_IFMT) == S_IFREG) && ((file2.st_mode & S_IFMT) != S_IFREG)) { einreg = 1; ausreg = 0; } if ((einreg == 1) && (ausreg == 1) && ((file1.st_ino == file2.st_ino) && (file1.st_dev == file2.st_dev))) { /*Ein und Aus identisch*/ error = 1; rc = 4; } else if ((einreg == 1) && (ausreg == 1)) { if((eingabe = open(arg[0], O_RDONLY)) < 0) { error = 1; rc = 1; } else { if ((ausgabe = open(arg[1], O_WRONLY | O_CREAT, 0755)) < 0) { error = 1; rc = 2; } } } else if (einreg == 1 && ausreg == 0) { /*Keine regulaere Zieldatei*/ printf("Keine regulaere Zieldatei\n"); error = 1; }
-
schöne grüße an hartmann
schau mal unter ist-info.de, da findest eher infos