@@ -4707,13 +4707,80 @@ static void check_apply_state(struct apply_state *state, int force_apply)
47074707 state -> unsafe_paths = 0 ;
47084708}
47094709
4710- int cmd_apply (int argc , const char * * argv , const char * prefix )
4710+ static int apply_all_patches (struct apply_state * state ,
4711+ int argc ,
4712+ const char * * argv ,
4713+ int options )
47114714{
47124715 int i ;
47134716 int errs = 0 ;
4717+ int read_stdin = 1 ;
4718+
4719+ for (i = 0 ; i < argc ; i ++ ) {
4720+ const char * arg = argv [i ];
4721+ int fd ;
4722+
4723+ if (!strcmp (arg , "-" )) {
4724+ errs |= apply_patch (state , 0 , "<stdin>" , options );
4725+ read_stdin = 0 ;
4726+ continue ;
4727+ } else if (0 < state -> prefix_length )
4728+ arg = prefix_filename (state -> prefix ,
4729+ state -> prefix_length ,
4730+ arg );
4731+
4732+ fd = open (arg , O_RDONLY );
4733+ if (fd < 0 )
4734+ die_errno (_ ("can't open patch '%s'" ), arg );
4735+ read_stdin = 0 ;
4736+ set_default_whitespace_mode (state );
4737+ errs |= apply_patch (state , fd , arg , options );
4738+ close (fd );
4739+ }
4740+ set_default_whitespace_mode (state );
4741+ if (read_stdin )
4742+ errs |= apply_patch (state , 0 , "<stdin>" , options );
4743+
4744+ if (state -> whitespace_error ) {
4745+ if (state -> squelch_whitespace_errors &&
4746+ state -> squelch_whitespace_errors < state -> whitespace_error ) {
4747+ int squelched =
4748+ state -> whitespace_error - state -> squelch_whitespace_errors ;
4749+ warning (Q_ ("squelched %d whitespace error" ,
4750+ "squelched %d whitespace errors" ,
4751+ squelched ),
4752+ squelched );
4753+ }
4754+ if (state -> ws_error_action == die_on_ws_error )
4755+ die (Q_ ("%d line adds whitespace errors." ,
4756+ "%d lines add whitespace errors." ,
4757+ state -> whitespace_error ),
4758+ state -> whitespace_error );
4759+ if (state -> applied_after_fixing_ws && state -> apply )
4760+ warning ("%d line%s applied after"
4761+ " fixing whitespace errors." ,
4762+ state -> applied_after_fixing_ws ,
4763+ state -> applied_after_fixing_ws == 1 ? "" : "s" );
4764+ else if (state -> whitespace_error )
4765+ warning (Q_ ("%d line adds whitespace errors." ,
4766+ "%d lines add whitespace errors." ,
4767+ state -> whitespace_error ),
4768+ state -> whitespace_error );
4769+ }
4770+
4771+ if (state -> update_index ) {
4772+ if (write_locked_index (& the_index , & lock_file , COMMIT_LOCK ))
4773+ die (_ ("Unable to write new index file" ));
4774+ }
4775+
4776+ return !!errs ;
4777+ }
4778+
4779+ int cmd_apply (int argc , const char * * argv , const char * prefix )
4780+ {
47144781 int force_apply = 0 ;
47154782 int options = 0 ;
4716- int read_stdin = 1 ;
4783+ int ret ;
47174784 struct apply_state state ;
47184785
47194786 struct option builtin_apply_options [] = {
@@ -4792,63 +4859,9 @@ int cmd_apply(int argc, const char **argv, const char *prefix)
47924859
47934860 check_apply_state (& state , force_apply );
47944861
4795- for (i = 0 ; i < argc ; i ++ ) {
4796- const char * arg = argv [i ];
4797- int fd ;
4798-
4799- if (!strcmp (arg , "-" )) {
4800- errs |= apply_patch (& state , 0 , "<stdin>" , options );
4801- read_stdin = 0 ;
4802- continue ;
4803- } else if (0 < state .prefix_length )
4804- arg = prefix_filename (state .prefix ,
4805- state .prefix_length ,
4806- arg );
4807-
4808- fd = open (arg , O_RDONLY );
4809- if (fd < 0 )
4810- die_errno (_ ("can't open patch '%s'" ), arg );
4811- read_stdin = 0 ;
4812- set_default_whitespace_mode (& state );
4813- errs |= apply_patch (& state , fd , arg , options );
4814- close (fd );
4815- }
4816- set_default_whitespace_mode (& state );
4817- if (read_stdin )
4818- errs |= apply_patch (& state , 0 , "<stdin>" , options );
4819- if (state .whitespace_error ) {
4820- if (state .squelch_whitespace_errors &&
4821- state .squelch_whitespace_errors < state .whitespace_error ) {
4822- int squelched =
4823- state .whitespace_error - state .squelch_whitespace_errors ;
4824- warning (Q_ ("squelched %d whitespace error" ,
4825- "squelched %d whitespace errors" ,
4826- squelched ),
4827- squelched );
4828- }
4829- if (state .ws_error_action == die_on_ws_error )
4830- die (Q_ ("%d line adds whitespace errors." ,
4831- "%d lines add whitespace errors." ,
4832- state .whitespace_error ),
4833- state .whitespace_error );
4834- if (state .applied_after_fixing_ws && state .apply )
4835- warning ("%d line%s applied after"
4836- " fixing whitespace errors." ,
4837- state .applied_after_fixing_ws ,
4838- state .applied_after_fixing_ws == 1 ? "" : "s" );
4839- else if (state .whitespace_error )
4840- warning (Q_ ("%d line adds whitespace errors." ,
4841- "%d lines add whitespace errors." ,
4842- state .whitespace_error ),
4843- state .whitespace_error );
4844- }
4845-
4846- if (state .update_index ) {
4847- if (write_locked_index (& the_index , & lock_file , COMMIT_LOCK ))
4848- die (_ ("Unable to write new index file" ));
4849- }
4862+ ret = apply_all_patches (& state , argc , argv , options );
48504863
48514864 clear_apply_state (& state );
48524865
4853- return !! errs ;
4866+ return ret ;
48544867}
0 commit comments