dirent.h – plik nagłówkowy w bibliotece POSIX języka C. Udostępnia funkcje, makra, i struktury, które umożliwiają łatwe trawersowanie katalogów.

Funkcje edytuj

int closedir(DIR* dirp)

Zamyka strumień katalogowy dirp. Po prawidłowym wykonaniu, funkcja zwraca wartość 0, inaczej zwraca -1 i zapisuje kod błędu w zmiennej errno.

DIR* opendir(const char* dirname)

Otwiera strumień do katalogu znajdującego się pod ścieżką dirname. Po prawidłowym wykonaniu, opendir() zwraca wskaźnik do obiektu typu DIR, inaczej zwraca NULL.

struct dirent* readdir(DIR* dirp)

Zwraca wskaźnik do struktury reprezentującej plik w obecnej pozycji w strumieniu dirp i awansuje pozycję na następny plik w kolejce. Zwrócony wskaźnik do obiektu struct dirrent nie powinien być zwolniony. Jeśli nie ma już więcej plików w katalogu, wartość NULL jest zwrócona. Gdy wystąpi błąd, wartość NULL także jest zwrócona i powód jest zapisany w zmiennej errno.

int readdir_r(DIR* dirp, struct dirent* entry, struct dirent** result)

void rewinddir(DIR* dirp)

Ustawia strumień katalogowy na początek.

void seekdir(DIR* dirp, long int loc)

Zmienia pozycję strumienia katalogowego.

long int telldir(DIR* dirp)

Zwraca aktualną pozycję w strumieniu katalogowym.

Zmienne edytuj

Zmienna Opis
NAME_MAX (lub FILENAME_MAX) maksymalny rozmiar tablicy d_name

Typy danych edytuj

W pliku dirent.h istnieją następujące definicje:

  • DIR – struktura reprezentująca strumień katalogowy
  • struct dirent – struktura, która zawiera:
    • ino_t d_ino – numer i-węzła pliku
    • char d_name[] – nazwa pliku

Na niektórych platformach, struktura struct dirent może mieć także:

  • off_t d_off – offset pliku
  • unsigned short int d_reclen – rozmiar struktury
  • unsigned short int d_namlen – długość pola d_name
  • unsigned int d_type – typ pliku

Bibliografia edytuj

  • Implementacja dirent.h dla systemów Windows – Dirent API for Microsoft Visual Studio. Softgalleria.net. [dostęp 2012-06-26]. (ang.).
  • Specyfikacja OpenGroup biblioteki dirent.h – dirent.h. opengroup.org. [dostęp 2012-06-26]. (ang.).
  • Specyfikacja GNU biblioteki dirent.h – dirent. delorie.com. [dostęp 2012-06-26]. (ang.).