Le 23/12/2018 à 18:16, k...@aspodata.se a écrit :
Didier:
...
2) there isn't a function in the C library which permits to change
the name of a file (or open it), except by giving its whole pathname.
Eg. it's not possible to open it from its directory entry.
...
man openat
man renameat
int openat(int dirfd, const char *pathname, int flags);
The file isn't refered by its directory entry, but by a file
descriptor allowing to read the directory, and the relative pathname
(which contains slashes). The slashes will be interpreted as a directory
tree which doesnexist.
If it was possible to refer to the file by the /struct dirent/
associated to each file in the directory, obtained by readdir(dirfd),
then it would solve the problem, but the only thing in /struct dirent/
which can be used to refer to the file is d_filename, which is its
relative pathname.
struct dirent {
ino_t d_ino; /* Inode number */
off_t d_off; /* Not an offset; see below */
unsigned short d_reclen; /* Length of this record */
unsigned char d_type; /* Type of file; not supported
by all filesystem types */
char d_name[256]; /* Null-terminated filename */
};
Didier
_______________________________________________
Dng mailing list
Dng@lists.dyne.org
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng