/* robustly move a file, creating new directory structures if necessary */
static int robust_move(char *src, char *dst)
{
/* robustly move a file, creating new directory structures if necessary */
static int robust_move(char *src, char *dst)
{
- if (robust_rename(src, dst, 0755) != 0 || errno != ENOENT
- || make_bak_dir(dst) < 0 || robust_rename(src, dst, 0755) != 0)
+ if (robust_rename(src, dst, 0755) < 0 && (errno != ENOENT
+ || make_bak_dir(dst) < 0 || robust_rename(src, dst, 0755) < 0))
rprintf(FERROR, "keep_backup failed: %s -> \"%s\": %s\n",
full_fname(fname), backup_dir_buf, strerror(errno));
}
rprintf(FERROR, "keep_backup failed: %s -> \"%s\": %s\n",
full_fname(fname), backup_dir_buf, strerror(errno));
}