Skip to content

Commit

Permalink
Nicer error messages in case saving an object to db goes wrong
Browse files Browse the repository at this point in the history
Currently the error e.g. when pushing to a read-only repository is quite
confusing, this attempts to clean it up, unifies error reporting between
various object writers and uses error() on couple more places.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Petr Baudis authored and Junio C Hamano committed Nov 9, 2006
1 parent 0623421 commit 916d081
Showing 1 changed file with 12 additions and 9 deletions.
21 changes: 12 additions & 9 deletions sha1_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -1420,8 +1420,7 @@ int move_temp_to_file(const char *tmpfile, const char *filename)
unlink(tmpfile);
if (ret) {
if (ret != EEXIST) {
fprintf(stderr, "unable to write sha1 filename %s: %s\n", filename, strerror(ret));
return -1;
return error("unable to write sha1 filename %s: %s\n", filename, strerror(ret));
}
/* FIXME!!! Collision check here ? */
}
Expand Down Expand Up @@ -1531,16 +1530,17 @@ int write_sha1_file(void *buf, unsigned long len, const char *type, unsigned cha
}

if (errno != ENOENT) {
fprintf(stderr, "sha1 file %s: %s\n", filename, strerror(errno));
return -1;
return error("sha1 file %s: %s\n", filename, strerror(errno));
}

snprintf(tmpfile, sizeof(tmpfile), "%s/obj_XXXXXX", get_object_directory());

fd = mkstemp(tmpfile);
if (fd < 0) {
fprintf(stderr, "unable to create temporary sha1 filename %s: %s\n", tmpfile, strerror(errno));
return -1;
if (errno == EPERM)
return error("insufficient permission for adding an object to repository database %s\n", get_object_directory());
else
return error("unable to create temporary sha1 filename %s: %s\n", tmpfile, strerror(errno));
}

/* Set it up */
Expand Down Expand Up @@ -1655,9 +1655,12 @@ int write_sha1_from_fd(const unsigned char *sha1, int fd, char *buffer,
snprintf(tmpfile, sizeof(tmpfile), "%s/obj_XXXXXX", get_object_directory());

local = mkstemp(tmpfile);
if (local < 0)
return error("Couldn't open %s for %s",
tmpfile, sha1_to_hex(sha1));
if (local < 0) {
if (errno == EPERM)
return error("insufficient permission for adding an object to repository database %s\n", get_object_directory());
else
return error("unable to create temporary sha1 filename %s: %s\n", tmpfile, strerror(errno));
}

memset(&stream, 0, sizeof(stream));

Expand Down

0 comments on commit 916d081

Please sign in to comment.