PCS_API void pcs_http_setopts(PcsHttp handle, ...) { PcsHttpOption opt; void *val; va_list args; va_start(args, handle); while((opt = va_arg(args, PcsHttpOption)) != PCS_HTTP_OPTION_END) { val = va_arg(args, void *); pcs_http_setopt(handle, opt, val); } va_end(args); }
PCS_API PcsRes pcs_setopt(Pcs handle, PcsOption opt, void *value) { PcsRes res = PCS_OK; struct pcs *pcs = (struct pcs *)handle; switch (opt) { case PCS_OPTION_USERNAME: if (pcs->username) pcs_free(pcs->username); pcs->username = pcs_utils_strdup((char *)value); break; case PCS_OPTION_PASSWORD: if (pcs->password) pcs_free(pcs->password); pcs->password = pcs_utils_strdup((char *)value); break; case PCS_OPTION_CAPTCHA_FUNCTION: pcs->captcha_func = (PcsGetCaptchaFunction)value; break; case PCS_OPTION_CAPTCHA_FUNCTION_DATA: pcs->captcha_data = value; break; case PCS_OPTION_DOWNLOAD_WRITE_FUNCTION: pcs_http_setopt(pcs->http, PCS_HTTP_OPTION_HTTP_WRITE_FUNCTION, value); break; case PCS_OPTION_DOWNLOAD_WRITE_FUNCTION_DATA: pcs_http_setopt(pcs->http, PCS_HTTP_OPTION_HTTP_WRITE_FUNCTION_DATE, value); break; case PCS_OPTION_HTTP_RESPONSE_FUNCTION: pcs_http_setopt(pcs->http, PCS_HTTP_OPTION_HTTP_RESPONSE_FUNCTION, value); break; case PCS_OPTION_HTTP_RESPONSE_FUNCTION_DATE: pcs_http_setopt(pcs->http, PCS_HTTP_OPTION_HTTP_RESPONSE_FUNCTION_DATE, value); break; case PCS_OPTION_PROGRESS_FUNCTION: pcs_http_setopt(pcs->http, PCS_HTTP_OPTION_PROGRESS_FUNCTION, value); break; case PCS_OPTION_PROGRESS_FUNCTION_DATE: pcs_http_setopt(pcs->http, PCS_HTTP_OPTION_PROGRESS_FUNCTION_DATE, value); break; case PCS_OPTION_PROGRESS: pcs_http_setopt(pcs->http, PCS_HTTP_OPTION_PROGRESS, value); break; default: pcs_set_errmsg(handle, "Unknown option"); res = PCS_UNKNOWN_OPT; break; } return res; }