struct curl_slist *Curl_cookie_list(struct SessionHandle *data) { struct curl_slist *list = NULL; struct curl_slist *beg; struct Cookie *c; char *line; if((data->cookies == NULL) || (data->cookies->numcookies == 0)) return NULL; c = data->cookies->cookies; while(c) { /* fill the list with _all_ the cookies we know */ line = get_netscape_format(c); if(!line) { curl_slist_free_all(list); return NULL; } beg = Curl_slist_append_nodup(list, line); if(!beg) { free(line); curl_slist_free_all(list); return NULL; } list = beg; c = c->next; } return list; }
static struct curl_slist *cookie_list(struct Curl_easy *data) { struct curl_slist *list = NULL; struct curl_slist *beg; struct Cookie *c; char *line; unsigned int i; if((data->cookies == NULL) || (data->cookies->numcookies == 0)) return NULL; for(i = 0; i < COOKIE_HASH_SIZE; i++) { for(c = data->cookies->cookies[i]; c; c = c->next) { if(!c->domain) continue; line = get_netscape_format(c); if(!line) { curl_slist_free_all(list); return NULL; } beg = Curl_slist_append_nodup(list, line); if(!beg) { free(line); curl_slist_free_all(list); return NULL; } list = beg; } } return list; }
struct curl_slist *Curl_cookie_list(struct SessionHandle *data) { struct curl_slist *list = NULL; struct curl_slist *beg; struct Cookie *c; char *line; if((data->cookies == NULL) || (data->cookies->numcookies == 0)) return NULL; c = data->cookies->cookies; beg = list; while(c) { /* fill the list with _all_ the cookies we know */ line = get_netscape_format(c); if(line == NULL) { curl_slist_free_all(beg); return NULL; } list = curl_slist_append(list, line); free(line); if(list == NULL) { curl_slist_free_all(beg); return NULL; } else if(beg == NULL) { beg = list; } c = c->next; } return list; }
struct curl_slist *Curl_cookie_list(struct SessionHandle *data) { struct curl_slist *list = NULL; struct curl_slist *beg; struct Cookie *c; char *line; if ((data->cookies == NULL) || (data->cookies->numcookies == 0)) return NULL; c = data->cookies->cookies; beg = list; while (c) { /* fill the list with _all_ the cookies we know */ line = get_netscape_format(c); if (line == NULL) { /* get_netscape_format returns null only if we run out of memory */ curl_slist_free_all(beg); /* free some memory */ return NULL; } list = curl_slist_append(list, line); free(line); c = c->next; } return list; }
struct curl_slist *Curl_cookie_list(struct SessionHandle *data) { struct curl_slist *list = NULL; struct curl_slist *beg; struct Cookie *c; char *line; if((data->cookies == NULL) || (data->cookies->numcookies == 0)) return NULL; for(c = data->cookies->cookies; c; c = c->next) { if(!c->domain) continue; line = get_netscape_format(c); if(!line) { curl_slist_free_all(list); return NULL; } beg = Curl_slist_append_nodup(list, line); if(!beg) { free(line); curl_slist_free_all(list); return NULL; } list = beg; } return list; }
/* * cookie_output() * * Writes all internally known cookies to the specified file. Specify * "-" as file name to write to stdout. * * The function returns non-zero on write failure. */ static int cookie_output(struct CookieInfo *c, const char *dumphere) { struct Cookie *co; FILE *out; bool use_stdout = FALSE; char *format_ptr; unsigned int i; if((NULL == c) || (0 == c->numcookies)) /* If there are no known cookies, we don't write or even create any destination file */ return 0; /* at first, remove expired cookies */ remove_expired(c); /* make sure we still have cookies after expiration */ if(0 == c->numcookies) return 0; if(!strcmp("-", dumphere)) { /* use stdout */ out = stdout; use_stdout = TRUE; } else { out = fopen(dumphere, FOPEN_WRITETEXT); if(!out) return 1; /* failure */ } fputs("# Netscape HTTP Cookie File\n" "# https://curl.haxx.se/docs/http-cookies.html\n" "# This file was generated by libcurl! Edit at your own risk.\n\n", out); for(i = 0; i < COOKIE_HASH_SIZE; i++) { for(co = c->cookies[i]; co; co = co->next) { if(!co->domain) continue; format_ptr = get_netscape_format(co); if(format_ptr == NULL) { fprintf(out, "#\n# Fatal libcurl error\n"); if(!use_stdout) fclose(out); return 1; } fprintf(out, "%s\n", format_ptr); free(format_ptr); } } if(!use_stdout) fclose(out); return 0; }
/* * cookie_output() * * Writes all internally known cookies to the specified file. Specify * "-" as file name to write to stdout. * * The function returns non-zero on write failure. */ static int cookie_output(struct CookieInfo *c, const char *dumphere) { struct Cookie *co; FILE *out; bool use_stdout=FALSE; if((NULL == c) || (0 == c->numcookies)) /* If there are no known cookies, we don't write or even create any destination file */ return 0; /* at first, remove expired cookies */ remove_expired(c); if(strequal("-", dumphere)) { /* use stdout */ out = stdout; use_stdout=TRUE; } else { out = fopen(dumphere, "w"); if(!out) return 1; /* failure */ } if(c) { char *format_ptr; fputs("# Netscape HTTP Cookie File\n" "# http://curl.haxx.se/docs/http-cookies.html\n" "# This file was generated by libcurl! Edit at your own risk.\n\n", out); co = c->cookies; while(co) { format_ptr = get_netscape_format(co); if(format_ptr == NULL) { fprintf(out, "#\n# Fatal libcurl error\n"); if(!use_stdout) fclose(out); return 1; } fprintf(out, "%s\n", format_ptr); free(format_ptr); co=co->next; } } if(!use_stdout) fclose(out); return 0; }
/* * cookie_output() * * Writes all internally known cookies to the specified file. Specify * "-" as file name to write to stdout. * * The function returns non-zero on write failure. */ static int cookie_output(struct CookieInfo *c, const char *dumphere) { struct Cookie *co; FILE *out; bool use_stdout = FALSE; char *format_ptr; unsigned int i; unsigned int j; struct Cookie **array; /* at first, remove expired cookies */ remove_expired(c); if(!strcmp("-", dumphere)) { /* use stdout */ out = stdout; use_stdout = TRUE; } else { out = fopen(dumphere, FOPEN_WRITETEXT); if(!out) { return 1; /* failure */ } } fputs("# Netscape HTTP Cookie File\n" "# https://curl.haxx.se/docs/http-cookies.html\n" "# This file was generated by libcurl! Edit at your own risk.\n\n", out); if(c->numcookies) { array = malloc(sizeof(struct Cookie *) * c->numcookies); if(!array) { if(!use_stdout) fclose(out); return 1; } j = 0; for(i = 0; i < COOKIE_HASH_SIZE; i++) { for(co = c->cookies[i]; co; co = co->next) { if(!co->domain) continue; array[j++] = co; } } qsort(array, c->numcookies, sizeof(struct Cookie *), cookie_sort_ct); for(i = 0; i < j; i++) { format_ptr = get_netscape_format(array[i]); if(format_ptr == NULL) { fprintf(out, "#\n# Fatal libcurl error\n"); free(array); if(!use_stdout) fclose(out); return 1; } fprintf(out, "%s\n", format_ptr); free(format_ptr); } free(array); } if(!use_stdout) fclose(out); return 0; }