git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v10 00/40] libify apply and use lib in am, part 2

From
Christian Couder <christian.couder@gmail.com>
Date
Aug 8, 2016, 21:23 UTC
Message-ID
<CAP8UFD2t9PaC8hONJJuG2EUU=0NMUC1BaDDD2Hr0u21K5rhZ3Q@mail.gmail.com>
In-Reply-To
<20160808210337.5038-1-chriscool@tuxfamily.org>

On Mon, Aug 8, 2016 at 11:02 PM, Christian Couder <christian.couder@gmail.com> wrote:

>
> I will send a diff between this version and the previous one, as a
> reply to this email.
Here is the diff:
diff --git a/apply.c b/apply.c
index a73889e..2ec2a8a 100644
--- a/apply.c
+++ b/apply.c
@@ -4324,7 +4324,10 @@ static int try_create_file(const char *path,
unsigned int mode, const char *buf,
         size = nbuf.len;
         buf  = nbuf.buf;
     }
-    res = !write_or_whine_pipe(fd, buf, size, path);
+
+    res = write_in_full(fd, buf, size) < 0;
+    if (res)
+        error_errno(_("failed to write to '%s'"), path);
     strbuf_release(&nbuf);

     if (close(fd) < 0 && !res)
@@ -4626,7 +4629,7 @@ static int apply_patch(struct apply_state *state,
     int res = 0;

     state->patch_input_file = filename;
-    if (read_patch_file(&buf, fd))
+    if (read_patch_file(&buf, fd) < 0)
         return -128;
     offset = 0;
     while (offset < buf.len) {
@@ -4727,16 +4730,16 @@ static int apply_patch(struct apply_state *state,
     return res;
 }

-int apply_option_parse_exclude(const struct option *opt,
-                   const char *arg, int unset)
+static int apply_option_parse_exclude(const struct option *opt,
+                      const char *arg, int unset)
 {
     struct apply_state *state = opt->value;
     add_name_limit(state, arg, 1);
     return 0;
 }

-int apply_option_parse_include(const struct option *opt,
-                   const char *arg, int unset)
+static int apply_option_parse_include(const struct option *opt,
+                      const char *arg, int unset)
 {
     struct apply_state *state = opt->value;
     add_name_limit(state, arg, 0);
@@ -4744,9 +4747,9 @@ int apply_option_parse_include(const struct option *opt,
     return 0;
 }

-int apply_option_parse_p(const struct option *opt,
-             const char *arg,
-             int unset)
+static int apply_option_parse_p(const struct option *opt,
+                const char *arg,
+                int unset)
 {
     struct apply_state *state = opt->value;
     state->p_value = atoi(arg);
@@ -4754,8 +4757,8 @@ int apply_option_parse_p(const struct option *opt,
     return 0;
 }

-int apply_option_parse_space_change(const struct option *opt,
-                    const char *arg, int unset)
+static int apply_option_parse_space_change(const struct option *opt,
+                       const char *arg, int unset)
 {
     struct apply_state *state = opt->value;
     if (unset)
@@ -4765,8 +4768,8 @@ int apply_option_parse_space_change(const struct
option *opt,
     return 0;
 }

-int apply_option_parse_whitespace(const struct option *opt,
-                  const char *arg, int unset)
+static int apply_option_parse_whitespace(const struct option *opt,
+                     const char *arg, int unset)
 {
     struct apply_state *state = opt->value;
     state->whitespace_option = arg;
@@ -4775,8 +4778,8 @@ int apply_option_parse_whitespace(const struct
option *opt,
     return 0;
 }

-int apply_option_parse_directory(const struct option *opt,
-                 const char *arg, int unset)
+static int apply_option_parse_directory(const struct option *opt,
+                    const char *arg, int unset)
 {
     struct apply_state *state = opt->value;
     strbuf_reset(&state->root);
diff --git a/apply.h b/apply.h
index 27a3a7a..e2b89e8 100644
--- a/apply.h
+++ b/apply.h
@@ -16,7 +16,7 @@ enum apply_ws_ignore {
 enum apply_verbosity {
     verbosity_silent = -1,
     verbosity_normal = 0,
-    verbosity_verbose = 1,
+    verbosity_verbose = 1
 };

 /*
@@ -94,7 +94,11 @@ struct apply_state {
      */
     struct string_list fn_table;

-    /* This is to save some reporting routines */
+    /*
+     * This is to save reporting routines before using
+     * set_error_routine() or set_warn_routine() to install muting
+     * routines when in verbosity_silent mode.
+     */
     void (*saved_error_routine)(const char *err, va_list params);
     void (*saved_warn_routine)(const char *warn, va_list params);

@@ -107,20 +111,6 @@ struct apply_state {
     int applied_after_fixing_ws;
 };

-extern int apply_option_parse_exclude(const struct option *opt,
-                      const char *arg, int unset);
-extern int apply_option_parse_include(const struct option *opt,
-                      const char *arg, int unset);
-extern int apply_option_parse_p(const struct option *opt,
-                const char *arg,
-                int unset);
-extern int apply_option_parse_whitespace(const struct option *opt,
-                     const char *arg, int unset);
-extern int apply_option_parse_directory(const struct option *opt,
-                    const char *arg, int unset);
-extern int apply_option_parse_space_change(const struct option *opt,
-                       const char *arg, int unset);
-
 extern int apply_parse_options(int argc, const char **argv,
                    struct apply_state *state,
                    int *force_apply, int *options,
diff --git a/cache.h b/cache.h
index 18b96fe..c9ad7f9 100644
--- a/cache.h
+++ b/cache.h
@@ -461,7 +461,6 @@ extern int is_inside_work_tree(void);
 extern const char *get_git_dir(void);
 extern const char *get_git_common_dir(void);
 extern char *get_object_directory(void);
-extern void set_index_file(char *index_file);
 extern char *get_index_file(void);
 extern char *get_graft_file(void);
 extern int set_git_dir(const char *path);
@@ -472,6 +471,19 @@ extern const char *strip_namespace(const char
*namespaced_ref);
 extern const char *get_git_work_tree(void);

 /*
+ * Hack to temporarily change the index.
+ * Yeah, the libification of 'apply' took a short-circuit by adding
+ * this technical debt.
+ * Please use functions available when
+ * NO_THE_INDEX_COMPATIBILITY_MACROS is defined, instead of this
+ * function.
+ * If you really need to use this function, please save the current
+ * index file using get_index_file() before changing the index
+ * file. And when finished, reset it to the saved value.
+ */
+extern void set_index_file(char *index_file);
+
+/*
  * Return true if the given path is a git directory; note that this _just_
  * looks at the directory itself. If you want to know whether "foo/.git"
  * is a repository, you must feed that path, not just "foo".
diff --git a/environment.c b/environment.c
index eb23d01..55b2b6b 100644
--- a/environment.c
+++ b/environment.c
@@ -293,11 +293,15 @@ int odb_pack_keep(char *name, size_t namesz,
const unsigned char *sha1)
 }

 /*
- * Temporarily change the index file.
- * Please save the current index file using get_index_file() before changing
- * the index file. And when finished, reset it to the saved value.
- * Yeah, the libification of 'apply' took a short-circuit by adding this
- * technical debt; please do not call this function in new codepaths.
+ * Hack to temporarily change the index.
+ * Yeah, the libification of 'apply' took a short-circuit by adding
+ * this technical debt.
+ * Please use functions available when
+ * NO_THE_INDEX_COMPATIBILITY_MACROS is defined, instead of this
+ * function.
+ * If you really need to use this function, please save the current
+ * index file using get_index_file() before changing the index
+ * file. And when finished, reset it to the saved value.
  */
 void set_index_file(char *index_file)
 {
diff --git a/write_or_die.c b/write_or_die.c
index 26eeec8..9816879 100644
--- a/write_or_die.c
+++ b/write_or_die.c
@@ -87,7 +87,8 @@ int write_or_whine_pipe(int fd, const void *buf,
size_t count, const char *msg)
 {
     if (write_in_full(fd, buf, count) < 0) {
         check_pipe(errno);
-        warning("%s: write error (%s)\n", msg, strerror(errno));
+        fprintf(stderr, "%s: write error (%s)\n",
+            msg, strerror(errno));
         return 0;
     }
Previous: stefan.naewe@atlas-elektronik.comNext: Junio C Hamano
Message 50 of 51 in “libify apply and use lib in am, part 2”
  1. 00/40 libify apply and use lib in am, part 2Christian Couder, Aug 8, 2016
  2. 02/40 apply: move 'struct apply_state' to apply.hChristian Couder, Aug 8, 2016
  3. 03/40 builtin/apply: make apply_patch() return -1 or -128 instead of die()ingChristian Couder, Aug 8, 2016
  4. 04/40 builtin/apply: read_patch_file() return -1 instead of die()ingChristian Couder, Aug 8, 2016
  5. 07/40 builtin/apply: make parse_single_patch() return -1 on errorChristian Couder, Aug 8, 2016
  6. 05/40 builtin/apply: make find_header() return -128 instead of die()ingChristian Couder, Aug 8, 2016
  7. 06/40 builtin/apply: make parse_chunk() return a negative integer on errorChristian Couder, Aug 8, 2016
  8. 10/40 builtin/apply: move init_apply_state() to apply.cChristian Couder, Aug 8, 2016
  9. 09/40 builtin/apply: make parse_ignorewhitespace_option() return -1 instead of die()ingChristian Couder, Aug 8, 2016
  10. 12/40 builtin/apply: make check_apply_state() return -1 instead of die()ingChristian Couder, Aug 8, 2016
  11. 13/40 builtin/apply: move check_apply_state() to apply.cChristian Couder, Aug 8, 2016
  12. 11/40 apply: make init_apply_state() return -1 instead of exit()ingChristian Couder, Aug 8, 2016
  13. 15/40 builtin/apply: make parse_traditional_patch() return -1 on errorChristian Couder, Aug 8, 2016
  14. 21/40 builtin/apply: make add_conflicted_stages_file() return -1 on errorChristian Couder, Aug 8, 2016
  15. 20/40 builtin/apply: make remove_file() return -1 on errorChristian Couder, Aug 8, 2016
  16. 22/40 builtin/apply: make add_index_file() return -1 on errorChristian Couder, Aug 8, 2016
  17. 23/40 builtin/apply: make create_file() return -1 on errorChristian Couder, Aug 8, 2016
  18. 27/40 builtin/apply: make create_one_file() return -1 on errorChristian Couder, Aug 8, 2016
  19. 29/40 apply: rename and move opt constants to apply.hChristian Couder, Aug 8, 2016
  20. 28/40 builtin/apply: rename option parsing functionsChristian Couder, Aug 8, 2016
  21. stefan.naewe@atlas-elektronik.comAug 9, 2016
  22. 26/40 builtin/apply: make try_create_file() return -1 on errorChristian Couder, Aug 8, 2016
  23. 25/40 builtin/apply: make write_out_results() return -1 on errorChristian Couder, Aug 8, 2016
  24. 31/40 apply: make some parsing functions static againChristian Couder, Aug 8, 2016
  25. 24/40 builtin/apply: make write_out_one_result() return -1 on errorChristian Couder, Aug 8, 2016
  26. 32/40 apply: use error_errno() where possibleChristian Couder, Aug 8, 2016
  27. 19/40 builtin/apply: make build_fake_ancestor() return -1 on errorChristian Couder, Aug 8, 2016
  28. 37/40 usage: add get_error_routine() and get_warn_routine()Christian Couder, Aug 8, 2016
  29. 36/40 usage: add set_warn_routine()Christian Couder, Aug 8, 2016
  30. 35/40 apply: don't print on stdout in verbosity_silent modeChristian Couder, Aug 8, 2016
  31. 39/40 apply: refactor `git apply` option parsingChristian Couder, Aug 8, 2016
  32. 33/40 environment: add set_index_file()Christian Couder, Aug 8, 2016
  33. Junio C HamanoAug 8, 2016
  34. Christian CouderAug 10, 2016
  35. Junio C HamanoAug 10, 2016
  36. Christian CouderAug 11, 2016
  37. Junio C HamanoAug 11, 2016
  38. 34/40 apply: make it possible to silently applyChristian Couder, Aug 8, 2016
  39. 38/40 apply: change error_routine when silentChristian Couder, Aug 8, 2016
  40. 18/40 builtin/apply: change die_on_unsafe_path() to check_unsafe_path()Christian Couder, Aug 8, 2016
  41. 40/40 builtin/am: use apply api in run_apply()Christian Couder, Aug 8, 2016
  42. 17/40 builtin/apply: make gitdiff_*() return -1 on errorChristian Couder, Aug 8, 2016
  43. 16/40 builtin/apply: make gitdiff_*() return 1 at end of headerChristian Couder, Aug 8, 2016
  44. 14/40 builtin/apply: make apply_all_patches() return 128 or 1 on errorChristian Couder, Aug 8, 2016
  45. 08/40 builtin/apply: make parse_whitespace_option() return -1 instead of die()ingChristian Couder, Aug 8, 2016
  46. 01/40 apply: make some names more specificChristian Couder, Aug 8, 2016
  47. stefan.naewe@atlas-elektronik.comAug 9, 2016
  48. Christian CouderAug 11, 2016
  49. stefan.naewe@atlas-elektronik.comAug 11, 2016
  50. Christian CouderAug 8, 2016
  51. Junio C HamanoAug 8, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.