errors. */
while (stat(path, &st) < 0) {
if (errno != ENOENT) {
- fs_set_error(file->file.event, "stat(%s) failed: %m", path);
+ fs_set_error_errno(file->file.event,
+ "stat(%s) failed: %m", path);
return -1;
}
p = strrchr(path, '/');
else if (errno == EEXIST)
return 1;
else {
- fs_set_error(file->file.event, "mkdir_parents(%s) failed: %m", dir);
+ fs_set_error_errno(file->file.event,
+ "mkdir_parents(%s) failed: %m", dir);
return -1;
}
}
/* some other not-unexpected error */
break;
} else {
- fs_set_error(file->file.event, "rmdir(%s) failed: %m", path);
+ fs_set_error_errno(file->file.event,
+ "rmdir(%s) failed: %m", path);
return -1;
}
}
try_count++;
}
if (fd == -1) {
- fs_set_error(file->file.event, "safe_mkstemp(%s) failed: %m", str_c(str));
+ fs_set_error_errno(file->file.event,
+ "safe_mkstemp(%s) failed: %m", str_c(str));
return -1;
}
file->temp_path = i_strdup(str_c(str));
case FS_OPEN_MODE_READONLY:
file->fd = open(path, O_RDONLY);
if (file->fd == -1)
- fs_set_error(file->file.event, "open(%s) failed: %m", path);
+ fs_set_error_errno(file->file.event,
+ "open(%s) failed: %m", path);
break;
case FS_OPEN_MODE_APPEND:
file->fd = open(path, O_RDWR | O_APPEND);
if (file->fd == -1)
- fs_set_error(file->file.event, "open(%s) failed: %m", path);
+ fs_set_error_errno(file->file.event,
+ "open(%s) failed: %m", path);
break;
case FS_OPEN_MODE_CREATE_UNIQUE_128:
case FS_OPEN_MODE_CREATE:
if (file->seek_to_beginning) {
file->seek_to_beginning = FALSE;
if (lseek(file->fd, 0, SEEK_SET) < 0) {
- fs_set_error(_file->event, "lseek(%s, 0) failed: %m",
- file->full_path);
+ fs_set_error_errno(_file->event,
+ "lseek(%s, 0) failed: %m",
+ file->full_path);
return -1;
}
}
ret = read(file->fd, buf, size);
if (ret < 0)
- fs_set_error(_file->event, "read(%s) failed: %m", file->full_path);
+ fs_set_error_errno(_file->event, "read(%s) failed: %m",
+ file->full_path);
fs_posix_file_close(_file);
return ret;
}
try_count++;
}
if (ret < 0) {
- fs_set_error(file->file.event, "link(%s, %s) failed: %m",
- file->temp_path, file->full_path);
+ fs_set_error_errno(file->file.event, "link(%s, %s) failed: %m",
+ file->temp_path, file->full_path);
}
return ret;
}
if ((file->open_flags & FS_OPEN_FLAG_FSYNC) != 0 &&
!fs->disable_fsync) {
if (fdatasync(file->fd) < 0) {
- fs_set_error(file->file.event, "fdatasync(%s) failed: %m",
- file->full_path);
+ fs_set_error_errno(file->file.event,
+ "fdatasync(%s) failed: %m",
+ file->full_path);
return -1;
}
}
i_fatal("gettimeofday() failed: %m");
tv[1] = tv[0];
if ((utimes(file->temp_path, tv)) < 0) {
- fs_set_error(file->file.event, "utimes(%s) failed: %m",
- file->temp_path);
+ fs_set_error_errno(file->file.event,
+ "utimes(%s) failed: %m",
+ file->temp_path);
return -1;
}
}
ret = fs_posix_write_finish_link(file);
old_errno = errno;
if (unlink(file->temp_path) < 0) {
- fs_set_error(file->file.event, "unlink(%s) failed: %m",
- file->temp_path);
+ fs_set_error_errno(file->file.event,
+ "unlink(%s) failed: %m",
+ file->temp_path);
}
errno = old_errno;
if (ret < 0) {
try_count++;
}
if (ret < 0) {
- fs_set_error(file->file.event, "rename(%s, %s) failed: %m",
- file->temp_path, file->full_path);
+ fs_set_error_errno(file->file.event,
+ "rename(%s, %s) failed: %m",
+ file->temp_path, file->full_path);
return -1;
}
break;
if (file->open_mode != FS_OPEN_MODE_APPEND) {
if (write_full(file->fd, data, size) < 0) {
- fs_set_error(_file->event, "write(%s) failed: %m",
- file->full_path);
+ fs_set_error_errno(_file->event, "write(%s) failed: %m",
+ file->full_path);
return -1;
}
return fs_posix_write_finish(file);
/* atomic append - it should either succeed or fail */
ret = write(file->fd, data, size);
if (ret < 0) {
- fs_set_error(_file->event, "write(%s) failed: %m", file->full_path);
+ fs_set_error_errno(_file->event, "write(%s) failed: %m",
+ file->full_path);
return -1;
}
if ((size_t)ret != size) {
&fs_lock.file_lock);
}
if (ret < 0) {
- fs_set_error(_file->event, "flock(%s) failed: %m",
- file->full_path);
+ fs_set_error_errno(_file->event, "flock(%s) failed: %m",
+ file->full_path);
}
#endif
break;
DOTLOCK_CREATE_FLAG_NONBLOCK,
&fs_lock.dotlock);
if (ret < 0) {
- fs_set_error(_file->event,
- "file_dotlock_create(%s) failed: %m",
- file->full_path);
+ fs_set_error_errno(_file->event,
+ "file_dotlock_create(%s) failed: %m",
+ file->full_path);
}
break;
}
if (stat(file->full_path, &st) < 0) {
if (errno != ENOENT) {
- fs_set_error(_file->event, "stat(%s) failed: %m",
- file->full_path);
+ fs_set_error_errno(_file->event, "stat(%s) failed: %m",
+ file->full_path);
return -1;
}
return 0;
fs-sis after fs_copy(). */
if (file->fd != -1 && _file->output == NULL) {
if (fstat(file->fd, st_r) < 0) {
- fs_set_error(_file->event, "fstat(%s) failed: %m", file->full_path);
+ fs_set_error_errno(_file->event, "fstat(%s) failed: %m",
+ file->full_path);
return -1;
}
} else {
if (stat(file->full_path, st_r) < 0) {
- fs_set_error(_file->event, "stat(%s) failed: %m", file->full_path);
+ fs_set_error_errno(_file->event, "stat(%s) failed: %m",
+ file->full_path);
return -1;
}
}
try_count++;
}
if (ret < 0) {
- fs_set_error(_src->event, "link(%s, %s) failed: %m",
- src->full_path, dest->full_path);
+ fs_set_error_errno(_src->event, "link(%s, %s) failed: %m",
+ src->full_path, dest->full_path);
return -1;
}
return 0;
try_count++;
}
if (ret < 0) {
- fs_set_error(_src->event, "rename(%s, %s) failed: %m",
- src->full_path, dest->full_path);
+ fs_set_error_errno(_src->event, "rename(%s, %s) failed: %m",
+ src->full_path, dest->full_path);
return -1;
}
return 0;
if (unlink(file->full_path) < 0) {
if (!UNLINK_EISDIR(errno)) {
- fs_set_error(_file->event, "unlink(%s) failed: %m", file->full_path);
+ fs_set_error_errno(_file->event, "unlink(%s) failed: %m",
+ file->full_path);
return -1;
}
/* attempting to delete a directory. convert it to rmdir()
automatically. */
if (rmdir(file->full_path) < 0) {
- fs_set_error(_file->event, "rmdir(%s) failed: %m", file->full_path);
+ fs_set_error_errno(_file->event, "rmdir(%s) failed: %m",
+ file->full_path);
return -1;
}
}
iter->dir = opendir(iter->path);
if (iter->dir == NULL && errno != ENOENT) {
iter->err = errno;
- fs_set_error(_iter->event, "opendir(%s) failed: %m", iter->path);
+ fs_set_error_errno(_iter->event,
+ "opendir(%s) failed: %m", iter->path);
}
}
}
if (errno != 0) {
iter->err = errno;
- fs_set_error(_iter->event, "readdir(%s) failed: %m", iter->path);
+ fs_set_error_errno(_iter->event,
+ "readdir(%s) failed: %m", iter->path);
}
return NULL;
}
if (iter->dir != NULL && closedir(iter->dir) < 0 && iter->err == 0) {
iter->err = errno;
- fs_set_error(_iter->event, "closedir(%s) failed: %m", iter->path);
+ fs_set_error_errno(_iter->event,
+ "closedir(%s) failed: %m", iter->path);
}
if (iter->err != 0) {
errno = iter->err;