rebase: consistent error messages for staged and unstaged changes.
[gitweb.git] / hash-object.c
index a4d127cf78013ca43339c5493b7f7ef90b2145a8..9455dd0709aeb81436ef2e3e36422578d66ce8e7 100644 (file)
@@ -8,6 +8,7 @@
 #include "blob.h"
 #include "quote.h"
 #include "parse-options.h"
+#include "exec_cmd.h"
 
 static void hash_fd(int fd, const char *type, int write_object, const char *path)
 {
@@ -28,16 +29,14 @@ static void hash_object(const char *path, const char *type, int write_object,
        int fd;
        fd = open(path, O_RDONLY);
        if (fd < 0)
-               die("Cannot open %s", path);
+               die_errno("Cannot open '%s'", path);
        hash_fd(fd, type, write_object, vpath);
 }
 
 static void hash_stdin_paths(const char *type, int write_objects)
 {
-       struct strbuf buf, nbuf;
+       struct strbuf buf = STRBUF_INIT, nbuf = STRBUF_INIT;
 
-       strbuf_init(&buf, 0);
-       strbuf_init(&nbuf, 0);
        while (strbuf_getline(&buf, stdin, '\n') != EOF) {
                if (buf.buf[0] == '"') {
                        strbuf_reset(&nbuf);
@@ -83,9 +82,10 @@ int main(int argc, const char **argv)
 
        type = blob_type;
 
-       git_config(git_default_config, NULL);
+       git_extract_argv0_path(argv[0]);
 
-       argc = parse_options(argc, argv, hash_object_options, hash_object_usage, 0);
+       argc = parse_options(argc, argv, NULL, hash_object_options,
+                            hash_object_usage, 0);
 
        if (write_object) {
                prefix = setup_git_directory();
@@ -94,6 +94,8 @@ int main(int argc, const char **argv)
                        vpath = prefix_filename(prefix, prefix_length, vpath);
        }
 
+       git_config(git_default_config, NULL);
+
        if (stdin_paths) {
                if (hashstdin)
                        errstr = "Can't use --stdin-paths with --stdin";
@@ -112,7 +114,7 @@ int main(int argc, const char **argv)
        }
 
        if (errstr) {
-               error (errstr);
+               error("%s", errstr);
                usage_with_options(hash_object_usage, hash_object_options);
        }