diff options
author | Steve Holme <steve_holme@hotmail.com> | 2014-02-02 13:45:35 +0000 |
---|---|---|
committer | Steve Holme <steve_holme@hotmail.com> | 2014-02-02 13:48:36 +0000 |
commit | 0104678c798aabcd1935d736118d87a1358e14ec (patch) | |
tree | 274dd1aca2d194e7f19edfef430e4c539555bb6e /src/tool_main.c | |
parent | ffb8a21d85bde8b626e5dc52ce25f0447ee49f89 (diff) |
tool_operate: Moved memory tracking initialisation into tool_main
Diffstat (limited to 'src/tool_main.c')
-rw-r--r-- | src/tool_main.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/tool_main.c b/src/tool_main.c index fe0768747..5e58aff1d 100644 --- a/src/tool_main.c +++ b/src/tool_main.c @@ -82,6 +82,38 @@ static void main_checkfds(void) #endif } +#ifdef CURLDEBUG +void memory_tracking_init(void) +{ + char *env; + /* if CURL_MEMDEBUG is set, this starts memory tracking message logging */ + env = curlx_getenv("CURL_MEMDEBUG"); + if(env) { + /* use the value as file name */ + char fname[CURL_MT_LOGFNAME_BUFSIZE]; + if(strlen(env) >= CURL_MT_LOGFNAME_BUFSIZE) + env[CURL_MT_LOGFNAME_BUFSIZE-1] = '\0'; + strcpy(fname, env); + curl_free(env); + curl_memdebug(fname); + /* this weird stuff here is to make curl_free() get called + before curl_memdebug() as otherwise memory tracking will + log a free() without an alloc! */ + } + /* if CURL_MEMLIMIT is set, this enables fail-on-alloc-number-N feature */ + env = curlx_getenv("CURL_MEMLIMIT"); + if(env) { + char *endptr; + long num = strtol(env, &endptr, 10); + if((endptr != env) && (endptr == env + strlen(env)) && (num > 0)) + curl_memlimit(num); + curl_free(env); + } +} +#else +# define memory_tracking_init() Curl_nop_stmt +#endif + /* ** curl tool main function. */ @@ -99,6 +131,10 @@ int main(int argc, char *argv[]) (void)signal(SIGPIPE, SIG_IGN); #endif + /* Initialize memory tracking */ + memory_tracking_init(); + + /* Start our curl operation */ res = operate(&config, argc, argv); #ifdef __SYMBIAN32__ |