/* backupfile.c -- make Emacs style backup file names
- Copyright (C) 1990,1991,1992,1993,1995,1997 Free Software Foundation, Inc.
+ Copyright (C) 1990-1997, 1998, 1999 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
# include <limits.h>
#endif
#ifndef CHAR_BIT
-#define CHAR_BIT 8
+# define CHAR_BIT 8
#endif
/* 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;
# define REAL_DIR_ENTRY(dp) 1
#endif
-/* Which type of backup file names are generated. */
-enum backup_type backup_type = none;
-
/* The extension added to file names to produce a simple (as opposed
to numbered) backup file name. */
-const char *simple_backup_suffix = ".orig";
+const char *simple_backup_suffix = "~";
-static int max_backup_version __BACKUPFILE_P ((const char *, const char *));
-static int version_number __BACKUPFILE_P ((const char *, const char *, size_t));
+static int max_backup_version PARAMS ((const char *, const char *));
+static int version_number PARAMS ((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.
Do not call this function if backup_type == none. */
char *
-find_backup_file_name (file)
- const char *file;
+find_backup_file_name (const char *file, enum backup_type backup_type)
{
size_t backup_suffix_size_max;
size_t file_len = strlen (file);
*/
static int
-max_backup_version (file, dir)
- const char *file;
- const char *dir;
+max_backup_version (const char *file, const char *dir)
{
DIR *dirp;
struct dirent *dp;
*/
static int
-version_number (base, backup, base_length)
- const char *base;
- const char *backup;
- size_t base_length;
+version_number (const char *base, const char *backup, size_t base_length)
{
int version;
const char *p;
Unique abbreviations are accepted. */
enum backup_type
-get_version (version)
- const char *version;
+get_version (const char *version)
{
- int i;
-
+ enum backup_type type;
if (version == 0 || *version == 0)
- return numbered_existing;
- i = argmatch (version, backup_args);
- if (i < 0)
- {
- invalid_arg ("version control type", version, i);
- exit (2);
- }
- return backup_types[i];
+ type = numbered_existing;
+ else
+ XARGMATCH (&type, "version control type", version,
+ backup_args, backup_types, exit (2));
+ return type;
}