getmntent(3) getmntent_r

SKŁADNIA

#include <stdio.h>
#include <mntent.h>


FILE *setmntent(const char *filename, const char *type);

struct mntent *getmntent(FILE *fp);

int addmntent(FILE *fp, const struct mntent *mnt);

int endmntent(FILE *fp);

char *hasmntopt(const struct mntent *mnt, const char *opt);


/* rozszerzenie GNU */
#include <mntent.h>

struct mntent *getmntent_r(FILE *fp, struct mntent *mntbuf,
char *buf, int buflen);

Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

getmntent_r(): _BSD_SOURCE || _SVID_SOURCE

OPIS

Funkcje te służą do udostępniania informacji z pliku opisującego systemy plików /etc/fstab oraz z pliku opisującego zamontowane systemy plików /etc/mtab.

Funkcja setmntent() otwiera plik opisujący systemy plików, filename, i zwraca wskaźnik do pliku, którym może się posłużyć getmntent(). Argument type jest żądanym rodzajem dostępu i może przyjmować takie same wartości, jak argument mode funkcji fopen(3).

Funkcja getmntent() odczytuje następną linię z pliku fp, opisującego systemy plików i zwraca wskaźnik do struktury zawierającej pola powstałe z rozłożenia linii pliku. Wskaźnik ten jest wskaźnikiem do statycznego obszaru pamięci, który jest nadpisywany podczas następnego wywołania getmntent().

Funkcja addmntent() dodaje strukturę mnt typu mntent na końcu otwartego pliku fp.

Funkcja endmntent() zamyka plik fp, opisujący systemy plików.

Funkcja hasmntopt() przegląda pole mnt_opts (zobacz poniżej) w mnt typu struktury mntent w poszukiwaniu podłańcuchów pasujących do opt. Prawidłowe opcje montowania opisane są w <mntent.h> i mount(8)

Wielodostępowa funkcja getmntent_r() jest podobna do getmntent(), z tą różnicą że przechowuje struct mount w przekazanym *mntbuf i przechowuje łańcuchy znaków wskazujące na wpisy w tej strukturze w przekazanej tablicy buf o rozmiarze buflen.

Struktura mntent jest zdefiniowana w <mntent.h> następująco:

struct mntent {
    char *mnt_fsname;   /* nazwa zamontowanego systemu plików */
    char *mnt_dir;      /* prefiks ścieżki systemu plików */
    char *mnt_type;     /* rodzaj montowania (patrz mntent.h) */
    char *mnt_opts;     /* opcje montowania (patrz mntent.h) */
    int   mnt_freq;     /* częstotliwość zrzucania w dniach */
    int   mnt_passno;   /* numer przebiegu równoległego fsck */
};

Ponieważ pola w plikach mtab i fstab są rozdzielone białymi znakami, ósemkowe znaki cytowania są używane do reprezentowania czterech następujących znaków: spacji ("\040"), tabulacji ("\011"), nowej linii ("\012") oraz odwrotnego ukośnika ("\134"), jeśli występują w jednym z czterech łańcuchów w strukturze mntent. Procedury addmntent() i getmntent() skonwertują normalną reprezentację łańcucha znaków na cytowaną i z powrotem.

WARTOŚĆ ZWRACANA

Funkcja getmntent() i getmntent_r() zwracają wskaźnik do struktury mntent albo NULL w przypadku błędu.

Funkcja addmntent() zwraca 0 po pomyślnym zakończeniu, a 1 w przypadku błędu.

Funkcja endmntent() zawsze zwraca 1.

Funkcja hasmntopt() zwraca adres podłańcucha, gdy zostanie on znaleziony, a NULL w przeciwnym przypadku.

PLIKI

/etc/fstab          plik opisujący systemy plików
/etc/mtab           plik opisujący zamontowane systemy plików

ZGODNE Z

Wersje niewielowątkowe funkcji pochodzą z SunOS 4.1.3. Procedura getmntent_r() została dodana w HP-UX 10, ale zwraca int. Prototyp pokazany powyżej jest dostępny tylko w bibliotece glibc.

UWAGI

System V również zawiera funkcję getmntent(), ale inna jest sekwencja wywołująca i zwraca ona inną strukturę. Pod Systemem V używa się /etc/mnttab. 4.4BSD i Digital UNIX zawierają funkcję getmntinfo(), otulającą funkcję systemową getfsstat().

O STRONIE

Angielska wersja tej strony pochodzi z wydania 3.71 projektu Linux man-pages. Opis projektu, informacje dotyczące zgłaszania błędów, oraz najnowszą wersję oryginału można znaleźć pod adresem http://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Andrzej Krzysztofowicz (PTM) <[email protected]> i Robert Luberda <[email protected]>.

Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 3.71 oryginału.