svc: fix a case where with more than option, getopt() state is not reset
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
		
							
								
								
									
										11
									
								
								runit/sv.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								runit/sv.c
									
									
									
									
									
								
							@@ -718,15 +718,16 @@ int svc_main(int argc UNUSED_PARAM, char **argv)
 | 
			
		||||
	argv[1] = command;
 | 
			
		||||
	command[1] = '\0';
 | 
			
		||||
 | 
			
		||||
	/* getopt32() was already called:
 | 
			
		||||
	 * reset the libc getopt() function, which keeps internal state.
 | 
			
		||||
	 */
 | 
			
		||||
	GETOPT_RESET();
 | 
			
		||||
 | 
			
		||||
	do {
 | 
			
		||||
		if (opts & 1) {
 | 
			
		||||
			int r;
 | 
			
		||||
 | 
			
		||||
			command[0] = *optstring;
 | 
			
		||||
 | 
			
		||||
			/* getopt() was already called by getopt32():
 | 
			
		||||
			 * reset the libc getopt() function's internal state.
 | 
			
		||||
			 */
 | 
			
		||||
			GETOPT_RESET();
 | 
			
		||||
			r = sv(argv);
 | 
			
		||||
			if (r)
 | 
			
		||||
				return 1;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user