зеркало из https://github.com/microsoft/git.git
[PATCH] init-db.c: create and use safe_create_dir helper
Factor mkdir calls into common safe_create_dir subroutine. Signed-Off-By: Zach Welch <zw@superlucidity.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
addb315d34
Коммит
cb126d8d79
30
init-db.c
30
init-db.c
|
@ -5,6 +5,16 @@
|
|||
*/
|
||||
#include "cache.h"
|
||||
|
||||
void safe_create_dir(char *dir)
|
||||
{
|
||||
if (mkdir(dir, 0755) < 0) {
|
||||
if (errno != EEXIST) {
|
||||
perror(dir);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If you want to, you can share the DB area with any number of branches.
|
||||
* That has advantages: you can save space by sharing all the SHA1 objects.
|
||||
|
@ -16,10 +26,7 @@ int main(int argc, char **argv)
|
|||
char *sha1_dir, *path;
|
||||
int len, i;
|
||||
|
||||
if (mkdir(".git", 0755) < 0) {
|
||||
perror("unable to create .git directory");
|
||||
exit(1);
|
||||
}
|
||||
safe_create_dir(".git");
|
||||
|
||||
sha1_dir = getenv(DB_ENVIRONMENT);
|
||||
if (!sha1_dir) {
|
||||
|
@ -27,22 +34,13 @@ int main(int argc, char **argv)
|
|||
fprintf(stderr, "defaulting to local storage area\n");
|
||||
}
|
||||
len = strlen(sha1_dir);
|
||||
if (mkdir(sha1_dir, 0755) < 0) {
|
||||
if (errno != EEXIST) {
|
||||
perror(sha1_dir);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
path = malloc(len + 40);
|
||||
memcpy(path, sha1_dir, len);
|
||||
|
||||
safe_create_dir(sha1_dir);
|
||||
for (i = 0; i < 256; i++) {
|
||||
sprintf(path+len, "/%02x", i);
|
||||
if (mkdir(path, 0755) < 0) {
|
||||
if (errno != EEXIST) {
|
||||
perror(path);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
safe_create_dir(path);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче