Hash-SharedMem
view release on metacpan or search on metacpan
lib/Hash/SharedMem.xs view on Meta::CPAN
if(unlikely(new_file_id == 0)) new_file_id = 1;
} while(!likely(word_cset(allocfileid_p, old_file_id, new_file_id)));
if(unlikely(dirref_rel_stat(sh->u.live.dir, MASTER_FILENAME, &statbuf)
== -1))
shash_error_errno(sh, action);
dir_make_data_filename(filename, new_file_id);
new_fd = dirref_rel_open_cloexec(sh->u.live.dir, filename,
O_RDWR|O_CREAT|O_EXCL, 0);
if(unlikely(new_fd == -1)) shash_error_errno(sh, action);
new_ulr = unlinkfile_save(sh->u.live.dir, filename);
if(unlikely(fchown(new_fd, -1, statbuf.st_gid) == -1) &&
unlikely(errno != EPERM))
shash_error_errno(sh, action);
if(unlikely(fchmod(new_fd, statbuf.st_mode &
(S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH))
== -1))
shash_error_errno(sh, action);
if(unlikely(fchown(new_fd, statbuf.st_uid, -1) == -1) &&
unlikely(errno != EPERM))
shash_error_errno(sh, action);
new_fdr = closefd_save(new_fd);
if(unlikely(ftruncate(new_fd, new_sz) == -1)) {
/*
* A file-too-big error may be reported as either
* EFBIG or EINVAL depending on OS. The former is more
* enlightening to the user, so always report it that way.
*/
int e = errno;
( run in 0.652 second using v1.01-cache-2.11-cpan-71847e10f99 )