static uim_lisp c_getenv(uim_lisp str) { char *val; ENSURE_TYPE(str, str); val = getenv(REFER_C_STR(str)); return (val) ? MAKE_STR(val) : uim_scm_f(); }
PP_Bool ppb_url_request_info_set_property(PP_Resource request, PP_URLRequestProperty property, struct PP_Var value) { const char *tmp, *tmp2; PP_Bool retval = PP_TRUE; struct pp_url_request_info_s *ri = pp_resource_acquire(request, PP_RESOURCE_URL_REQUEST_INFO); if (!ri) { trace_error("%s, bad resource\n", __func__); return PP_FALSE; } #define ENSURE_TYPE(vartype) if (value.type != vartype) { retval = PP_FALSE; break; } switch (property) { case PP_URLREQUESTPROPERTY_URL: ENSURE_TYPE(PP_VARTYPE_STRING); free_and_nullify(ri->url); tmp = ppb_var_var_to_utf8(value, NULL); tmp2 = ltrim(tmp); ri->url = strdup(tmp2); ri->is_immediate_javascript = (strncasecmp(tmp2, "javascript:", strlen("javascript:"))==0); break; case PP_URLREQUESTPROPERTY_METHOD: ENSURE_TYPE(PP_VARTYPE_STRING); tmp = ppb_var_var_to_utf8(value, NULL); if (strcmp(tmp, "GET") == 0) { ri->method = PP_METHOD_GET; } else if (strcmp(tmp, "POST") == 0) { ri->method = PP_METHOD_POST; } else { trace_warning("%s, unknown method %s\n", __func__, tmp); ri->method = PP_METHOD_UNKNOWN; } break; case PP_URLREQUESTPROPERTY_HEADERS: ENSURE_TYPE(PP_VARTYPE_STRING); free_and_nullify(ri->headers); ri->headers = strdup(ppb_var_var_to_utf8(value, NULL)); break; case PP_URLREQUESTPROPERTY_STREAMTOFILE: ENSURE_TYPE(PP_VARTYPE_BOOL); ri->stream_to_file = value.value.as_bool; break; case PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS: ENSURE_TYPE(PP_VARTYPE_BOOL); ri->follow_redirects = value.value.as_bool; break; case PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS: ENSURE_TYPE(PP_VARTYPE_BOOL); ri->record_download_progress = value.value.as_bool; break; case PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS: ENSURE_TYPE(PP_VARTYPE_BOOL); ri->record_upload_progress = value.value.as_bool; break; case PP_URLREQUESTPROPERTY_CUSTOMREFERRERURL: ENSURE_TYPE(PP_VARTYPE_STRING); free_and_nullify(ri->custom_referrer_url); ri->custom_referrer_url = strdup(ppb_var_var_to_utf8(value, NULL)); break; case PP_URLREQUESTPROPERTY_ALLOWCROSSORIGINREQUESTS: ENSURE_TYPE(PP_VARTYPE_BOOL); ri->allow_cross_origin_requests = value.value.as_bool; break; case PP_URLREQUESTPROPERTY_ALLOWCREDENTIALS: ENSURE_TYPE(PP_VARTYPE_BOOL); ri->allow_credentials = value.value.as_bool; break; case PP_URLREQUESTPROPERTY_CUSTOMCONTENTTRANSFERENCODING: ENSURE_TYPE(PP_VARTYPE_STRING); free_and_nullify(ri->custom_content_transfer_encoding); ri->custom_content_transfer_encoding = strdup(ppb_var_var_to_utf8(value, NULL)); break; case PP_URLREQUESTPROPERTY_PREFETCHBUFFERUPPERTHRESHOLD: ENSURE_TYPE(PP_VARTYPE_INT32); ri->prefetch_buffer_upper_threshold = value.value.as_int; break; case PP_URLREQUESTPROPERTY_PREFETCHBUFFERLOWERTHRESHOLD: ENSURE_TYPE(PP_VARTYPE_INT32); ri->prefetch_buffer_lower_threshold = value.value.as_int; break; case PP_URLREQUESTPROPERTY_CUSTOMUSERAGENT: ENSURE_TYPE(PP_VARTYPE_STRING); free_and_nullify(ri->custom_user_agent); ri->custom_user_agent = strdup(ppb_var_var_to_utf8(value, NULL)); break; default: trace_error("%s, unknown url request property %d\n", __func__, property); retval = PP_FALSE; break; } pp_resource_release(request); return retval; }