Lines Matching refs:per

211 static CURLcode add_per_transfer(struct per_transfer **per)  in add_per_transfer()  argument
228 *per = p; in add_per_transfer()
235 static struct per_transfer *del_per_transfer(struct per_transfer *per) in del_per_transfer() argument
241 DEBUGASSERT(per); in del_per_transfer()
243 n = per->next; in del_per_transfer()
244 p = per->prev; in del_per_transfer()
256 free(per); in del_per_transfer()
262 struct per_transfer *per) in pre_transfer() argument
268 if(per->separator_err) in pre_transfer()
269 fprintf(global->errors, "%s\n", per->separator_err); in pre_transfer()
270 if(per->separator) in pre_transfer()
271 printf("%s\n", per->separator); in pre_transfer()
273 if(per->uploadfile && !stdin_upload(per->uploadfile)) { in pre_transfer()
290 per->infd = -1; in pre_transfer()
291 if(stat(per->uploadfile, &fileinfo) == 0) { in pre_transfer()
297 per->infd = open(per->uploadfile, O_RDONLY | O_BINARY); in pre_transfer()
300 per->infd = open(per->uploadfile, O_RDONLY | O_BINARY, in pre_transfer()
304 if(per->infd == -1) in pre_transfer()
306 per->infd = open(per->uploadfile, O_RDONLY | O_BINARY); in pre_transfer()
307 if((per->infd == -1) || fstat(per->infd, &fileinfo)) in pre_transfer()
310 helpf(global->errors, "Can't open '%s'!\n", per->uploadfile); in pre_transfer()
311 if(per->infd != -1) { in pre_transfer()
312 close(per->infd); in pre_transfer()
313 per->infd = STDIN_FILENO; in pre_transfer()
317 per->infdopen = TRUE; in pre_transfer()
324 struct OperationConfig *config = per->config; /* for the macro below */ in pre_transfer()
325 my_setopt(per->curl, CURLOPT_INFILESIZE_LARGE, uploadfilesize); in pre_transfer()
327 per->input.fd = per->infd; in pre_transfer()
336 struct per_transfer *per, in post_per_transfer() argument
341 struct OutStruct *outs = &per->outs; in post_per_transfer()
342 CURL *curl = per->curl; in post_per_transfer()
343 struct OperationConfig *config = per->config; in post_per_transfer()
351 if(per->infdopen) in post_per_transfer()
352 close(per->infd); in post_per_transfer()
367 (per->errorbuffer[0]) ? per->errorbuffer : in post_per_transfer()
404 if(per->metalink && !per->metalink_next_res) in post_per_transfer()
406 per->mlfile->filename, per->this_url); in post_per_transfer()
408 if(!per->metalink && config->use_metalink && result == CURLE_OK) { in post_per_transfer()
409 int rv = parse_metalink(config, outs, per->this_url); in post_per_transfer()
412 per->this_url); in post_per_transfer()
416 per->this_url); in post_per_transfer()
418 else if(per->metalink && result == CURLE_OK && !per->metalink_next_res) { in post_per_transfer()
421 rv = metalink_check_hash(global, per->mlfile, outs->filename); in post_per_transfer()
423 per->metalink_next_res = 1; in post_per_transfer()
434 if(per->retry_numretries && in post_per_transfer()
436 (tvdiff(tvnow(), per->retrystart) < in post_per_transfer()
525 sleeptime = per->retry_sleep; in post_per_transfer()
539 m[retry], sleeptime/1000L, per->retry_numretries); in post_per_transfer()
541 per->retry_numretries--; in post_per_transfer()
543 per->retry_sleep *= 2; in post_per_transfer()
544 if(per->retry_sleep > RETRY_SLEEP_MAX) in post_per_transfer()
545 per->retry_sleep = RETRY_SLEEP_MAX; in post_per_transfer()
589 else if(per->metalink) { in post_per_transfer()
603 per->metalink_next_res = 1; in post_per_transfer()
607 per->mlfile->filename, per->this_url, response); in post_per_transfer()
612 per->metalink_next_res = 1; in post_per_transfer()
615 per->mlfile->filename, per->this_url, in post_per_transfer()
621 per->progressbar.calls) in post_per_transfer()
624 fputs("\n", per->progressbar.out); in post_per_transfer()
627 ourWriteOut(per->curl, per, config->writeout); in post_per_transfer()
648 if(per->heads.fopened && per->heads.stream) in post_per_transfer()
649 fclose(per->heads.stream); in post_per_transfer()
651 if(per->heads.alloc_filename) in post_per_transfer()
652 Curl_safefree(per->heads.filename); in post_per_transfer()
654 if(per->etag_save.fopened && per->etag_save.stream) in post_per_transfer()
655 fclose(per->etag_save.stream); in post_per_transfer()
657 if(per->etag_save.alloc_filename) in post_per_transfer()
658 Curl_safefree(per->etag_save.filename); in post_per_transfer()
660 curl_easy_cleanup(per->curl); in post_per_transfer()
663 free(per->this_url); in post_per_transfer()
664 free(per->separator_err); in post_per_transfer()
665 free(per->separator); in post_per_transfer()
666 free(per->outfile); in post_per_transfer()
667 free(per->uploadfile); in post_per_transfer()
848 struct per_transfer *per; in single_transfer() local
855 result = add_per_transfer(&per); in single_transfer()
862 per->uploadfile = strdup(state->uploadfile); in single_transfer()
863 if(!per->uploadfile) { in single_transfer()
870 per->config = config; in single_transfer()
871 per->curl = curl; in single_transfer()
874 heads = &per->heads; in single_transfer()
882 newfile = fopen(config->headerfile, per->prev == NULL?"wb":"ab"); in single_transfer()
901 hdrcbdata = &per->hdrcbdata; in single_transfer()
903 outs = &per->outs; in single_transfer()
904 input = &per->input; in single_transfer()
906 per->outfile = NULL; in single_transfer()
907 per->infdopen = FALSE; in single_transfer()
908 per->infd = STDIN_FILENO; in single_transfer()
955 etag_save = &per->etag_save; in single_transfer()
986 per->outfile = strdup(mlfile->filename); in single_transfer()
987 if(!per->outfile) { in single_transfer()
991 per->this_url = strdup(mlres->url); in single_transfer()
992 if(!per->this_url) { in single_transfer()
996 per->mlfile = mlfile; in single_transfer()
1000 result = glob_next_url(&per->this_url, state->urls); in single_transfer()
1005 per->this_url = strdup(urlnode->url); in single_transfer()
1006 if(!per->this_url) { in single_transfer()
1012 per->this_url = NULL; in single_transfer()
1013 if(!per->this_url) in single_transfer()
1017 per->outfile = strdup(state->outfiles); in single_transfer()
1018 if(!per->outfile) { in single_transfer()
1026 (per->outfile && strcmp("-", per->outfile))) && in single_transfer()
1034 if(!per->outfile) { in single_transfer()
1036 result = get_url_file_name(&per->outfile, per->this_url); in single_transfer()
1039 if(!*per->outfile && !config->content_disposition) { in single_transfer()
1047 char *storefile = per->outfile; in single_transfer()
1048 result = glob_match_url(&per->outfile, storefile, state->urls); in single_transfer()
1058 char *d = aprintf("%s/%s", config->output_dir, per->outfile); in single_transfer()
1063 free(per->outfile); in single_transfer()
1064 per->outfile = d; in single_transfer()
1070 result = create_dir_hierarchy(per->outfile, global->errors); in single_transfer()
1087 if(0 == stat(per->outfile, &fileinfo)) in single_transfer()
1103 FILE *file = fopen(per->outfile, "ab"); in single_transfer()
1106 errorf(global, "Can't open '%s'!\n", per->outfile); in single_transfer()
1117 outs->filename = per->outfile; in single_transfer()
1121 if(per->uploadfile && !stdin_upload(per->uploadfile)) { in single_transfer()
1125 char *nurl = add_file_name_to_url(per->this_url, per->uploadfile); in single_transfer()
1130 per->this_url = nurl; in single_transfer()
1132 else if(per->uploadfile && stdin_upload(per->uploadfile)) { in single_transfer()
1158 DEBUGASSERT(per->infdopen == FALSE); in single_transfer()
1159 DEBUGASSERT(per->infd == STDIN_FILENO); in single_transfer()
1162 if(!strcmp(per->uploadfile, ".")) { in single_transfer()
1163 if(curlx_nonblock((curl_socket_t)per->infd, TRUE) < 0) in single_transfer()
1165 "fcntl failed on fd=%d: %s\n", per->infd, strerror(errno)); in single_transfer()
1169 if(per->uploadfile && config->resume_from_current) in single_transfer()
1172 if(output_expected(per->this_url, per->uploadfile) && outs->stream && in single_transfer()
1176 per->noprogress = global->noprogress = global->isatty = TRUE; in single_transfer()
1180 per->noprogress = global->noprogress = orig_noprogress; in single_transfer()
1185 per->separator_err = in single_transfer()
1187 state->li + 1, urlnum, per->this_url, in single_transfer()
1188 per->outfile ? per->outfile : "<stdout>"); in single_transfer()
1190 per->separator = aprintf("%s%s", CURLseparator, per->this_url); in single_transfer()
1195 const char *pc = strstr(per->this_url, "://"); in single_transfer()
1200 pc = per->this_url; in single_transfer()
1216 urlbuffer = aprintf("%s%c%s", per->this_url, sep, httpgetfields); in single_transfer()
1221 urlbuffer = aprintf("%s/?%s", per->this_url, httpgetfields); in single_transfer()
1228 Curl_safefree(per->this_url); /* free previous URL */ in single_transfer()
1229 per->this_url = urlbuffer; /* use our new URL instead! */ in single_transfer()
1235 if((!per->outfile || !strcmp(per->outfile, "-")) && in single_transfer()
1244 (per->outfile && !strcmp(per->outfile, "-")); in single_transfer()
1258 my_setopt(curl, CURLOPT_WRITEDATA, per); in single_transfer()
1259 my_setopt(curl, CURLOPT_INTERLEAVEDATA, per); in single_transfer()
1296 my_setopt_str(curl, CURLOPT_URL, per->this_url); in single_transfer()
1345 my_setopt(curl, CURLOPT_UPLOAD, per->uploadfile?1L:0L); in single_transfer()
1364 my_setopt(curl, CURLOPT_ERRORBUFFER, per->errorbuffer); in single_transfer()
1768 progressbarinit(&per->progressbar, config); in single_transfer()
1775 my_setopt(curl, CURLOPT_XFERINFODATA, per); in single_transfer()
1777 else if(per->uploadfile && !strcmp(per->uploadfile, ".")) { in single_transfer()
1782 my_setopt(curl, CURLOPT_XFERINFODATA, per); in single_transfer()
1975 my_setopt(curl, CURLOPT_HEADERDATA, per); in single_transfer()
2079 "Metalink: parsing (%s) metalink/XML...\n", per->this_url); in single_transfer()
2084 mlfile->filename, per->this_url); in single_transfer()
2087 per->metalink = metalink; in single_transfer()
2089 per->retry_sleep_default = (config->retry_delay) ? in single_transfer()
2091 per->retry_numretries = config->req_retry; in single_transfer()
2092 per->retry_sleep = per->retry_sleep_default; /* ms */ in single_transfer()
2093 per->retrystart = tvnow(); in single_transfer()
2151 struct per_transfer *per; in add_parallel_transfers() local
2160 for(per = transfers; per && (all_added < global->parallel_max); in add_parallel_transfers()
2161 per = per->next) { in add_parallel_transfers()
2163 if(per->added) in add_parallel_transfers()
2166 if(per->startat && (time(NULL) < per->startat)) { in add_parallel_transfers()
2172 result = pre_transfer(global, per); in add_parallel_transfers()
2178 (void)curl_easy_setopt(per->curl, CURLOPT_PIPEWAIT, in add_parallel_transfers()
2180 (void)curl_easy_setopt(per->curl, CURLOPT_PRIVATE, per); in add_parallel_transfers()
2181 (void)curl_easy_setopt(per->curl, CURLOPT_XFERINFOFUNCTION, xferinfo_cb); in add_parallel_transfers()
2182 (void)curl_easy_setopt(per->curl, CURLOPT_XFERINFODATA, per); in add_parallel_transfers()
2184 mcode = curl_multi_add_handle(multi, per->curl); in add_parallel_transfers()
2191 per->added = TRUE; in add_parallel_transfers()
2195 *morep = (per || sleeping) ? TRUE : FALSE; in add_parallel_transfers()
2296 struct per_transfer *per; in serial_transfers() local
2302 for(per = transfers; per;) { in serial_transfers()
2306 result = pre_transfer(global, per); in serial_transfers()
2319 result = curl_easy_perform_ev(per->curl); in serial_transfers()
2322 result = curl_easy_perform(per->curl); in serial_transfers()
2327 result = post_per_transfer(global, per, result, &retry, &delay); in serial_transfers()
2345 delete_metalinkfile(per->mlfile); in serial_transfers()
2347 per = del_per_transfer(per); in serial_transfers()
2493 struct per_transfer *per; in run_all_transfers() local
2504 for(per = transfers; per;) { in run_all_transfers()
2507 CURLcode result2 = post_per_transfer(global, per, result, &retry, &delay); in run_all_transfers()
2513 clean_getout(per->config); in run_all_transfers()
2516 clean_metalink(per->config); in run_all_transfers()
2517 per = del_per_transfer(per); in run_all_transfers()