mirror of
				https://github.com/rofl0r/proxychains-ng.git
				synced 2025-11-04 00:56:03 +00:00 
			
		
		
		
	use the right tool for the job. getopt clearly isnt
This commit is contained in:
		
							
								
								
									
										31
									
								
								src/main.c
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								src/main.c
									
									
									
									
									
								
							@@ -26,9 +26,6 @@
 | 
				
			|||||||
#include <sys/types.h>
 | 
					#include <sys/types.h>
 | 
				
			||||||
#include <sys/wait.h>
 | 
					#include <sys/wait.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern char *optarg;
 | 
					 | 
				
			||||||
extern int optind, opterr, optopt;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "common.h"
 | 
					#include "common.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int usage(char** argv) {
 | 
					static int usage(char** argv) {
 | 
				
			||||||
@@ -74,29 +71,31 @@ int main(int argc, char *argv[]) {
 | 
				
			|||||||
	char *path = NULL;
 | 
						char *path = NULL;
 | 
				
			||||||
	char buf[256];
 | 
						char buf[256];
 | 
				
			||||||
	char pbuf[256];
 | 
						char pbuf[256];
 | 
				
			||||||
	int opt;
 | 
					 | 
				
			||||||
	int start_argv = 1;
 | 
						int start_argv = 1;
 | 
				
			||||||
	int quiet = 0;
 | 
						int quiet = 0;
 | 
				
			||||||
 | 
						size_t i;
 | 
				
			||||||
 | 
						const char* prefix = NULL;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	if(argc == 1) return usage(argv);
 | 
						for(i = 0; i < 2; i++) {
 | 
				
			||||||
 | 
							if(start_argv < argc && argv[start_argv][0] == '-') {
 | 
				
			||||||
	while ((opt = getopt(argc, argv, "qf:")) != -1) {
 | 
								if(argv[start_argv][1] == 'q') {
 | 
				
			||||||
		switch (opt) {
 | 
					 | 
				
			||||||
			case 'q':
 | 
					 | 
				
			||||||
				quiet = 1;
 | 
									quiet = 1;
 | 
				
			||||||
				start_argv++;
 | 
									start_argv++;
 | 
				
			||||||
				break;
 | 
								} else if(argv[start_argv][1] == 'f') {
 | 
				
			||||||
			case 'f':
 | 
									
 | 
				
			||||||
				path = (char *)optarg;
 | 
									if(start_argv + 1 < argc) 
 | 
				
			||||||
 | 
										path = argv[start_argv + 1];
 | 
				
			||||||
 | 
									else 
 | 
				
			||||||
 | 
										return usage(argv);
 | 
				
			||||||
 | 
									
 | 
				
			||||||
				if(!path) {
 | 
									if(!path) {
 | 
				
			||||||
					fprintf(stderr, "error: no path supplied.\n");
 | 
										fprintf(stderr, "error: no path supplied.\n");
 | 
				
			||||||
					return EXIT_FAILURE;
 | 
										return EXIT_FAILURE;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				start_argv += 2;
 | 
									start_argv += 2;
 | 
				
			||||||
				break;
 | 
					 | 
				
			||||||
			default: /* '?' */
 | 
					 | 
				
			||||||
				return usage(argv);
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							} else 
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(start_argv >= argc) return usage(argv);
 | 
						if(start_argv >= argc) return usage(argv);
 | 
				
			||||||
@@ -137,8 +136,6 @@ int main(int argc, char *argv[]) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// search DLL
 | 
						// search DLL
 | 
				
			||||||
	size_t i = 0;
 | 
					 | 
				
			||||||
	const char* prefix = NULL;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	set_own_dir(argv[0]);
 | 
						set_own_dir(argv[0]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user