Hello Axel,
attached is a small tool to test fchown on a freshly created file: <
> Damn... didn't go through... ;-)
ok... maybe i missed it... let's do it inline:
#include
main(int argc, char **argv) { int f = open(argv[1],O_CREAT|O_TRUNC); printf("fchown returns %i\n",fchown(f,-1L,-1L)); if (errno) printf("errno=%i (%s)\n", errno, strerror(errno)); close(f); unlink(argv[1]); }
As a result, I'm not sure whether entirely hiding the log message is a good idea; perhaps just change the logging level would be better, so that one keeps the ability to track possibly problematic file systems...
It's not just the log message. If you have a look on the entire function, you'll see that it fails if fchown fails:
static int file_dotlock_open_mode_full(<...>,uid_t uid, gid_t gid,<...>) { <...>
if (fd != -1) {
if (fchown(fd, uid, gid) < 0) {
if (errno == EPERM && uid == (uid_t)-1) {
i_error("%s", eperm_error_get_chgrp("fchown",
file_dotlock_get_lock_path(dotlock),
gid, gid_origin));
} else {
i_error("fchown(%s, %ld, %ld) failed: %m",
file_dotlock_get_lock_path(dotlock),
(long)uid, (long)gid);
}
file_dotlock_delete(&dotlock);
return -1;
}
}
*dotlock_r = dotlock;
return fd;
}
While this function seems to create all dotlock files (not just for the .subscribtions file) this means that on same NFS(4) file systems dotlocking is actually not working.
The linux man page of chown(3) (in place of fchown(3)) says:
-----------------------------8<-------------------------------- If owner or group is specified as ( uid_t)-1 or ( gid_t)-1, respectively, the corresponding ID of the file shall not be changed. If both owner and group are -1, the times need not be updated. Upon successful completion, chown() shall mark for update the st_ctime field of the file. ------------------->8------------------------------------------
Is my understanding of these sentences correct? "If owner and group are -1, nothing is done?"
In this case it should be save to skip the call, shouldn't it?
Ralf
--
Dipl.-Inform. (FH) Ralf Becker Rechenzentrum (r/ft) der FH Trier (Network|Mail|Web|Firewall) University of applied sciences Administrator Schneidershof, D-54293 Trier
Mail: beckerr@fh-trier.de Fon: +49 651 8103 499 Web: http://www.fh-trier.de/~beckerr Fax: +49 651 8103 214 PubKey: http://www.fh-trier.de/~beckerr Crypto: GnuPG, S/MIME
Wenn Gott gewollt haette, dass E-Mail in HTML geschrieben wuerden, endeten Gebete traditionell mit </amen>. (Tom Listen)