diff --git a/dpi/downloads.cc b/dpi/downloads.cc index 0b8c23b..897cce8 100644 --- a/dpi/downloads.cc +++ b/dpi/downloads.cc @@ -30,6 +30,8 @@ #include #include +#include + #include #include #include @@ -106,7 +108,7 @@ class DLItem { int log_state; char *log_text; time_t init_time; - char **dl_argv; + std::vector< char * > dl_argv; time_t twosec_time, onesec_time; int twosec_bytesize, onesec_bytesize; int init_bytesize, curr_bytesize, total_bytesize; @@ -322,20 +324,19 @@ DLItem::DLItem(const char *full_filename, const char *url, const char *user_agen if (dStrnAsciiCasecmp(esc_url, "ftp:/", 5) == 0) Filter_smtp_hack(esc_url); cookies_path = dStrconcat(dGethomedir(), "/.dillo/cookies.txt", NULL); - dl_argv = new char*[10]; - int i = 0; - dl_argv[i++] = (char*)"wget"; + dl_argv.clear(); + dl_argv.push_back( (char*)"wget" ); if (stat(fullname, &ss) == 0) init_bytesize = (int)ss.st_size; - dl_argv[i++] = (char*)"-U"; - dl_argv[i++] = (char*) user_agent; - dl_argv[i++] = (char*)"-c"; - dl_argv[i++] = (char*)"--load-cookies"; - dl_argv[i++] = cookies_path; - dl_argv[i++] = (char*)"-O"; - dl_argv[i++] = fullname; - dl_argv[i++] = esc_url; - dl_argv[i++] = NULL; + dl_argv.push_back( (char*)"-U" ); + dl_argv.push_back( (char*) user_agent ); + dl_argv.push_back( (char*)"-c" ); + dl_argv.push_back( (char*)"--load-cookies" ); + dl_argv.push_back( cookies_path ); + dl_argv.push_back( (char*)"-O" ); + dl_argv.push_back( fullname ); + dl_argv.push_back( esc_url ); + dl_argv.push_back( nullptr ); DataDone = 0; LogDone = 0; @@ -435,7 +436,6 @@ DLItem::~DLItem() free(log_text); dFree(esc_url); dFree(cookies_path); - delete [] dl_argv; delete(group); } @@ -471,7 +471,7 @@ void DLItem::child_init() // set the locale to C for log parsing setenv("LC_ALL", "C", 1); // start wget - execvp(dl_argv[0], dl_argv); + execvp(dl_argv[0], dl_argv.data()); } /*