diff options
| author | Junio C Hamano <junkio@cox.net> | 2006-04-26 17:08:00 -0700 |
|---|---|---|
| committer | Junio C Hamano <junkio@cox.net> | 2006-04-26 17:08:00 -0700 |
| commit | 69bcc43eca0f251617e3b5db5df632b24db94e92 (patch) | |
| tree | d816d41d36c73f3e665e4a2967a59abef4ce12d3 /setup.c | |
| parent | commit-tree: allow generic object name for the tree as well. (diff) | |
| parent | commit-tree.c: check_valid() microoptimization. (diff) | |
| download | git-69bcc43eca0f251617e3b5db5df632b24db94e92.tar.gz git-69bcc43eca0f251617e3b5db5df632b24db94e92.zip | |
Merge branch 'fix'
* fix:
commit-tree.c: check_valid() microoptimization.
Fix filename verification when in a subdirectory
rebase: typofix.
socksetup: don't return on set_reuse_addr() error
Diffstat (limited to 'setup.c')
| -rw-r--r-- | setup.c | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -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; |
