В рамках адаптации в университете я должен изменить функцию unlink_file
, расположенную в /usr/src/minix/fs/mfs/link.c
, поэтому (при определенных условиях) вместо удаления файлов просто меняет их имя.
У меня есть индекс родительского каталога, индекс файла и его имя, переданное функции в качестве параметров:
static int unlink_file(dirp, rip, file_name)
struct inode *dirp; /* parent directory of file */
struct inode *rip; /* inode of file, may be NULL too. */
char file_name[MFS_NAME_MAX]; /* name of file to be removed */
Я подумал об использовании системного вызова rename(2)
(реализация которого находится в тот же файл в функции fs_rename
), но для этого мне нужен абсолютный путь к файлу. К сожалению, я не знаю, как получить его из структуры inode.
Мой вопрос: как я могу получить абсолютный путь к файлу по его индексу? Или есть другой способ переименовать файл изнутри функции unlink_file
?