summaryrefslogtreecommitdiff
path: root/setup.c
diff options
context:
space:
mode:
authorMartin Langhoff <martin@catalyst.net.nz>2006-05-03 22:27:33 +1200
committerMartin Langhoff <martin@catalyst.net.nz>2006-05-03 22:27:33 +1200
commit24e12579fc4d6886d5e62aeab53eefdaeaeaffcd (patch)
tree2ec7f7dd1d93bd798c531cfd09a65be1e8ba717b /setup.c
parente660e3997fbad830e5723336d61883f3a50dbc92 (diff)
parent782b3b6aafe8d2d270a5f6153c183e1bde7a030a (diff)
downloadgit-24e12579fc4d6886d5e62aeab53eefdaeaeaffcd.tar.gz
Merge with git://kernel.org/pub/scm/git/git.git
Diffstat (limited to 'setup.c')
-rw-r--r--setup.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/setup.c b/setup.c
index cce9bb8069..fe7f884696 100644
--- a/setup.c
+++ b/setup.c
@@ -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;