aboutsummaryrefslogtreecommitdiff
path: root/setup.c
diff options
context:
space:
mode:
authorMartin Langhoff <martin@catalyst.net.nz>2006-05-01 10:20:56 +1200
committerMartin Langhoff <martin@catalyst.net.nz>2006-05-01 10:20:56 +1200
commite660e3997fbad830e5723336d61883f3a50dbc92 (patch)
tree0c02dced98df9982415c8328e8c07c1001e3dc31 /setup.c
parent992793c832acfd98107068d90b886643f0344d04 (diff)
parent66ae0c7702e68765dad17aa05c5d9255d999216c (diff)
downloadgit-e660e3997fbad830e5723336d61883f3a50dbc92.tar.xz
Merge with git://kernel.org/pub/scm/git/git.git
Diffstat (limited to 'setup.c')
-rw-r--r--setup.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/setup.c b/setup.c
index 36ede3d874..cce9bb8069 100644
--- a/setup.c
+++ b/setup.c
@@ -62,6 +62,29 @@ const char *prefix_filename(const char *pfx, int pfx_len, const char *arg)
return path;
}
+/*
+ * Verify a filename that we got as an argument for a pathspec
+ * entry. Note that a filename that begins with "-" never verifies
+ * as true, because even if such a filename were to exist, we want
+ * it to be preceded by the "--" marker (or we want the user to
+ * use a format like "./-filename")
+ */
+void verify_filename(const char *prefix, const char *arg)
+{
+ const char *name;
+ struct stat st;
+
+ if (*arg == '-')
+ die("bad flag '%s' used after filename", arg);
+ name = prefix ? prefix_filename(prefix, strlen(prefix), arg) : 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("'%s': %s", arg, strerror(errno));
+}
+
const char **get_pathspec(const char *prefix, const char **pathspec)
{
const char *entry = *pathspec;