Merge f7efb1ecbe
into 6c029fdf47
commit
93f92c8157
|
@ -1,4 +1,5 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
#include "debug.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -128,5 +129,11 @@ char *get_config_path(char* default_path, char* pbuf, size_t bufsize) {
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
have:
|
have:
|
||||||
|
if(path[0] != '/') {
|
||||||
|
path = realpath(path, NULL);
|
||||||
|
setenv(PROXYCHAINS_CONF_FILE_ENV_VAR, path, 1);
|
||||||
|
free(path);
|
||||||
|
path = getenv(PROXYCHAINS_CONF_FILE_ENV_VAR);
|
||||||
|
}
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
# define PSTDERR(fmt, args...) do { dprintf(2,fmt, ## args); } while(0)
|
# define PSTDERR(fmt, args...) do { dprintf(2,fmt, ## args); } while(0)
|
||||||
# define PDEBUG(fmt, args...) PSTDERR("DEBUG:"fmt, ## args)
|
# define PDEBUG(fmt, args...) PSTDERR("DEBUG:pid[%d]:"fmt, getpid(), ## args)
|
||||||
# define DEBUGDECL(args...) args
|
# define DEBUGDECL(args...) args
|
||||||
# define DUMP_PROXY_CHAIN(A, B) dump_proxy_chain(A, B)
|
# define DUMP_PROXY_CHAIN(A, B) dump_proxy_chain(A, B)
|
||||||
#else
|
#else
|
||||||
|
|
12
src/main.c
12
src/main.c
|
@ -135,6 +135,14 @@ int main(int argc, char *argv[]) {
|
||||||
if(!quiet)
|
if(!quiet)
|
||||||
fprintf(stderr, LOG_PREFIX "preloading %s/%s\n", prefix, dll_name);
|
fprintf(stderr, LOG_PREFIX "preloading %s/%s\n", prefix, dll_name);
|
||||||
|
|
||||||
|
snprintf(path=pbuf, sizeof(pbuf), "%s/%s", prefix, dll_name);
|
||||||
|
if (path[0] != '/'){
|
||||||
|
path = realpath(path, NULL);
|
||||||
|
snprintf(pbuf, sizeof(pbuf), "%s", path);
|
||||||
|
free(path);
|
||||||
|
path = pbuf;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef IS_MAC
|
#ifdef IS_MAC
|
||||||
putenv("DYLD_FORCE_FLAT_NAMESPACE=1");
|
putenv("DYLD_FORCE_FLAT_NAMESPACE=1");
|
||||||
#define LD_PRELOAD_ENV "DYLD_INSERT_LIBRARIES"
|
#define LD_PRELOAD_ENV "DYLD_INSERT_LIBRARIES"
|
||||||
|
@ -147,8 +155,8 @@ int main(int argc, char *argv[]) {
|
||||||
#define LD_PRELOAD_SEP " "
|
#define LD_PRELOAD_SEP " "
|
||||||
#endif
|
#endif
|
||||||
char *old_val = getenv(LD_PRELOAD_ENV);
|
char *old_val = getenv(LD_PRELOAD_ENV);
|
||||||
snprintf(buf, sizeof(buf), LD_PRELOAD_ENV "=%s/%s%s%s",
|
snprintf(buf, sizeof(buf), LD_PRELOAD_ENV "=%s%s%s",
|
||||||
prefix, dll_name,
|
path,
|
||||||
/* append previous LD_PRELOAD content, if existent */
|
/* append previous LD_PRELOAD content, if existent */
|
||||||
old_val ? LD_PRELOAD_SEP : "",
|
old_val ? LD_PRELOAD_SEP : "",
|
||||||
old_val ? old_val : "");
|
old_val ? old_val : "");
|
||||||
|
|
Loading…
Reference in New Issue