X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=entry.c;h=6c47c3a3e1acb8badaadad42dfe3d0bd7a06cac3;hb=5b5d4d9e1b31997b3179e6a253d47b7eea03d0fa;hp=b8426dbd0dae619b9f2023f9cf46f4d8c3df0a24;hpb=c1067050ce58b5b39f528fe634732da858664603;p=git.git diff --git a/entry.c b/entry.c index b8426dbd..6c47c3a3 100644 --- a/entry.c +++ b/entry.c @@ -60,7 +60,7 @@ static void remove_subtree(const char *path) static int create_file(const char *path, unsigned int mode) { mode = (mode & 0100) ? 0777 : 0666; - return open(path, O_WRONLY | O_TRUNC | O_CREAT | O_EXCL, mode); + return open(path, O_WRONLY | O_CREAT | O_EXCL, mode); } static int write_entry(struct cache_entry *ce, const char *path, struct checkout *state) @@ -70,7 +70,6 @@ static int write_entry(struct cache_entry *ce, const char *path, struct checkout unsigned long size; long wrote; char type[20]; - char target[1024]; new = read_sha1_file(ce->sha1, type, &size); if (!new || strcmp(type, "blob")) { @@ -94,12 +93,10 @@ static int write_entry(struct cache_entry *ce, const char *path, struct checkout return error("git-checkout-index: unable to write file %s", path); break; case S_IFLNK: - memcpy(target, new, size); - target[size] = '\0'; - if (symlink(target, path)) { + if (symlink(new, path)) { free(new); - return error("git-checkout-index: unable to create symlink %s (%s)", - path, strerror(errno)); + return error("git-checkout-index: unable to create " + "symlink %s (%s)", path, strerror(errno)); } free(new); break; @@ -132,7 +129,7 @@ int checkout_entry(struct cache_entry *ce, struct checkout *state) if (!state->force) { if (!state->quiet) fprintf(stderr, "git-checkout-index: %s already exists\n", path); - return 0; + return -1; } /*