mirror of
https://github.com/git/git
synced 2024-08-25 10:45:59 +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]
|
||||
<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[]
|
||||
|
|
35
entry.c
35
entry.c
|
@ -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))
|
||||
if (errno == EEXIST && state->force &&
|
||||
!unlink(buf) && !mkdir(buf, 0777))
|
||||
continue;
|
||||
if (!stat(buf, &st) && S_ISDIR(st.st_mode))
|
||||
continue; /* ok */
|
||||
}
|
||||
die("cannot create directory at %s", buf);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue