cmd_init_db(): when creating directories, handle errors conservatively
authorMichael Haggerty <mhagger@alum.mit.edu>
Mon, 6 Jan 2014 13:45:26 +0000 (14:45 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 6 Jan 2014 17:34:22 +0000 (09:34 -0800)
safe_create_leading_directories_const() returns a non-zero value on
error. The old code at this calling site recognized a couple of
particular error values, and treated all other return values as
success. Instead, be more conservative: recognize the errors we are
interested in, but treat any other nonzero values as failures. This
is more robust in case somebody adds another possible return value
without telling us.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/init-db.c
index 0bc14f3c817e94a45494eec88ef7bc4bce0a6e14..ceeb138ba826a83843b3dae0d90cddcab664770a 100644 (file)
@@ -515,13 +515,14 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
                                saved = shared_repository;
                                shared_repository = 0;
                                switch (safe_create_leading_directories_const(argv[0])) {
+                               case SCLD_OK:
+                               case SCLD_PERMS:
+                                       break;
                                case SCLD_EXISTS:
                                        errno = EEXIST;
                                        /* fallthru */
-                               case SCLD_FAILED:
-                                       die_errno(_("cannot mkdir %s"), argv[0]);
-                                       break;
                                default:
+                                       die_errno(_("cannot mkdir %s"), argv[0]);
                                        break;
                                }
                                shared_repository = saved;