Mercurial > hg > octave-lojdl > gnulib-hg
changeset 3240:e278594ae5d4
(base_name): Remove; now in dirname.h.
Include <dirname.h> 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.
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Sat, 12 May 2001 14:20:43 +0000 |
parents | 8146aedc0fe9 |
children | 3de6cd0813b1 |
files | lib/backupfile.c |
diffstat | 1 files changed, 16 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- 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 <config.h> #endif -#include <argmatch.h> -#include <backupfile.h> - #include <stdio.h> #include <sys/types.h> #if HAVE_STRING_H @@ -76,8 +74,6 @@ 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 @@ # define REAL_DIR_ENTRY(dp) 1 #endif +#include <argmatch.h> +#include <backupfile.h> +#include <dirname.h> + /* 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 @@ 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 @@ return 0; highest_version = 0; - file_name_length = strlen (file); + file_name_length = base_len (file); while ((dp = readdir (dirp)) != 0) {