diff options
author | Junio C Hamano <gitster@pobox.com> | 2007-07-18 17:00:36 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-07-18 17:00:36 -0700 |
commit | c1c10a3f272ec0908e63bc105a5ffe94c1279fba (patch) | |
tree | e81e4266bdc05f7015507d89aa357e8cc2005308 | |
parent | 726f9bced9717fb8b3c1e91228be1cdce514a98e (diff) | |
parent | 281a53bb79786a6d7e54f9715cc8ad46fc2bdb0e (diff) | |
download | git-c1c10a3f272ec0908e63bc105a5ffe94c1279fba.tar.gz |
Merge branch 'maint'
* maint:
Force listingblocks to be monospaced in manpages
Do not expect unlink(2) to fail on a directory.
-rw-r--r-- | Documentation/asciidoc.conf | 6 | ||||
-rw-r--r-- | entry.c | 37 |
2 files changed, 36 insertions, 7 deletions
diff --git a/Documentation/asciidoc.conf b/Documentation/asciidoc.conf index 6b6220dfdb..af5b1558a6 100644 --- a/Documentation/asciidoc.conf +++ b/Documentation/asciidoc.conf @@ -27,7 +27,13 @@ ifdef::backend-docbook[] [listingblock] <example><title>{title}</title> <literallayout> +ifdef::doctype-manpage[] + .ft C +endif::doctype-manpage[] | +ifdef::doctype-manpage[] + .ft +endif::doctype-manpage[] </literallayout> {title#}</example> endif::backend-docbook[] @@ -8,17 +8,40 @@ static void create_directories(const char *path, const struct checkout *state) const char *slash = path; while ((slash = strchr(slash+1, '/')) != NULL) { + struct stat st; + int stat_status; + len = slash - path; memcpy(buf, path, len); buf[len] = 0; + + if (len <= state->base_dir_len) + /* + * checkout-index --prefix=<dir>; <dir> is + * allowed to be a symlink to an existing + * directory. + */ + stat_status = stat(buf, &st); + else + /* + * if there currently is a symlink, we would + * want to replace it with a real directory. + */ + stat_status = lstat(buf, &st); + + if (!stat_status && S_ISDIR(st.st_mode)) + continue; /* ok, it is already a directory. */ + + /* + * We know stat_status == 0 means something exists + * there and this mkdir would fail, but that is an + * error codepath; we do not care, as we unlink and + * mkdir again in such a case. + */ if (mkdir(buf, 0777)) { - if (errno == EEXIST) { - struct stat st; - if (len > state->base_dir_len && state->force && !unlink(buf) && !mkdir(buf, 0777)) - continue; - if (!stat(buf, &st) && S_ISDIR(st.st_mode)) - continue; /* ok */ - } + if (errno == EEXIST && state->force && + !unlink(buf) && !mkdir(buf, 0777)) + continue; die("cannot create directory at %s", buf); } } |