--- /dev/null
+.\" Translated March 2001 by Michael Piefel <piefel@informatik.hu-berlin.de>
+.TH DIFF 1 "22. Sep 1993" "GNU-Werkzeuge"
+.SH "NAME"
+diff \- finde Unterschiede zwischen zwei Dateien
+.SH "ÜBERSICHT"
+.B diff
+\fI[option]...\fR \fIVon-Datei\fR \fINach-Datei\fR
+.SH "BESCHREIBUNG"
+Im einfachsten Fall vergleicht
+.B diff
+den Inhalt zweier Dateien,
+.I Von-Datei
+und
+.IR Nach-Datei .
+Ein Dateiname
+.B \-
+steht für von der Standardeingabe gelesenen Text. Als Spezialfall vergleicht
+.B "diff \- \-"
+eine Kopie der Standardeingabe mit sich selbst.
+
+Wenn
+.I Von-Datei
+ein Verzeichnis ist und
+.I Nach-Datei
+nicht, dann vergleicht
+.B diff
+die Datei in
+.IR Von-Datei ,
+deren Dateiname der von
+.I Nach-Datei
+ist und umgekehrt.
+Die Nicht-Verzeichnis-Datei darf nicht
+.B \-
+sein.
+
+Sind sowohl
+.I Von-Datei
+als auch
+.I Nach-Datei
+Verzeichnisse, dann vergleicht
+.B diff
+korrespondierende Dateien in beiden Verzeichnissen in alphabetischer Ordnung;
+dieser Vergleich ist nicht rekursiv, wenn nicht die Option
+.B \-r
+oder
+.B \-\-recursive
+gegeben ist.
+.B diff
+vergleicht nie den tatsächlichen Inhalt eines Verzeichnisses, als wäre es eine
+eine Datei. Die Datei die voll spezifiziert ist, darf nicht die Standardeingabe
+sein, da diese namenlos ist und damit keine Datei gleichen Namens gefunden
+werden kann.
+
+.BR diff -Optionen
+beginnen mit
+.BR \- ,
+also dürfen normalerweise
+.I Von-Datei
+und
+.I Nach-Datei
+nicht mit
+.B \-
+beginnen. Ein Argument
+.B \-\-
+jedoch behandelt alle folgenden Argumente als Dateinamen, selbst wenn sie mit
+.B \-
+beginnen.
+.SS "Optionen"
+Unten findet man eine Zusammenfassung aller Optionen, die GNU
+.B diff
+akzeptiert.
+Die meisten Optionen haben zwei äquivalente Namen, wobei eine ein einzelner
+Buchstabe eingeleitet mit
+.B \-
+ist, und die andere ein langer Namen eingeleitet mit
+.BR \-\- .
+Mehrere Einzelbuchstaben-Optionen können, wenn sie kein Argument nehmen, zu
+einem einzigen Kommandozeilenwort kombiniert werden:
+.B \-ac
+ist äquivalent zu
+.BR "\-a \-c" .
+Lange Optionsnamen können zu jedem eindeutigen Präfix ihres Namens abgekürzt
+werden. Eckige Klammern bedeuten, dass eine Option eine optionales Argument
+nehmen kann.
+.TP
+.BI \- zeilen
+Zeige
+.I zeilen
+(eine ganzen Zahl) Zeilen Kontext an. Diese Option legt selbst kein
+Ausgabeformat fest; sie hat keinen Effekt, wenn die nicht zusammen mit
+.B \-c
+oderr
+.B \-u
+benutzt wird.
+Diese Option ist veraltet. Um ordentlich zu funktionieren, braucht
+.I patch
+typischerweise mindestens zwei Zeilen Kontext.
+.TP
+.B \-a
+Behandle alle Dateien als Text und vergleiche sie zeilenweise, auch wenn sie
+nicht Text zu sein scheinen.
+.TP
+.B \-b
+Ignoriere Änderungen in der Menge von Whitespace (Leerzeichen und Tabulatoren).
+.TP
+.B \-B
+Ignoriere Änderungen, die nur leere Zeilen einfügen oder löschen.
+.TP
+.B \-\-brief
+Melde nur, ob die Dateien sich unterscheiden, nicht die Details der
+Unterschiede.
+.TP
+.B \-c
+Benutze das Kontext-Ausgabeformat.
+.TP
+.BI "\-C " zeilen
+.br
+.ns
+.TP
+.BI \-\-context[= zeilen ]
+Benutze das Kontext-Ausgabeformat, zeige
+.I zeilen
+(eine ganzen Zahl) Zeilen Kontext an, oder drei, wenn
+.I zeilen
+nicht gegeben ist.
+Um ordentlich zu funktionieren, braucht
+.I patch
+typischerweise mindestens zwei Zeilen Kontext.
+.TP
+.BI \-\-changed\-group\-format= format
+Nutze
+.IR format ,
+um eine Zeilengruppe, die sich unterscheidende Zeilen aus beiden Dateien
+enthält, im If-then-else-Format anzuzeigen.
+.TP
+.B \-d
+Ändere den Algorithmus, um vielleicht einen kleineren Satz von Änderungen zu
+finden. Das macht
+.B diff
+langsamer (manchmal viel langsamer).
+.TP
+.BI "\-D " name
+Erzeuge Ausgabe im zusammengeführten If-then-else-Format, abhängig vom
+Präprozessormakro
+.IR name .
+.TP
+.B \-e
+.br
+.ns
+.TP
+.B \-\-ed
+Erzeuge Ausgabe, die ein gültiges
+.BR ed -Skript
+ist.
+.TP
+.BI \-\-exclude= muster
+Beim Vergleich von Verzeichnissen: Ignoriere Dateien und Unterverzeichnisse,
+deren Basisnamen auf das
+.I muster
+passen.
+.TP
+.BI \-\-exclude\-from= datei
+Beim Vergleich von Verzeichnissen: Ignoriere Dateien und Unterverzeichnisse,
+deren Basisnamen auf irgendein Muster in
+.I datei
+passen.
+.TP
+.B \-\-expand\-tabs
+Expandiere Tabulatoren in der Ausgabe, um die Ausrichtung der Tabulatoren in den
+Eingabedateien zu erhalten.
+.TP
+.B \-f
+Erzeuge Ausgabe, die vage an ein
+.BR ed -Skript
+erinnert, aber Änderungen in der Reihenfolge hat, in der sie in der Datei
+auftreten.
+.TP
+.BI "\-F " regaus
+Im Kontext- und vereinten Format: Zeige für jeden Batzen von Unterschieden
+etwas aus der letzten vorangehenden Zeile, auf das der reguläre Ausdruck
+.I regaus
+passt.
+.TP
+.B \-\-forward\-ed
+Erzeuge Ausgabe, die vage an ein
+.BR ed -Skript
+erinnert, aber Änderungen in der Reihenfolge hat, in der sie in der Datei
+auftreten.
+.TP
+.B \-h
+Diese Option hat momentan keine Wirkung; sie ist nur für Kompatibilität zu Unix
+vorhanden.
+.TP
+.B \-H
+Benutze Heuristiken, um die Behandlung großer Dateien, die viele verstreute
+kleine Änderungen haben, zu beschleunigen.
+.TP
+.BI \-\-horizon\-lines= zeilen
+Wirf die letzten
+.I zeilen
+Zeilen des gemeinsamen Präfix
+und ersten
+.I zeilen
+Zeilen des gemeinsamen Suffix
+nicht weg
+.TP
+.B \-i
+Ignoriere Änderungen in Groß-/Kleinschreibung.
+.TP
+.BI "\-I " regaus
+Ignoriere Änderungen, die nur Zeilen einfügen oder löschen, die
+.I regaus
+entsprechen.
+.TP
+.BI \-\-ifdef= name
+Erzeuge Ausgabe im zusammengeführten If-then-else-Format, abhängig vom
+Präprozessormakro
+.IR name .
+.TP
+.B \-\-ignore\-all\-space
+Ignoriere Whitespace (Leerzeichen und Tabulatoren) beim Vergleich von Zeilen.
+.TP
+.B \-\-ignore\-blank\-lines
+Ignoriere Änderungen, die nur leere Zeilen einfügen oder löschen.
+.TP
+.B \-\-ignore\-case
+Ignoriere Änderungen in Groß-/Kleinschreibung.
+.TP
+.BI \-\-ignore\-matching\-lines= regaus
+Ignoriere Änderungen, die nur Zeilen einfügen oder löschen, die
+.I regaus
+entsprechen.
+.TP
+.B \-\-ignore\-space\-change
+Ignoriere Änderungen in der Menge von Whitespace (Leerzeichen und Tabulatoren).
+.TP
+.B \-\-initial\-tab
+Gib einen Tabulatoren an Stelle eines Leerzeichens vor dem Text einer Zeile aus
+im Normal- oder Kontext-Format. Das führt dazu, das die Ausrichtung von
+Tabulatoren in der Zeile normal aussieht.
+.TP
+.B \-l
+Leite die Ausgabe durch
+.BR pr ,
+um sie zu paginieren.
+.TP
+.BI "\-L " marke
+.br
+.ns
+.TP
+.BI \-\-label= marke
+Benutze
+.I marke
+an Stelle des Dateinamen im Kopf von Kontext- und vereintem Format.
+.TP
+.B \-\-left\-column
+Drucke nur die linke Spalte von zwei gemeinsamen Zeilen im
+Seite-an-Seite-Format.
+.TP
+.BI \-\-line\-format= format
+Nutze
+.IR format ,
+um alle Eingabezeilen im If-then-else-Format anzuzeigen.
+.TP
+.B \-\-minimal
+Ändere den Algorithmus, um vielleicht einen kleineren Satz von Änderungen zu
+finden. Das macht
+.B diff
+langsamer (manchmal viel langsamer).
+.TP
+.B \-n
+Gib Unterschiede im RCS-Format aus; wie
+.BR \-f ,
+nur das jedes Kommando die Zahl der betroffenen Zeilen angibt.
+.TP
+.B \-N
+.br
+.ns
+.TP
+.B \-\-new\-file
+Beim Vergleich von Verzeichnissen: Wenn eine Datei nur in einem Verzeichnis
+gefunden wird, behandle sie als vorhanden aber leer im anderem Verzeichnis.
+.TP
+.BI \-\-new\-group\-format= format
+Nutze
+.IR format ,
+um eine Gruppe von Zeilen aus der zweiten Datei im If-then-else-Format
+auszugeben.
+.TP
+.BI \-\-new\-line\-format= format
+Nutze
+.IR format ,
+um eine Zeile aus der zweiten Datei im If-then-else-Format
+auszugeben.
+.TP
+.BI \-\-old\-group\-format= format
+Nutze
+.IR format ,
+um eine Gruppe von Zeilen aus der ersten Datei im If-then-else-Format
+auszugeben.
+.TP
+.BI \-\-old\-line\-format= format
+Nutze
+.IR format ,
+um eine Zeile aus der ersten Datei im If-then-else-Format
+auszugeben.
+.TP
+.B \-p
+Zeige für jede Änderung, in welcher C-Funktion sie ist.
+.TP
+.B \-P
+Beim Vergleich von Verzeichnissen: Wenn eine Datei nur im zweiten der beiden
+Verzeichnisse gefunden wird, behandle sie als vorhanden aber leer im anderem
+Verzeichnis.
+.TP
+.B \-\-paginate
+Leite die Ausgabe durch
+.BR pr ,
+um sie zu paginieren.
+.TP
+.B \-q
+Melde nur, ob die Dateien sich unterscheiden, nicht die Details der
+Unterschiede.
+.TP
+.B \-r
+Beim Vergleich von Verzeichnissen: Vergleiche jegliche Unterverzeichnisse
+rekursiv.
+.TP
+.B \-\-rcs
+Gib Unterschiede im RCS-Format aus; wie
+.BR \-f ,
+nur das jedes Kommando die Zahl der betroffenen Zeilen angibt.
+.TP
+.B \-\-recursive
+Beim Vergleich von Verzeichnissen: Vergleiche jegliche Unterverzeichnisse
+rekursiv.
+.TP
+.B \-\-report\-identical\-files
+.br
+.ns
+.TP
+.B \-s
+Melde, wenn zwei Dateien gleich sind.
+.TP
+.BI "\-S " datei
+Beim Vergleich von Verzeichnissen: Beginne mit Datei
+.IR datei .
+Dies wird benutzt, um einen abgebrochenen Vergleich fortzusetzen.
+.TP
+.B \-\-sdiff\-merge\-assist
+Gib zusätzliche Informationen aus, um
+.B sdiff
+zu helfen.
+.B sdiff
+benutzt diese, wenn es
+.B diff aufruft.
+Diese Option ist nicht dazu bestimmt, von Nutzern
+direkt aufgerufen zu werden.
+.TP
+.B \-\-show\-c\-function
+Zeige für jede Änderung, in welcher C-Funktion sie ist.
+.TP
+.BI \-\-show\-function\-line= regaus
+Im Kontext- und vereinten Format: Zeige für jeden Batzen von Unterschieden
+etwas aus der letzten vorangehenden Zeile, auf das der reguläre Ausdruck
+.I regaus
+passt.
+.TP
+.B \-\-side\-by\-side
+Benutze das Seite-an-Seite-Format.
+.TP
+.B \-\-speed\-large\-files
+Benutze Heuristiken, um die Behandlung großer Dateien, die viele verstreute
+kleine Änderungen haben, zu beschleunigen.
+.TP
+.BI \-\-starting\-file= file
+Beim Vergleich von Verzeichnissen: Beginne mit Datei
+.IR datei .
+Dies wird benutzt, um einen abgebrochenen Vergleich fortzusetzen.
+.TP
+.B \-\-suppress\-common\-lines
+Gib gemeinsame Zeilen im Seite-an-Seite-Format nicht aus.
+.TP
+.B \-t
+Expandiere Tabulatoren in der Ausgabe, um die Ausrichtung der Tabulatoren in den
+Eingabedateien zu erhalten.
+.TP
+.B \-T
+Gib einen Tabulatoren an Stelle eines Leerzeichens vor dem Text einer Zeile aus
+im Normal- oder Kontext-Format. Das führt dazu, das die Ausrichtung von
+Tabulatoren in der Zeile normal aussieht.
+.TP
+.B \-\-text
+Behandle alle Dateien als Text und vergleiche sie zeilenweise, auch wenn sie
+nicht Text zu sein scheinen.
+.TP
+.B \-u
+Benutze das vereinte Ausgabeformat.
+.TP
+.BI \-\-unchanged\-group\-format= format
+Nutze
+.IR format,
+um eine Gruppe von gemeinsamen Zeilen aus beiden Dateien im If-then-else-Format
+auszugeben.
+.TP
+.BI \-\-unchanged\-line\-format= format
+Nutze
+.IR format,
+um im If-then-else-Format eine Zeile, die in beiden Dateien auftritt,
+auszugeben.
+.TP
+.B \-\-unidirectional\-new\-file
+Beim Vergleich von Verzeichnissen: Wenn eine Datei nur im zweiten der beiden
+Verzeichnisse gefunden wird, behandle sie als vorhanden aber leer im anderem
+Verzeichnis.
+.TP
+.BI "\-U " lines
+.br
+.ns
+.TP
+.BI \-\-unified[= zeilen ]
+Benutzt das vereinte Ausgabeformat, zeige dabei
+.I zeilen
+(eine ganze Zahl) Zeilen
+Kontext, oder drei wenn
+.I zeilen
+nicht gegeben ist.
+Um ordentlich zu funktionieren, braucht
+.I patch
+typischerweise mindestens zwei Zeilen Kontext.
+.TP
+.B \-v
+.br
+.ns
+.TP
+.B \-\-version
+Gib die Versionsnummer von
+.B diff
+aus.
+.TP
+.B \-w
+Ignoriere Whitespace (Leerzeichen und Tabulatoren) beim Vergleich von Zeilen.
+.TP
+.BI "\-W " spalten
+.br
+.ns
+.TP
+.BI \-\-width= spalten
+Benutze eine Ausgabebreite von
+.I spalten
+Spalten im Seite-an-Seite-Format.
+.TP
+.BI "\-x " muster
+Beim Vergleich von Verzeichnissen: Ignoriere Dateien und Unterverzeichnisse,
+deren Basisnamen auf das
+.I muster
+passen.
+.TP
+.BI "\-X " datei
+Beim Vergleich von Verzeichnissen: Ignoriere Dateien und Unterverzeichnisse,
+deren Basisnamen auf irgendein Muster in
+.I datei
+passen.
+.TP
+.B \-y
+Benutze das Seite-an-Seite-Format.
+.SH "SIEHE AUCH"
+.BR cmp (1),
+.BR comm (1),
+.BR diff3 (1),
+.BR ed (1),
+.BR patch (1),
+.BR pr (1),
+.BR sdiff (1).
+.SH "DIAGNOSE"
+Ein Beendigungsstatus von 0 bedeutet, dass keine Unterschiede gefunden wurden, 1
+heißt, es gab einige Unterschiede; eine 2 bedeutet Ärger.
+
+'\" t
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
.\" Modified Sat Jul 24 10:54:27 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Thu May 18 11:00:31 1995 by Rik Faith (faith@cs.unc.edu)
.\" to add comments suggested by Todd Larason (jtl@molehill.org)
+.\" Modified Fri Jan 31 17:43:02 1997 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified Thu Jan 9 10:20:31 1995 by Martin Schulze (joey@infodrom.north.de)
+.\" to add more error codes suggested by Richard Kettlewell (richard@greenend.org.uk)
+.\" Modified Wed May 13 18:46:44 1998 by Michael Haardt <michael@cantor.informatik.rwth-aachen.de>
+.\" Modified 990706 by aeb; much of the info under `Other Systems' was
+.\" taken from a net post by Albert Cahalan.
+.\" Modified 000107 by aeb: added <sys/types.h> include.
+.\" Translation
.\" Modified Thu Feb 08 00:19:35 1996 by Jonas Rovan (jonas@blitz.de)
.\" Modified Mon Jun 10 23:33:05 1996 by Martin Schulze (joey@linux.de)
+.\" Modified March 2001 by Michael Piefel <piefel@informatik.hu-berlin.de>
.\"
-.TH STAT 2 "6. Februar 1996" "Linux 1.2.13" "Systemaufrufe"
-.SH BEZEICHNUNG
+.TH STAT 2 "13. Mai 1998" "Linux" "Systemaufrufe"
+.SH "NAME"
stat, fstat, lstat \- Ermittle Dateistatus
-.SH ÜBERSICHT
+.SH "ÜBERSICHT"
+.B #include <sys/types.h>
+.br
.B #include <sys/stat.h>
.br
.B #include <unistd.h>
.BI "int fstat(int " filedes ", struct stat *" buf );
.br
.BI "int lstat(const char *" file_name ", struct stat *" buf );
-.SH UEBERBLICK
+.SH "BESCHREIBUNG"
.PP
Beim Aufruf geben diese Funktionen Informationen über die angegebene Datei
zurück. Dazu benötigt man keinerlei Rechte an der angegebene Datei, sehr
-wohl aber die ''Search''-Rechte im rekursiven Pfad zu dieser Datei.
+wohl aber die Durchsuchungsrechte im allen Verzeichnissen im Pfad, der zu der
+Datei führt.
.PP
.B stat
liefert die Informationen zu der in
.B lstat
ist ähnlich
.BR stat ,
-nur dass, bei Links, Informationen zum Link und nicht der bezogenen Datei an
+nur daß bei Links Informationen zum Link und nicht zu der bezogenen Datei an
.IR buf
übergeben werden.
.B fstat
-ist wie
+ist genauso wie
.BR stat ,
-doch wird statt
-.IR file_name
-die, von
--I fopen(3)
-übergebene
+nur wird die offene Datei, auf die
.I filedes
-verwendet.
+(so wie von
+.BR open (2)
+zurückgegeben) zeigt, bearbeitet anstatt
+.IR file_name .
.PP
Alle Aufrufe geben eine Struktur vom Typ
.I stat
-zurück, die folgendermassen aufgebaut ist:
+zurück, die folgendermaßen aufgebaut ist:
.PP
-.RS
+.RS 4
.nf
struct stat
{
dev_t st_dev; /* Device */
ino_t st_ino; /* INode */
- umode_t st_mode; /* Protection */
- nlink_t st_nlink; /* Anzahl d. Hard_Links */
+ mode_t st_mode; /* Zugriffsrechte */
+ nlink_t st_nlink; /* Anzahl harter Links */
uid_t st_uid; /* UID des Besitzers */
gid_t st_gid; /* GID des Besitzers */
- dev_t st_rdev; /* Typ (wenn INode-Device) */
- off_t st_size; /* Grösse in Bytes*/
- unsigned long st_blksize; /* Blockgrösse */
+ dev_t st_rdev; /* Typ (wenn INode-Gerät) */
+ off_t st_size; /* Größe in Bytes*/
+ unsigned long st_blksize; /* Blockgröße */
unsigned long st_blocks; /* Allozierte Blocks */
time_t st_atime; /* Letzter Zugriff */
time_t st_mtime; /* Letzte Modifikation */
.fi
.RE
.PP
-CAVEAT:
-
.I st_blocks
-muss nicht unbedingt die Blockgrösse darstellen und
+gibt die Größe der Datei in 512-Byte-Blocks. Der Wert
.IR st_blksize
-kann auch die optimale Blockgrösse für die Dateioperationen
-angeben.
+gibt die "bevorzugte" Blockgröße für die Dateioperationen an.
+(Eine Datei mit kleineren Happen zu schreiben kann ineffizientes
+Lesen-Verändern-Wiederschreiben verursachen.)
.PP
-Nicht alle, von Linux unterstützte, Dateisysteme verwenden alle Felder.
+Nicht alle von Linux unterstützten Dateisysteme verwenden alle Felder.
+Einige Dateisysteme erlauben es, so zu montieren, daß Dateizugriffe das
+.I st_atime
+nicht modifizieren. (Siehe `noatime' in
+.BR mount (8).)
+
Normalerweise ändert sich
.I st_atime
durch den Einsatz von
-.BR mknod "(2), " utime "(2), " read "(2), " write "(2), und " truncate (2).
+.BR exec (2),
+.BR mknod (2),
+.BR pipe (2),
+.BR utime (2)
+und
+.BR read (2)
+(von mehr als null Bytes). Andere Routinen, wie
+.BR mmap (2),
+können, müssen aber nicht,
+.I st_atime
+modifizieren.
.I st_mtime
-verändert sich beim Einsatz von
-.BR mknod "(2), " utime "(2), und " write (2).
-
+verändert sich beim Einsatz von dateimodifizierenden Operationen, z. B. durch
+.BR mknod (2),
+.BR truncate (2),
+.BR utime (2)
+und
+.BR write (2)
+(von mehr als null Bytes).
+Darüberhinaus wird
+.I st_mtime
+von Verzeichnissen durch das Anlegen oder Löschen von Dateien in diesem
+Verzeichnis geändert.
.I st_mtime
wird
.I nicht
-durch Ändern von Besitzer, Gruppe, Hardlink-Count, oder Mode verändert.
+durch Ändern von Besitzer, Gruppe, Hardlink-Zähler oder Modus verändert.
.I st_ctime
-wird durch das Aendern der INode-Informationen neu gesetzt.
-
+wird durch Beschreiben oder das Ändern der INode-Informationen neu gesetzt
+(also Besitzer, Gruppe, Link-Zähler, Modus etc.).
.PP
-Folgende Makros sind für den Dateityp definiert:
+Folgende POSIX-Makros sind definiert, um den Dateityp zu überprüfen:
.RS
.TP 1.2i
-S_ISLNK(m)
-Testet auf einen Symbolischen Link,
-.TP
S_ISREG(m)
-auf reguläre Dateien,
+reguläre Datei,
.TP
S_ISDIR(m)
-auf Verzeichnisse,
+Verzeichnis,
.TP
S_ISCHR(m)
-checkt auf Character-Devices,
+zeichenorientiertes Gerät,
.TP
S_ISBLK(m)
-auf Block-Devices, während
+blockorientiertes Gerät,
.TP
S_ISFIFO(m)
-auf FiFos und
+FiFo,
+.TP
+S_ISLNK(m)
+symbolische Verknüpfung (nicht in POSIX.1-1996) und
.TP
S_ISSOCK(m)
-auf Sockets überprüft.
+Socket (nicht in POSIX.1-1996).
.RE
.PP
-Folgende Flags sind für
-.I st_mode
+Folgende Flags sind für das
+.IR st_mode -Feld
definiert:
-.RS
-.TP 0.9i
-S_IFMT
-00170000 Bitmaske für den Dateityp
-.TP
-S_IFSOCK
-0140000 Sockets
-.TP
-S_IFLNK
-0120000 Symbolische Links
-.TP
-S_IFREG
-0100000 reguläre Dateien
-.TP
-S_IFBLK
-0060000 Block-Devices
-.TP
-S_IFDIR
-0040000 Verzeichnisse
-.TP
-S_IFCHR
-0020000 Char-Devices
-.TP
-S_IFIFO
-0010000 FIFOs
-.TP
-S_ISUID
-0004000 SUID-bit
-.TP
-S_ISGID
-0002000 SGID-bit
-.TP
-S_ISVTX
-0001000 Stickybit ( Wer's braucht :) )
-.TP
-S_IRWXU
-00700 rwx für (u)ser
-.TP
-S_IRUSR (S_IREAD)
-00400 r-- für (u)ser
-.TP
-S_IWUSR (S_IWRITE)
-00200 -w- für (u)ser
-.TP
-S_IXUSR (S_IEXEC)
-00100 --x für (u)ser
-.TP
-S_IRWXG
-00070 rwx für (g)roup
-.TP
-S_IRGRP
-00040 r-- für (g)roup
-.TP
-S_IWGRP
-00020 -w- für (g)roup
-.TP
-S_IXGRP
-00010 --x für (g)roup
-.TP
-S_IRWXO
-00007 rwx für (o)thers
-.TP
-S_IROTH
-00004 r-- für (o)thers
-.TP
-S_IWOTH
-00002 -w- für (o)thers
-.TP
-S_IXOTH
-00001 --x für (o)thers
-.RE
-.SH "RETURN VALUE"
+.P
+.TS
+l l l.
+S_IFMT 0017000 Bitmaske für die Dateityp-Bitfelder
+S_IFSOCK 0140000 Socket
+S_IFLNK 0120000 symbolische Verknüpfung
+S_IFREG 0100000 reguläre Datei
+S_IFBLK 0060000 blockorientiertes Gerät
+S_IFDIR 0040000 Verzeichnis
+S_IFCHR 0020000 zeichenorientiertes Gerät
+S_IFIFO 0010000 FIFO
+S_ISUID 0004000 SUID-Bit
+S_ISGID 0002000 SGID-Bit (siehe unten)
+S_ISVTX 0001000 Sticky-Bit (siehe unten)
+S_IRWXU 00700 Bitmaske für Besitzerzugriffsrechte
+S_IRUSR 00400 Besitzer hat Lesezugriff
+S_IWUSR 00200 Besitzer hat Schreibzugriff
+S_IXUSR 00100 Besitzer hat Ausführungsrechte
+S_IRWXG 00070 Bitmaske für Gruppenzugriffsrechte
+S_IRGRP 00040 Gruppe hat Lesezugriff
+S_IWGRP 00020 Gruppe hat Schreibzugriff
+S_IXGRP 00010 Gruppe hat Ausführungsrechte
+S_IRWXO 00007 Bitmaske für Zugriffsrechte Anderer (nicht in Gruppe)
+S_IROTH 00004 Andere haben Lesezugriff
+S_IWOTH 00002 Andere haben Schreibzugriff
+S_IXOTH 00001 Andere haben Ausführungsrechte
+.TE
+.P
+Das SGID-Bit (S_ISGID) hat verschiedene besondere Nutzungsmöglichkeiten:
+Für ein Verzeichnis bedeutet es, das die BSD-Semantik Anwendung findet: Dateien,
+die in ihm erzeugt werden, erben die Gruppen-ID des Verzeichnisses und nicht die
+effektive Gruppen-ID des erzeugenden Prozesses, und dort erzeugte Verzeichnisse
+haben das SGID-Bit ebenfalls gesetzt. Für eine Datei, bei der das Bit für
+Gruppenausführungsrechte (S_IXGRP) nicht gesetzt ist, bedeutet es erzwungenes
+Locken von Datei/Datensatz.
+.P
+Das `Sticky'-Bit (S_ISVTX) an einem Verzeichnis bedeutet, daß eine Datei in
+diesem Verzeichnis umbenannt und gelöscht werden darf nur vom Besitzer der
+Datei, dem Besitzer des Verzeichnisses, und von Root.
+.SH "RÜCKGABEWERT"
Erfolg gibt 0, ein Fehler gibt \-1 zurück und setzt
.I errno
entsprechend.
-.SH FEHLER
+.SS "FEHLER"
.TP
.B EBADF
.I filedes
falsch oder nicht vorhanden.
.TP
.B ENOENT
-Datei existiert nicht.
+Eine Komponente des Pfades
+.I file_name
+existiert nicht, oder der Pfad ist eine leere Zeichenkette.
+.TP
+.B ENOTDIR
+Eine Komponente des Pfades ist kein Verzeichnis.
+.TP
+.B ELOOP
+Zu viele symbolische Verknüpfungen wurden entlang des Pfades gefunden.
+.TP
+.B EACCES
+Zugriff verweigert.
+.TP
+.B ENOMEM
+Kein Speicher mehr (das bedeutet Speicher im Kernel).
+.TP
+.B ENAMETOOLONG
+Dateiname ist zu lang.
.SH "KONFORM ZU"
-SVID (not
-.BR lstat() ),
-AT&T (not
-.BR lstat() ),
-POSIX (not
-.BR lstat() ),
-X/OPEN (not
-.BR lstat() ),
-BSD 4.3
+Die
+.BR stat -
+und
+.BR fstat -Aufrufe
+sind zu SVr4, SVID, POSIX, X/OPEN und BSD 4.3 konform. Der
+.BR lstat -Aufruf
+ist konform zu 4.3BSD und SVr4.
+SVr4 dokumentiert die zusätzlichen
+.BR fstat -Fehlermeldungen
+EINTR, ENOLINK und EOVERFLOW. SVr4 dokumentiert die zusätzlichen
+.BR stat -
+unf
+.BR lstat -Fehlermeldungen
+EACCES, EINTR, EMULTIHOP, ENOLINK und EOVERFLOW.
+Benutzung der
+.IR st_blocks -
+und
+.IR st_blksize -Felder
+kann unter Umständen weniger portabel sein. (Sie wurden in BSD eingeführt und
+sind nicht in POSIX spezifiziert. Die Interpretation ist auf verschiedenen
+Systemen unterschiedlich, und möglicherweise auch auf einem einzelnen System,
+wenn es mit NFS montierte Dateisysteme gibt.)
+.LP
+POSIX beschreibt die Bits S_IFMT, S_IFSOCK, S_IFLNK, S_IFREG, S_IFBLK,
+S_IFDIR, S_IFCHR, S_IFIFO und S_ISVTX \fInicht\fR, sondern verlangt stattdessen
+die Benutzung der Makros S_ISDIR() etc. Die Makros S_ISLNK und S_ISSOCK finden
+sich nicht in POSIX.1-1996, werden aber im nächsten POSIX-Standard vorhanden
+sein; ersteres ist aus SVID 4v2, letzteres aus SUSv2.
+.LP
+Unix V7 (und spätere Systeme) hatten S_IREAD, S_IWRITE und S_IEXEC wo POSIX die
+Synonyme S_IRUSR, S_IWUSR und S_IXUSR vorschreibt.
+.SH "ANDERE SYSTEME"
+Werte die von verschiedenen Systemen benutzt wurden oder werden:
+.P
+.TS
+l l l l l.
+Hex Name ls Oktal Beschreibung
+f000 S_IFMT 170000 Maske für Dateityp
+0000 000000 SCO out-of-service INode, BSD unbekannter Typ
+ SVID-v2 und XPG2 haben sowohl 0 als auch 0100000
+ für gewöhnliche Dateien
+1000 S_IFIFO p| 010000 FiFo (benannte Pipe)
+2000 S_IFCHR c 020000 zeichenorientiertes Spezialdatei (V7)
+3000 S_IFMPC 030000 Gemultiplexte zeichenorientiertes Spezialdatei (V7)
+4000 S_IFDIR d/ 040000 Verzeichnis (V7)
+5000 S_IFNAM 050000 XENIX benannte Spezialdatei
+ mit zwei Untertypen, unterschieden durch st_rdev-Werte:
+0001 S_INSEM s 000001 XENIX Semaphore-Untertyp von IFNAM
+0002 S_INSHD m 000002 XENIX geteilte-Daten-Untertyp von IFNAM
+6000 S_IFBLK b 060000 blockorientierte Spezialdatei (V7)
+7000 S_IFMPB 070000 Gemultiplexte blockorientierte Spezialdatei (V7)
+8000 S_IFREG - 100000 reguläre Datei (V7)
+9000 S_IFCMP 110000 VxFS komprimiert
+9000 S_IFNWK n 110000 Netzwerk-Spezialdatei (HP-UX)
+a000 S_IFLNK l@ 120000 symbolische Verknüpfung (BSD)
+b000 S_IFSHAD 130000 Solaris Schatten-INode für ACL (nicht sichtbar für Nutzer)
+c000 S_IFSOCK s= 140000 Socket (BSD; auch "S_IFSOC" auf VxFS)
+d000 S_IFDOOR D> 150000 Solaris Tür (`door')
+e000 S_IFWHT w% 160000 BSD `whiteout' (nicht für INode benutzt)
+
+0200 S_ISVTX 001000 `Sticky'-Bit: Text bleibt auf Swap auch nach Benutzung (V7)
+ reserviert (SVID-v2)
+ Auf Nicht-Verz.: diese Datei nicht in den Cache (SunOS)
+ Auf Verz.: Flag für eingeschränktes Löschen (SVID-v4.2)
+0400 S_ISGID 002000 Setze Gruppen-ID bei Ausführung (V7)
+ für Verz.: benutze BSD-Semantics für Weitergeben der gid
+0400 S_ENFMT 002000 SysV Locken der Datei erzwungen (gleicher Wert wie S_ISGID)
+0800 S_ISUID 004000 setze Nutzer-ID bei Ausführung (V7)
+0800 S_CDF 004000 Verzeichnisse is eine kontextabhängige Datei (HP-UX)
+.TE
+
+Ein `sticky'-Befehl tauchte in Version 32V AT&T UNIX auf.
+
.SH "SIEHE AUCH"
.BR chmod (2),
.BR chown (2),
.B <aeb@win.tue.nl>
für dessen Engagement herzlichst dankt.
+Neufassung \(co 2001 von Michael Piefel
+.BR <piefel@informatik.hu-berlin.de> .