From 47bb1b5a733293a121060ac24d263095bdb4e34d Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Sat, 12 May 2001 14:20:43 +0000 Subject: [PATCH] (base_name): Remove; now in dirname.h. Include after size_t is defined. (find_backup_file_name, max_backup_version): Use base_len instead of rolling it ourselves. Handle the case of "" and (on DOS) "C:" correctly. --- lib/backupfile.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/lib/backupfile.c b/lib/backupfile.c index 100e0a53b3..0339caee24 100644 --- a/lib/backupfile.c +++ b/lib/backupfile.c @@ -1,5 +1,6 @@ /* backupfile.c -- make Emacs style backup file names - Copyright (C) 1990-1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright 1990,91,92,93,94,95,96,97,98,99,2000, 2001 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 @@ -23,9 +24,6 @@ # include #endif -#include -#include - #include #include #if HAVE_STRING_H @@ -76,8 +74,6 @@ char *getenv (); char *malloc (); #endif -char *base_name PARAMS ((char const *)); - #if HAVE_DIRENT_H || HAVE_NDIR_H || HAVE_SYS_DIR_H || HAVE_SYS_NDIR_H # define HAVE_DIR 1 #else @@ -111,6 +107,10 @@ char *base_name PARAMS ((char const *)); # define REAL_DIR_ENTRY(dp) 1 #endif +#include +#include +#include + /* The extension added to file names to produce a simple (as opposed to numbered) backup file name. */ const char *simple_backup_suffix = "~"; @@ -137,29 +137,31 @@ find_backup_file_name (const char *file, enum backup_type backup_type) if (HAVE_DIR && backup_suffix_size_max < numbered_suffix_size_max) backup_suffix_size_max = numbered_suffix_size_max; - s = malloc (file_len + backup_suffix_size_max + numbered_suffix_size_max); + s = malloc (file_len + 1 + + backup_suffix_size_max + numbered_suffix_size_max); if (s) { - strcpy (s, file); - #if HAVE_DIR if (backup_type != simple) { int highest_backup; - size_t dir_len = base_name (s) - s; + size_t dirlen = dir_len (file); - strcpy (s + dir_len, "."); - highest_backup = max_backup_version (file + dir_len, s); + memcpy (s, file, dirlen); + if (dirlen == FILESYSTEM_PREFIX_LEN (file)) + s[dirlen++] = '.'; + s[dirlen] = '\0'; + highest_backup = max_backup_version (base_name (file), s); if (! (backup_type == numbered_existing && highest_backup == 0)) { char *numbered_suffix = s + (file_len + backup_suffix_size_max); sprintf (numbered_suffix, ".~%d~", highest_backup + 1); suffix = numbered_suffix; } - strcpy (s, file); } #endif /* HAVE_DIR */ + strcpy (s, file); addext (s, suffix, '~'); } return s; @@ -186,7 +188,7 @@ max_backup_version (const char *file, const char *dir) return 0; highest_version = 0; - file_name_length = strlen (file); + file_name_length = base_len (file); while ((dp = readdir (dirp)) != 0) { -- 2.30.2