diff options
author | Martin Langhoff <martin@catalyst.net.nz> | 2006-05-03 22:27:33 +1200 |
---|---|---|
committer | Martin Langhoff <martin@catalyst.net.nz> | 2006-05-03 22:27:33 +1200 |
commit | 24e12579fc4d6886d5e62aeab53eefdaeaeaffcd (patch) | |
tree | 2ec7f7dd1d93bd798c531cfd09a65be1e8ba717b /setup.c | |
parent | e660e3997fbad830e5723336d61883f3a50dbc92 (diff) | |
parent | 782b3b6aafe8d2d270a5f6153c183e1bde7a030a (diff) | |
download | git-24e12579fc4d6886d5e62aeab53eefdaeaeaffcd.tar.gz |
Merge with git://kernel.org/pub/scm/git/git.git
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; |