Universität Ulm - Abteilung Angewandte Informationsverarbeitung
11.Übungsblatt (23.01.01 bis 30.01.01)
zur Vorlesung Allgemeine Informatik III (WS 00/01)



mal was kurzes wieder ...

Erweitern Sie das Programm copy.c aus der Vorlesung, das eine Quelldatei in eine Zieldatei 1:1 kopiert.
 

Aufgabe 1 (10 Punkte)

Falls die Zieldatei bereits existiert, soll beim Benutzer nachgefragt werden, ob sie überschrieben werden soll oder nicht. Falls beim Aufruf die Flagge -f angegeben ist und die Datei existiert, wird ohne Nachfragen überschrieben:

thales$ ls -l kopie copy
-rwxrwxr-x   1 grabert  sai         8156 Jan 22 19:02 copy
-rw-rw-r--   1 grabert  sai            0 Jan 22 19:08 kopie
thales$ copy copy kopie
Zieldatei 'kopie' existiert bereits. Ueberschreiben j/n j
thales$ copy -f copy kopie
thales$
 

Aufgabe 2 (10 Punkte)

Ändern Sie das Programm so, dass die Zieldatei immer die identischen Dateirechte besitzt, wie die Quelle:

thales$ ls -l kopie copy
-rwxrwxr-x   1 grabert  sai         8156 Jan 22 19:02 copy
-rw-rw-r--   1 grabert  sai            0 Jan 22 19:08 kopie
thales$ copy -f copy kopie
thales$ ls -l kopie
-rwxrwxr-x   1 grabert  sai         8156 Jan 22 19:10 kopie
 

Dazu brauchen Sie möglicherweise zwei weitere C-Funktionen:

- int umask(int cmask) setzt die Umask für zu erzeugende Dateien neu -- und zwar auf den via cmask angegebenen Wert
- int unlink(char *path) löscht die durch path angegebene Datei (so wie "rm" auf der Shell)