put abort functionality into get_config_path to further reduce code duplication

pull/3/head
rofl0r 2012-07-08 23:47:56 +02:00
parent fafeaf5936
commit e5e87c8f22
4 changed files with 14 additions and 18 deletions

View File

@ -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;

View File

@ -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);

View File

@ -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')

View File

@ -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);