On Mon, Aug 8, 2016 at 11:02 PM, Christian Couder <christian.couder@xxxxxxxxx> 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; } -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html