iofunc_rename()

Выполнить проверки доступа для сообщения _IO_CONNECT_RENAME

Прототип:

#include <sys/iofunc.h>
int iofunc_rename( resmgr_context_t *ctp,
io_rename_t *msg,
iofunc_attr_t *oldattr,
iofunc_attr_t *olddattr,
iofunc_attr_t *newattr,
iofunc_attr_t *newdattr,
struct _client_info *info );

Аргументы:

ctp
Указатель на структуру resmgr_context_t, которую библиотека менеджера ресурсов использует для передачи контекстной информации между функциями.
msg
Указатель на структуру io_rename_t, содержащую сообщение, полученное менеджером ресурсов.
oldattr
Указатель на структуру iofunc_attr_t с характеристиками ресурса.
olddattr
NULL или указатель на структуру iofunc_attr_t c характеристиками родительского каталога.
newattr
Указатель на структуру iofunc_attr_t с характеристиками целевого объекта, если он существует.
newdattr
NULL или указатель на структуру iofunc_attr_t с характеристиками родительского каталога целевого объекта.
info
NULL или указатель на структуру с информацией о клиентском соединении struct _client_info.

Библиотека:

libc

Описание:

Функция iofunc_rename() выполняет проверку разрешений для сообщения _IO_CONNECT (подтип _IO_CONNECT_RENAME) для контекста ctp. Аргумент newattr является атрибутом целевого объекта, если он уже существует.

Эта функция аналогична iofunc_open(). iofunc_rename() проверяет, имеет ли клиент (описываемый необязательной структурой info) доступ для открытия ресурса (имя передаётся в структуре msg). Структура attr содержит атрибуты ресурса.

Аргумент info может быть передан как NULL, в этом случае iofunc_rename() сама получает информацию о клиенте с помощью вызова iofunc_client_info(). Но, конечно, более эффективно получить информацию о клиенте один раз, чем каждый раз вызывать эту функцию с NULL.

Возвращаемое значение:

EACCES
У клиента нет прав на выполнение операции.
EBADFSYS
NULL был передан в oldattr, olddattr или newdattr.
EFAULT
Ошибка при попытке ядра обратиться к буферу info.
EINVAL
oldattr и newdattr имеют одинаковые значения, клиентский процесс больше недействителен или пытается удалить родительский (".") каталог.
EISDIR
Старая ссылка является каталогом, но новая ссылка не является каталогом.
ENOTDIR
Попытка удалить не каталог, используя семантику работы с каталогами (например, "rmdir file").
ENOTEMPTY
Попытка удалить непустой каталог.
EOK
Успешное завершение или запись newattr уже существовала.
EPERM
GID или UID не совпадают.
EROFS
Попытка удалить запись в файловой системе, доступной только для чтения.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

struct _client_info, io_rename_t, struct _io_connect, struct _io_connect_link_reply, struct _io_connect_ftype_reply, iofunc_client_info(), iofunc_open(), resmgr_context_t




Предыдущий раздел: Описание API системной библиотеки