projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
progname in gettext has changed.
[gnulib.git]
/
lib
/
backupfile.c
diff --git
a/lib/backupfile.c
b/lib/backupfile.c
index
559b4bd
..
34bde3c
100644
(file)
--- a/
lib/backupfile.c
+++ b/
lib/backupfile.c
@@
-1,5
+1,7
@@
/* backupfile.c -- make Emacs style backup file names
/* backupfile.c -- make Emacs style backup file names
- Copyright (C) 1990-1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+
+ Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+ 1999, 2000, 2001, 2002, 2003 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
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,11
+25,8
@@
# include <config.h>
#endif
# include <config.h>
#endif
-#include <argmatch.h>
-#include <backupfile.h>
-
+#include <stddef.h>
#include <stdio.h>
#include <stdio.h>
-#include <sys/types.h>
#if HAVE_STRING_H
# include <string.h>
#else
#if HAVE_STRING_H
# include <string.h>
#else
@@
-58,10
+57,8
@@
# define CLOSEDIR(d) closedir (d)
#endif
# define CLOSEDIR(d) closedir (d)
#endif
-#if
STDC_HEADERS
+#if
HAVE_STDLIB_H
# include <stdlib.h>
# include <stdlib.h>
-#else
-char *malloc ();
#endif
#ifndef HAVE_DECL_GETENV
#endif
#ifndef HAVE_DECL_GETENV
@@
-71,7
+68,12
@@
char *malloc ();
char *getenv ();
#endif
char *getenv ();
#endif
-char *base_name PARAMS ((char const *));
+#ifndef HAVE_DECL_MALLOC
+"this configure-time declaration test was not run"
+#endif
+#if !HAVE_DECL_MALLOC
+char *malloc ();
+#endif
#if HAVE_DIRENT_H || HAVE_NDIR_H || HAVE_SYS_DIR_H || HAVE_SYS_NDIR_H
# define HAVE_DIR 1
#if HAVE_DIRENT_H || HAVE_NDIR_H || HAVE_SYS_DIR_H || HAVE_SYS_NDIR_H
# define HAVE_DIR 1
@@
-79,12
+81,8
@@
char *base_name PARAMS ((char const *));
# define HAVE_DIR 0
#endif
# define HAVE_DIR 0
#endif
-#if HAVE_LIMITS_H
-# include <limits.h>
-#endif
-#ifndef CHAR_BIT
-# define CHAR_BIT 8
-#endif
+#include <limits.h>
+
/* Upper bound on the string length of an integer converted to string.
302 / 1000 is ceil (log10 (2.0)). Subtract 1 for the sign bit;
add 1 for integer division truncation; add 1 more for a minus sign. */
/* Upper bound on the string length of an integer converted to string.
302 / 1000 is ceil (log10 (2.0)). Subtract 1 for the sign bit;
add 1 for integer division truncation; add 1 more for a minus sign. */
@@
-94,10
+92,9
@@
char *base_name PARAMS ((char const *));
- Its arg may be any int or unsigned int; it need not be an unsigned char.
- It's guaranteed to evaluate its argument exactly once.
- It's typically faster.
- Its arg may be any int or unsigned int; it need not be an unsigned char.
- It's guaranteed to evaluate its argument exactly once.
- It's typically faster.
- Posix 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that
- only '0' through '9' are digits. Prefer ISDIGIT to isdigit unless
- it's important to use the locale's definition of `digit' even when the
- host does not conform to Posix. */
+ POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
+ ISDIGIT_LOCALE unless it's important to use the locale's definition
+ of `digit' even when the host does not conform to POSIX. */
#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
#if D_INO_IN_DIRENT
#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
#if D_INO_IN_DIRENT
@@
-106,12
+103,16
@@
char *base_name PARAMS ((char const *));
# define REAL_DIR_ENTRY(dp) 1
#endif
# 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 = "~";
/* The extension added to file names to produce a simple (as opposed
to numbered) backup file name. */
const char *simple_backup_suffix = "~";
-static int max_backup_version
PARAMS ((const char *, const char *)
);
-static int version_number
PARAMS ((const char *, const char *, size_t)
);
+static int max_backup_version
(const char *, const char *
);
+static int version_number
(const char *, const char *, size_t
);
/* Return the name of the new backup file for file FILE,
allocated with malloc. Return 0 if out of memory.
/* Return the name of the new backup file for file FILE,
allocated with malloc. Return 0 if out of memory.
@@
-132,29
+133,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;
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)
{
if (s)
{
- strcpy (s, file);
-
#if HAVE_DIR
if (backup_type != simple)
{
int highest_backup;
#if HAVE_DIR
if (backup_type != simple)
{
int highest_backup;
- size_t dir
_len = base_name (s) - s
;
+ size_t dir
len = 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;
}
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 */
}
#endif /* HAVE_DIR */
+ strcpy (s, file);
addext (s, suffix, '~');
}
return s;
addext (s, suffix, '~');
}
return s;
@@
-181,7
+184,7
@@
max_backup_version (const char *file, const char *dir)
return 0;
highest_version = 0;
return 0;
highest_version = 0;
- file_name_length =
str
len (file);
+ file_name_length =
base_
len (file);
while ((dp = readdir (dirp)) != 0)
{
while ((dp = readdir (dirp)) != 0)
{