mirror of
https://github.com/git/git
synced 2024-08-25 02:35:46 +00:00
Merge branch 'maint'
* maint: Force listingblocks to be monospaced in manpages Do not expect unlink(2) to fail on a directory.
This commit is contained in:
commit
c1c10a3f27
|
@ -27,7 +27,13 @@ ifdef::backend-docbook[]
|
||||||
[listingblock]
|
[listingblock]
|
||||||
<example><title>{title}</title>
|
<example><title>{title}</title>
|
||||||
<literallayout>
|
<literallayout>
|
||||||
|
ifdef::doctype-manpage[]
|
||||||
|
.ft C
|
||||||
|
endif::doctype-manpage[]
|
||||||
|
|
|
|
||||||
|
ifdef::doctype-manpage[]
|
||||||
|
.ft
|
||||||
|
endif::doctype-manpage[]
|
||||||
</literallayout>
|
</literallayout>
|
||||||
{title#}</example>
|
{title#}</example>
|
||||||
endif::backend-docbook[]
|
endif::backend-docbook[]
|
||||||
|
|
37
entry.c
37
entry.c
|
@ -8,17 +8,40 @@ static void create_directories(const char *path, const struct checkout *state)
|
||||||
const char *slash = path;
|
const char *slash = path;
|
||||||
|
|
||||||
while ((slash = strchr(slash+1, '/')) != NULL) {
|
while ((slash = strchr(slash+1, '/')) != NULL) {
|
||||||
|
struct stat st;
|
||||||
|
int stat_status;
|
||||||
|
|
||||||
len = slash - path;
|
len = slash - path;
|
||||||
memcpy(buf, path, len);
|
memcpy(buf, path, len);
|
||||||
buf[len] = 0;
|
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 (mkdir(buf, 0777)) {
|
||||||
if (errno == EEXIST) {
|
if (errno == EEXIST && state->force &&
|
||||||
struct stat st;
|
!unlink(buf) && !mkdir(buf, 0777))
|
||||||
if (len > state->base_dir_len && state->force && !unlink(buf) && !mkdir(buf, 0777))
|
continue;
|
||||||
continue;
|
|
||||||
if (!stat(buf, &st) && S_ISDIR(st.st_mode))
|
|
||||||
continue; /* ok */
|
|
||||||
}
|
|
||||||
die("cannot create directory at %s", buf);
|
die("cannot create directory at %s", buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue