Thread (183 messages) 183 messages, 9 authors, 2022-06-11

Re: [PATCH v7 3/5] object-file.c: refactor write_loose_object() to reuse in stream version

From: Jiang Xin <hidden>
Date: 2021-12-22 12:02:22

On Wed, Dec 22, 2021 at 8:40 AM Ævar Arnfjörð Bjarmason
[off-list ref] wrote:

On Tue, Dec 21 2021, Han Xin wrote:
quoted
From: Han Xin <redacted>
[...]
@@ -1854,17 +1876,48 @@ static int create_tmpfile(struct strbuf *tmp, const char *filename)
              strbuf_reset(tmp);
              strbuf_add(tmp, filename, dirlen - 1);
              if (mkdir(tmp->buf, 0777) && errno != EEXIST)
-                     return -1;
+                     break;
              if (adjust_shared_perm(tmp->buf))
-                     return -1;
+                     break;

              /* Try again */
              strbuf_addstr(tmp, "/tmp_obj_XXXXXX");
              fd = git_mkstemp_mode(tmp->buf, 0444);
+     } while (0);
+
+     if (fd < 0 && !(flags & HASH_SILENT)) {
+             if (errno == EACCES)
+                     return error(_("insufficient permission for adding an "
+                                    "object to repository database %s"),
+                                  get_object_directory());
This should be an error_errno() instead, ...
We already know the errno (EACCESS) and output a decent error message,
so using error() is OK.  BTW, it's just a refactor by copy & paste.
quoted
+             else
+                     return error_errno(_("unable to create temporary file"));
...and we can just fold this whole if/else into one condition with a
briefer message, e.g.:

    error_errno(_("unable to add object to '%s'"), get_object_directory());

Or whatever, unless there's another bug here where you inverted these
conditions, and the "else" really should not use "error_errno" but
"error".... (I don't know...)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help