projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Optionally support old diffs
[git.git]
/
sha1_file.c
diff --git
a/sha1_file.c
b/sha1_file.c
index
20f6419
..
64cf245
100644
(file)
--- a/
sha1_file.c
+++ b/
sha1_file.c
@@
-6,8
+6,6
@@
* This handles basic git sha1 object files - packing, unpacking,
* creation etc.
*/
* This handles basic git sha1 object files - packing, unpacking,
* creation etc.
*/
-#include <sys/types.h>
-#include <dirent.h>
#include "cache.h"
#include "delta.h"
#include "pack.h"
#include "cache.h"
#include "delta.h"
#include "pack.h"
@@
-74,6
+72,8
@@
int adjust_shared_perm(const char *path)
int safe_create_leading_directories(char *path)
{
char *pos = path;
int safe_create_leading_directories(char *path)
{
char *pos = path;
+ struct stat st;
+
if (*pos == '/')
pos++;
if (*pos == '/')
pos++;
@@
-82,12
+82,17
@@
int safe_create_leading_directories(char *path)
if (!pos)
break;
*pos = 0;
if (!pos)
break;
*pos = 0;
- if (mkdir(path, 0777) < 0) {
- if (errno != EEXIST) {
+ if (!stat(path, &st)) {
+ /* path exists */
+ if (!S_ISDIR(st.st_mode)) {
*pos = '/';
*pos = '/';
- return -
1
;
+ return -
3
;
}
}
}
}
+ else if (mkdir(path, 0777)) {
+ *pos = '/';
+ return -1;
+ }
else if (adjust_shared_perm(path)) {
*pos = '/';
return -2;
else if (adjust_shared_perm(path)) {
*pos = '/';
return -2;
@@
-825,7
+830,7
@@
void packed_object_info_detail(struct pack_entry *e,
char *type,
unsigned long *size,
unsigned long *store_size,
char *type,
unsigned long *size,
unsigned long *store_size,
- int *delta_chain_length,
+
unsigned
int *delta_chain_length,
unsigned char *base_sha1)
{
struct packed_git *p = e->p;
unsigned char *base_sha1)
{
struct packed_git *p = e->p;
@@
-839,7
+844,7
@@
void packed_object_info_detail(struct pack_entry *e,
if (kind != OBJ_DELTA)
*delta_chain_length = 0;
else {
if (kind != OBJ_DELTA)
*delta_chain_length = 0;
else {
- int chain_length = 0;
+
unsigned
int chain_length = 0;
memcpy(base_sha1, pack, 20);
do {
struct pack_entry base_ent;
memcpy(base_sha1, pack, 20);
do {
struct pack_entry base_ent;