Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

sysconf(3C)

limits(4)

unistd(4)

lfs(5)

fpathconf(2)                                                   fpathconf(2)

NAME
     fpathconf, pathconf - Konfigurierbare Pfadnamenvariablen lesen

SYNTAX
     #include <unistd.h>

     long int fpathconf(int fildes, int name);

     long int pathconf(const char *path, int name);

BESCHREIBUNG
     Die Funktionen fpathconf() und pathconf() stellen eine Methode zur
     Verfügung, anhand derer die Anwendung den aktuellen Wert eines konfi-
     gurierbaren Limits oder einer Option (Variable) ermitteln kann,
     der/die einer Datei oder einem Verzeichnis zugeordnet ist.

     Bei pathconf() zeigt das Argument path auf den Pfadnamen einer Datei
     oder eines Verzeichnisses.

     Bei fpathconf() ist das Argument fildes ein offener Dateideskriptor.

     Das Argument name stellt die abzufragende Variable relativ zu dieser
     Datei bzw. diesem Verzeichnis dar. Von den Implementierungen werden alle
     in der folgenden Tabelle aufgelisteten Variablen (und möglicherweise
     auch noch weitere) unterstützt. Die Variablen in der folgenden Tabelle
     stammen aus limits.h oder unistd.h, und die symbolischen Konstanten, die
     in unistd.h definiert sind, sind die entsprechenden Werte für name:

     ______________________________________________________________________
    | Variable               |  Wert von name        |  Siehe Bemerkungen |
    |________________________|_______________________|____________________|
    | FILESIZEBITS           |  PCFILESIZEBITS     |  3, 4              |
    |________________________|_______________________|____________________|
    | LINKMAX               |  PCLINKMAX         |  1                 |
    |________________________|_______________________|____________________|
    | MAXCANON              |  PCMAXCANON        |  2                 |
    |________________________|_______________________|____________________|
    | MAXINPUT              |  PCMAXINPUT        |  2                 |
    |________________________|_______________________|____________________|
    | NAMEMAX               |  PCNAMEMAX         |  3, 4              |
    |________________________|_______________________|____________________|
    | PATHMAX               |  PCPATHMAX         |  4, 5              |
    |________________________|_______________________|____________________|
    | PIPEBUF               |  PCPIPEBUF         |  6                 |
    |________________________|_______________________|____________________|
    | POSIXCHOWNRESTRICTED|  PCCHOWNRESTRICTED |  7                 |
    |________________________|_______________________|____________________|
    | POSIXNOTRUNC        |  PCNOTRUNC         |  3, 4              |
    |________________________|_______________________|____________________|
    | POSIXVDISABLE        |  PCVDISABLE         |  2                 |
    |________________________|_______________________|____________________|




Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

fpathconf(2)                                                   fpathconf(2)

     Bemerkungen:

     1) Wenn path oder fildes sich auf ein Verzeichnis bezieht, so gilt der
        zurückgelieferte Wert für das Verzeichnis.

     2) Das Verhalten ist undefiniert für den Fall, daß path oder fildes
        sich nicht auf eine Terminaldatei bezieht.

     3) Wenn path oder fildes sich auf ein Verzeichnis bezieht, so gilt der
        Rückgabewert für die Dateien innerhalb des Verzeichnisses.

     4) Das Verhalten ist undefiniert, wenn path oder fildes sich nicht auf
        ein Verzeichnis bezieht.

     5) Wenn sich path oder fildes auf ein Verzeichnis bezieht, dann ent-
        spricht der zurückgelieferte Wert der maximalen Länge eines relati-
        ven Pfadnamens, wenn das angegebene Verzeichnis das Arbeitsver-
        zeichnis wird.

     6) Wenn path oder fildes sich auf eine Pipe oder eine FIFO-Datei
        bezieht, dann entspricht der zurückgegebene Wert der FIFO-Datei
        selbst. Entspricht path oder fildes einem Verzeichnis, dann gilt
        der zurückgegebene Wert für jede FIFO-Datei, die innerhalb des Ver-
        zeichnisses existiert oder erzeugt werden kann. Wenn sich path oder
        fildes auf einen anderen Dateityp bezieht, ist das Verhalten unde-
        finiert.

     7) Wenn sich path oder fildes auf ein Verzeichnis bezieht, dann gilt
        der zurückgegebene Wert für jede Datei, die innerhalb des Verzeich-
        nisses existiert oder erzeugt werden kann.

     Der Wert des konfigurierbaren Systemlimits oder der Option aus name
     ändert sich während der Lebensdauer des aufrufenden Prozesses nicht.

RÜCKGABEWERT
     Wenn name ein ungültiger Wert ist, geben sowohl pathconf() als auch
     fpathconf() -1 zurück und setzten errno, um den Fehler anzuzeigen.

     Wenn die name entsprechende Variable kein Limit für den path oder den
     Dateideskriptor hat, geben sowohl pathconf() als auch fpathconf() -1
     zurück, ohne errno zu ändern. Wenn die Implementierung path zur Ermitt-
     lung des Werts von name benötigt und die Zuordnung von name mit der
     durch path angegebenen Datei nicht unterstützt, oder wenn der Prozeß
     nicht über die entsprechende Berechtigung zur Abfrage der durch path
     angegebenen Datei verfügt, oder path nicht existiert, gibt pathconf()
     -1 zurück, und errno wird gesetzt, um den Fehler anzuzeigen.

     Wenn die Implementierung fildes zur Ermittlung des Werts von name
     benötigt und die Zuordnung von name zu der durch fildes angegebenen
     Datei nicht unterstützt, oder  wenn fildes ein ungültiger Dateide-
     skriptor ist, gibt fpathconf() -1 zurück, und errno wird gesetzt, um
     den Fehler anzuzeigen.


Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

fpathconf(2)                                                   fpathconf(2)

     Andernfalls gibt pathconf() oder fpathconf() den aktuellen Variablen-
     wert für die Datei oder das Verzeichnis zurück, ohne errno zu ändern.
     Der zurückgegebene Wert ist nicht restriktiver als der entsprechende
     Wert, der der Anwendung bei der Kompilierung mit den implementierungs-
     spezifischen Werten aus limits.h oder unistd.h zur Verfügung stand.

FEHLER
     Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
     Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
     errno(5).

     fpathconf() schlägt bei folgender Bedingung fehl:

     EBADF         fildes ist kein gültiger Dateideskriptor.

     pathconf() schlägt fehl, wenn mindestens eine der folgenden Bedingun-
     gen vorliegt:

     EACCES        Suchrechte für eine Komponente des Pfadnamens sind nicht
                   gegeben.

     ELOOP         Bei der Auflösung von path wurden zu viele symbolische
                   Links gefunden.

     EMULTIHOP     Komponenten von path erfordern den Sprung auf mehrere
                   ferne Rechner, und der Dateisystemtyp erlaubt dies
                   nicht.

     ENAMETOOLONG  Die Länge eines Pfadnamens überschreitet PATHMAX, oder
                   eine Komponente des Pfadnamens ist länger als NAMEMAX.

     ENAMETOOLONG  Die Auflösung des Pfadnamens eines symbolischen Links
                   hat ein Zwischenergebnis erzeugt, dessen Länge PATHMAX
                   überschreitet.

     ENOENT        path wird für das Kommando benötigt, und die benannte
                   Datei existiert nicht, oder das Argument path zeigt auf
                   eine leere Zeichenkette.

     ENOLINK       path zeigt auf einen fernen Rechner, und der Verweis auf
                   diesen Rechner ist nicht mehr aktiv.

     ENOSYS        Es wurde versucht, für einen Eintrag in einem Dateisy-
                   stem eine nicht unterstützte Operation (Erstellen, Ent-
                   fernen, Link herstellen, Link aufheben) auszuführen.

     ENOTDIR       Eine Komponente des Pfadpräfixes ist kein Verzeichnis.

     Sowohl fpathconf() als auch pathconf() schlagen fehl, wenn folgende
     Bedingung erfüllt ist:

     EINVAL        name enthält einen ungültigen Wert.


Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

fpathconf(2)                                                   fpathconf(2)

     EINVAL        Die Implementierung unterstützt keine Zuordnung der
                   Variablen name zu der angegebenen Datei.

HINWEISE
     Anhand der Option PCFILESIZEBITS kann ein Prozeß feststellen, welche
     Größe eine in einem bestimmten Verzeichnis erstellte Datei aufweisen
     kann. Hierbei werden implementierungsabhängige Einschränkungen im
     Dateisystem (z. B. aufgrund der Größe von Variablen für Dateigröße und
     Anzahl der Blöcke) sowie über längere Zeit geltende Einschränkungen.
     berücksichtigt. Nicht berücksichtigt werden dynamische Einschränkungen
     wie der Ressourcengrenzwert RLIMFSIZE oder die Anzahl der verfügbaren
     Dateiblöcke; der Prozeß muß also noch entsprechende Prüfungen durch-
     führen.

     Wenn sich das aktuelle Verzeichnis auf einem typischen, für große
     Dateien geeigneten Dateisystem von 4 GB befindet, gibt

          pathconf(".", PCFILESIZEBITS);

     36 zurück. Das heißt, daß auf einem 4 GB großen Dateisystem (vxfs,
     ufs) eine Datei bis zur Position 2 hoch 36-1 = 32 GB-1 beschrieben
     werden kann (physische Blockbelegung nur bis maximal 4 GB).

     Die maximale Dateigröße in einem vxfs-Dateisystem (Veritas) ist 2 hoch
     44 -bsize-1, in einem ufs-Dateisystem 2 hoch 45 -bsize-1.

     Im allgemeinen gilt: Wenn die maximale Dateigröße, die auf dem einge-
     hängten Dateisystem jemals existieren konnte, maxsize ist, so ist der
     zurückgegebene Wert 2 plus dem floor des Logarithmus zur Basis 2 von
     maxsize (floor = Nächst-Untere-Ganzzahl).

SIEHE AUCH
     sysconf(3C), limits(4), unistd(4), lfs(5).





















Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026