Mercurial > hg > octave-kai > gnulib-hg
changeset 1648:a3f5139f6ebe
[!HAVE_DECL_GETENV]: Declare getenv.
(backup_args): Reorder enum members.
(backup_types): Likewise.
(get_version): Take an additional parameter, `context'.
(xget_version): Like get_version, but if the `version' argument is NULL,
use the value of the envvar VERSION_CONTROL.
(base_name): Declare.
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Sat, 16 Jan 1999 15:51:21 +0000 |
parents | af020f6709a9 |
children | ec0e9143c51f |
files | lib/backupfile.c |
diffstat | 1 files changed, 40 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/backupfile.c +++ b/lib/backupfile.c @@ -64,6 +64,12 @@ char *malloc (); #endif +#ifndef HAVE_DECL_GETENV +char *getenv (); +#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 @@ -214,25 +220,49 @@ static const char * const backup_args[] = { - "never", "simple", "nil", "existing", "t", "numbered", 0 + /* In a series of synonyms, present the most meaning full first, so + that argmatch_valid be more readable. */ + "none", "off", + "simple", "never", + "existing", "nil", + "numbered", "t", + 0 }; static const enum backup_type backup_types[] = { - simple, simple, numbered_existing, numbered_existing, numbered, numbered + none, none, + simple, simple, + numbered_existing, numbered_existing, + numbered, numbered }; -/* Return the type of backup indicated by VERSION. - Unique abbreviations are accepted. */ +/* Return the type of backup specified by VERSION. + If VERSION is NULL or the empty string, return numbered_existing. + If VERSION is invalid or ambiguous, fail with a diagnostic appropriate + for the specified CONTEXT. Unambiguous abbreviations are accepted. */ enum backup_type -get_version (const char *version) +get_version (const char *context, const char *version) { - enum backup_type type; if (version == 0 || *version == 0) - type = numbered_existing; + return numbered_existing; else - XARGMATCH (&type, "version control type", version, - backup_args, backup_types, exit (2)); - return type; + return XARGMATCH (context, version, backup_args, backup_types); } + + +/* Return the type of backup specified by VERSION. + If VERSION is NULL, use the value of the envvar VERSION_CONTROL. + If the specified string is invalid or ambiguous, fail with a diagnostic + appropriate for the specified CONTEXT. + Unambiguous abbreviations are accepted. */ + +enum backup_type +xget_version (const char *context, const char *version) +{ + if (version && *version) + return get_version (context, version); + else + return get_version ("$VERSION_CONTROL", getenv ("VERSION_CONTROL")); +}