Ich hab hier mal ein paar Fehlercodes hinzugefügt.
// Keine Zugriffsrechte
CDI_FS_ERROR_NOPERM,
Das gehört meiner Meinung nach nicht zu CDI. So wie ich mir das vorstelle, füllt der Treiber nur die ACLs, ausgewertet werden die von der OS-abhängigen Implementation.
// Invalider Dateideskriptor
CDI_FS_ERROR_BADFD,
Auch das Verwalten der Dateideskriptoren, bei uns hier jetzt Streams genannt, gehört nicht in die Treiber.
// Datei existiert
CDI_FS_ERROR_FEXISTS,
// Datei zu groß
CDI_FS_ERROR_FBIG,
// Ist ein Verzeichnis
CDI_FS_ERROR_ISDIR,
Das kann in der Implementation doch nicht passieren. Datei-Funktionen können aus sicht des Treibers auf eine Ressource nur angewendet werden, wenn sie zu einer entsprechenden Klasse gehören.
// Zu viele Levels symbolischer Links
CDI_FS_ERROR_LOOP,
// Zu viele geöffnete Dateien
CDI_FS_ERROR_MFILES,
Auch diese 2 kommen von der Implementation
// Zu viele Links
CDI_FS_ERROR_MLINKS,
// Dateiname zu lang
CDI_FS_ERROR_FNTOOLONG,
// Nicht genügend Speicher
CDI_FS_ERROR_NOMEM,
// Kein Verzeichnis
CDI_FS_ERROR_NODIR,
Dieser auch wieder, oder verstehe ich die Bedeutung falsch? Dieser Fehler kommt doch, wenn eine Komponente in einem Pfad kein Verzeichnis oder nicht vorhanden ist?
// Kein Socket
CDI_FS_ERROR_NOSOCK,
// Verzeichnis nicht leer
CDI_FS_ERROR_DIRNEMPTY,
// Kaputte Pipe
CDI_FS_ERROR_BRKPIPE,
// Read-only Dateisystem
CDI_FS_ERROR_ROFS,
// Ungültiger Seek
CDI_FS_ERROR_BADSEEK
Für CDI_FS_ERROR_NOSOCK, CDI_FS_ERROR_BRKPIPE, CDI_FS_ERROR_BADSEEK gilt wieder, dass das in die Implementation gehört.
Und zu CDI_FS_ERROR_DIRNEMPTY, CDI_FS_ERROR_ROFS stelle ich mir grad die Frage, ob wir nicht definieren sollen, dass von der Implementation garantiert werden muss, dass keine schreibenden Operationen ausgeführt werden, wenn read only aktiviert ist, und dass nicht versucht wird, ein volles verzeichnis zu löschen.