From: Junio C Hamano Date: Tue, 31 May 2016 22:34:22 GMT Subject: Re: [PATCH] add: add --chmod=+x / --chmod=-x options Message-ID: In-Reply-To: <20160531220818.GB46739@zoidberg> Edward Thomson writes: > +static char *chmod_arg = NULL; > + I'll drop " = NULL", as it is our convention to let BSS take care of the zero initialization for global variables as much as possible. Other than that, I did not see anything objectionable in this round, but I did notice that you kept the "this takes two bits out of 32" Dscho mentioned--I do not have a strong preference either way, so I'll queue it (at least tentatively) on 'pu'. > @@ -346,7 +354,9 @@ int cmd_add(int argc, const char **argv, const char *prefix) > (intent_to_add ? ADD_CACHE_INTENT : 0) | > (ignore_add_errors ? ADD_CACHE_IGNORE_ERRORS : 0) | > (!(addremove || take_worktree_changes) > - ? ADD_CACHE_IGNORE_REMOVAL : 0)); > + ? ADD_CACHE_IGNORE_REMOVAL : 0)) | > + (chmod_arg && *chmod_arg == '+' ? ADD_CACHE_FORCE_EXECUTABLE : 0) | > + (chmod_arg && *chmod_arg == '-' ? ADD_CACHE_FORCE_NOTEXECUTABLE : 0); > > if (require_pathspec && argc == 0) { > fprintf(stderr, _("Nothing specified, nothing added.\n")); > diff --git a/cache.h b/cache.h > index 6049f86..da03cd9 100644 > --- a/cache.h > +++ b/cache.h > @@ -581,6 +581,8 @@ extern int remove_file_from_index(struct index_state *, const char *path); > #define ADD_CACHE_IGNORE_ERRORS 4 > #define ADD_CACHE_IGNORE_REMOVAL 8 > #define ADD_CACHE_INTENT 16 > +#define ADD_CACHE_FORCE_EXECUTABLE 32 > +#define ADD_CACHE_FORCE_NOTEXECUTABLE 64