setfsent(3) для работы с записями

Other Alias

getfsent, getfsspec, getfsfile, endfsent

ОБЗОР

#include <fstab.h>

void endfsent(void);

struct fstab *getfsent(void);

struct fstab *getfsfile(const char *mount_point);

struct fstab *getfsspec(const char *special_file);

int setfsent(void);

ОПИСАНИЕ

Эти функции читают файл /etc/fstab. Структура struct fstab определена следующим образом:

struct fstab {
    char       *fs_spec;       /* имя блочного устройства */
    char       *fs_file;       /* точка монтирования */
    char       *fs_vfstype;    /* тип файловой системы */
    char       *fs_mntops;     /* параметры монтирования */
    const char *fs_type;       /* параметр rw/rq/ro/sw/xx */
    int         fs_freq;       /* периодичность запуска dump, в днях */
    int         fs_passno;     /* номер прохода при параллельном dump */
};

Здесь поле fs_type содержит (в системах *BSD) одну из пяти строк: «rw», «rq», «ro», «sw», «xx» (чтение-запись, чтение-запись с квотами, только-чтение, подкачка, игнорировать).

Функция setfsent() открывает файл при необходимости и устанавливает указатель на первую строку.

Функция getfsent() обрабатывает следующую строку из файла (открыв файл, если требуется).

Функция endfsent() закрывает файл, если требуется.

Функция getfsspec() ищет с начала файла запись, для которой поле fs_spec соответствует аргументу special_file и возвращает её.

Функция getfsfile() ищет с начала файла запись, для которой поле fs_file соответствует аргументу mount_point и возвращает её.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении функции getfsent(), getfsfile() и getfsspec() возвращают указатель на структуру struct fstab, а setfsent() возвращает 1. При ошибке или обнаружении конца файла эти функции возвращают, соответственно, NULL или 0.

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).
ИнтерфейсАтрибутЗначение
endfsent(),
setfsent()
безвредность в нитяхнебезопасно (MT-Unsafe race:fsent)
getfsent(),
getfsspec(),
getfsfile()
безвредность в нитяхнебезопасно (MT-Unsafe race:fsent locale)

СООТВЕТСТВИЕ СТАНДАРТАМ

Эти функции не включены в POSIX.1. Они имеются в некоторых операционных системах, например *BSD, SunOS, Digital UNIX, AIX (в котором также есть getfstype()). В HP-UX есть функции с тем же именем, но вместо структуры struct fstab они используют структуру struct checklist, и вызовы этих функций устарели, они заменены на getmntent(3).

ЗАМЕЧАНИЯ

Эти функции нельзя использовать в нескольких нитях одновременно.

Так как Linux позволяет монтировать специальное блочное устройство в несколько разных точек, а также так как несколько устройств могут иметь одну точку монтирования, то неясно, будет ли результат (первая запись), возвращенный функциями getfsfile() и getfsspec() именно тем, что и ожидался. Поэтому эти две функции не подходят для использования под Linux.