mirror of
				https://github.com/rofl0r/proxychains-ng.git
				synced 2025-11-04 09:06:05 +00:00 
			
		
		
		
	put abort functionality into get_config_path to further reduce code duplication
This commit is contained in:
		
							
								
								
									
										12
									
								
								src/common.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								src/common.c
									
									
									
									
									
								
							@@ -9,10 +9,15 @@ static int check_path(char *path) {
 | 
			
		||||
	return access(path, R_OK) != -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char *get_config_path(char* pbuf, size_t bufsize) {
 | 
			
		||||
char *get_config_path(char* default_path, char* pbuf, size_t bufsize) {
 | 
			
		||||
	char buf[512];
 | 
			
		||||
	// top priority: user defined path
 | 
			
		||||
	char *path = default_path;
 | 
			
		||||
	if(check_path(path))
 | 
			
		||||
		goto have;
 | 
			
		||||
	
 | 
			
		||||
	// priority 1: env var PROXYCHAINS_CONF_FILE
 | 
			
		||||
	char *path = getenv(PROXYCHAINS_CONF_FILE_ENV_VAR);
 | 
			
		||||
	getenv(PROXYCHAINS_CONF_FILE_ENV_VAR);
 | 
			
		||||
	if(check_path(path))
 | 
			
		||||
		goto have;
 | 
			
		||||
 | 
			
		||||
@@ -40,6 +45,9 @@ char *get_config_path(char* pbuf, size_t bufsize) {
 | 
			
		||||
	if(check_path(path))
 | 
			
		||||
		goto have;
 | 
			
		||||
	
 | 
			
		||||
	perror("couldnt find configuration file");
 | 
			
		||||
	exit(1);
 | 
			
		||||
	
 | 
			
		||||
	return NULL;
 | 
			
		||||
	have:
 | 
			
		||||
	return path;
 | 
			
		||||
 
 | 
			
		||||
@@ -5,4 +5,4 @@
 | 
			
		||||
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
 | 
			
		||||
char *get_config_path(char* pbuf, size_t bufsize);
 | 
			
		||||
char *get_config_path(char* default_path, char* pbuf, size_t bufsize);
 | 
			
		||||
@@ -150,17 +150,9 @@ static void get_chain_data(proxy_data * pd, unsigned int *proxy_count, chain_typ
 | 
			
		||||
	tcp_read_time_out = 4 * 1000;
 | 
			
		||||
	tcp_connect_time_out = 10 * 1000;
 | 
			
		||||
	*ct = DYNAMIC_TYPE;
 | 
			
		||||
 | 
			
		||||
	/* Get path to configuration file from env.
 | 
			
		||||
	 * this file has priority if it's defined. */
 | 
			
		||||
	
 | 
			
		||||
	env = getenv(PROXYCHAINS_CONF_FILE_ENV_VAR);
 | 
			
		||||
	if(!env) env = get_config_path(buff, sizeof(buff));
 | 
			
		||||
	if(env) file = fopen(env, "r");
 | 
			
		||||
	if(!file) {
 | 
			
		||||
		perror("Can't locate proxychains.conf");
 | 
			
		||||
		exit(1);
 | 
			
		||||
	}
 | 
			
		||||
	env = get_config_path(getenv(PROXYCHAINS_CONF_FILE_ENV_VAR), buff, sizeof(buff));
 | 
			
		||||
	file = fopen(env, "r");
 | 
			
		||||
 | 
			
		||||
	env = getenv(PROXYCHAINS_QUIET_MODE_ENV_VAR);
 | 
			
		||||
	if(env && *env == '1')
 | 
			
		||||
 
 | 
			
		||||
@@ -95,11 +95,7 @@ int main(int argc, char *argv[]) {
 | 
			
		||||
		return usage(argv);
 | 
			
		||||
 | 
			
		||||
	/* check if path of config file has not been passed via command line */
 | 
			
		||||
	if(!path) path = get_config_path(pbuf, sizeof(pbuf));
 | 
			
		||||
	if(!path) {
 | 
			
		||||
		perror("couldnt find configuration file");
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
	path = get_config_path(path, pbuf, sizeof(pbuf));
 | 
			
		||||
	
 | 
			
		||||
	if(!quiet)
 | 
			
		||||
		fprintf(stderr, LOG_PREFIX "config file found: %s\n", path);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user