diff options
author | Junio C Hamano <junkio@cox.net> | 2006-04-27 12:51:08 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-04-27 12:51:08 -0700 |
commit | c9a11205f73d7d39aab8b70169d73948d4a9f04f (patch) | |
tree | 0c8628c034b9ca4eff6fd093d0e6fc18fc225962 /setup.c | |
parent | Fix mismerged update-index from jc/cache-tree branch. (diff) | |
parent | revision parsing: make "rev -- paths" checks stronger. (diff) | |
download | tgif-c9a11205f73d7d39aab8b70169d73948d4a9f04f.tar.xz |
Merge branch 'jc/pathcheck' into next
* jc/pathcheck:
revision parsing: make "rev -- paths" checks stronger.
Diffstat (limited to 'setup.c')
-rw-r--r-- | setup.c | 24 |
1 files changed, 22 insertions, 2 deletions
@@ -80,11 +80,31 @@ void verify_filename(const char *prefix, const char *arg) if (!lstat(name, &st)) return; if (errno == ENOENT) - die("ambiguous argument '%s': unknown revision or filename\n" - "Use '--' to separate filenames from revisions", arg); + die("ambiguous argument '%s': unknown revision or path not in the working tree.\n" + "Use '--' to separate paths from revisions", arg); die("'%s': %s", arg, strerror(errno)); } +/* + * Opposite of the above: the command line did not have -- marker + * and we parsed the arg as a refname. It should not be interpretable + * as a filename. + */ +void verify_non_filename(const char *prefix, const char *arg) +{ + const char *name; + struct stat st; + + if (*arg == '-') + return; /* flag */ + name = prefix ? prefix_filename(prefix, strlen(prefix), arg) : arg; + if (!lstat(name, &st)) + die("ambiguous argument '%s': both revision and filename\n" + "Use '--' to separate filenames from revisions", arg); + if (errno != ENOENT) + die("'%s': %s", arg, strerror(errno)); +} + const char **get_pathspec(const char *prefix, const char **pathspec) { const char *entry = *pathspec; |