author | Junio C Hamano <gitster@pobox.com> | |
Thu, 19 Jul 2007 00:00:36 +0000 (17:00 -0700) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Thu, 19 Jul 2007 00:00:36 +0000 (17:00 -0700) |
* maint:
Force listingblocks to be monospaced in manpages
Do not expect unlink(2) to fail on a directory.
Force listingblocks to be monospaced in manpages
Do not expect unlink(2) to fail on a directory.
1 | 2 | |||
---|---|---|---|---|
Documentation/asciidoc.conf | patch | | diff1 | | diff2 | | blob | history |
entry.c | patch | | diff1 | | diff2 | | blob | history |
diff --combined Documentation/asciidoc.conf
index 6b6220dfdbd6cacb8a05be4995279bbd0487fada,a0d8459e21e8ba91df8f3458c49ba1cd825d7706..af5b1558a63219a3eac2570e1cecc97e3008f96f
[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[]
[gitlink-inlinemacro]
<a href="{target}.html">{target}{0?({0})}</a>
endif::backend-xhtml11[]
-
-
diff --combined entry.c
index c540ae13e858685faa8dbbada5b064074235ae6d,23687af7d5d140fa3ddc7a884acfa8a3412ed869..0625112339deee7418571b5d513f923d6f00092b
+++ b/entry.c
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);
}
}
struct dirent *de;
char pathbuf[PATH_MAX];
char *name;
-
+
if (!dir)
die("cannot opendir %s (%s)", path, strerror(errno));
strcpy(pathbuf, path);
"symlink %s (%s)", path, strerror(errno));
}
break;
- case S_IFDIRLNK:
+ case S_IFGITLINK:
if (to_tempfile)
return error("git-checkout-index: cannot create temporary subproject %s", path);
if (mkdir(path, 0777) < 0)
unlink(path);
if (S_ISDIR(st.st_mode)) {
/* If it is a gitlink, leave it alone! */
- if (S_ISDIRLNK(ntohl(ce->ce_mode)))
+ if (S_ISGITLINK(ntohl(ce->ce_mode)))
return 0;
if (!state->force)
return error("%s is a directory", path);