Mercurial > gnulib
view lib/backup-rename.c @ 39948:c01fb99adfe2
backupfile: new dir_fd args
New module opendirat with code taken from fts.
Use this module to let backupfile use a directory file descriptor.
* NEWS: Document the incompatible change.
* lib/backup-find.c (find_backup_file_name):
* lib/backup-rename.c (backup_file_rename):
New arg DIR_FD.
* lib/backupfile.c: Include stdint.h, for SIZE_MAX.
(SIZE_MAX): Remove.
Include opendirat.h rather than dirent--.h.
(check_extension): New args DIR_FD and BASE_MAX. All callers changed.
(numbered_backup): New args DIR_FD and PNEW_FD. All callers changed.
(backupfile_internal): New arg DIR_FD. All callers changed.
* lib/fts.c: Include opendirat.h.
(opendirat): Move to opendirat.c.
* lib/opendirat.c, lib/opendirat.h, modules/opendirat: New files.
* modules/backupfile (Depends-on): Remove dirfd, opendir.
Add opendirat.
* modules/fts (Depends-on): Remove fdopendir, openat-safer.
Add opendirat.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Tue, 23 Oct 2018 19:10:21 -0700 |
parents | 10eb9086bea0 |
children | b06060465f09 |
line wrap: on
line source
/* Rename a file to a backup name, Emacs style. Copyright 2017-2018 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. */ #include <config.h> #include "backup-internal.h" /* Relative to DIR_FD, rename the existing file FILE to a backup name, allocated with malloc, and return the backup name. On failure return a null pointer, setting errno. Do not call this function if backup_type == no_backups. */ char * backup_file_rename (int dir_fd, char const *file, enum backup_type backup_type) { return backupfile_internal (dir_fd, file, backup_type, true); }