wi_boolean_t _wi_settings_set_path(wi_settings_t *settings, uint32_t index, wi_string_t *name, wi_string_t *value) { wi_string_t **string = (wi_string_t **) settings->spec[index].setting; if(*string) wi_release(*string); if(wi_string_has_prefix(value, WI_STR("/"))) *string = wi_retain(value); else if(settings->chroot) *string = wi_string_init_with_format(wi_string_alloc(), WI_STR("/%@"), value); else *string = wi_string_init_with_format(wi_string_alloc(), WI_STR("%@/%@"), wi_root_path, value); wi_string_normalize_path(*string); return true; }
wi_string_t * wi_error_string(void) { wi_error_t *error; error = _wi_error_get_error(); if(!error->string) { switch(error->domain) { case WI_ERROR_DOMAIN_ERRNO: error->string = wi_string_init_with_cstring(wi_string_alloc(), strerror(error->code)); break; case WI_ERROR_DOMAIN_GAI: error->string = wi_string_init_with_cstring(wi_string_alloc(), gai_strerror(error->code)); break; case WI_ERROR_DOMAIN_REGEX: case WI_ERROR_DOMAIN_OPENSSL: case WI_ERROR_DOMAIN_OPENSSL_SSL: case WI_ERROR_DOMAIN_COMMONCRYPTO: case WI_ERROR_DOMAIN_LIBXML2: case WI_ERROR_DOMAIN_SQLITE3: break; case WI_ERROR_DOMAIN_ZLIB: #ifdef WI_ZLIB error->string = wi_string_init_with_format(wi_string_alloc(), WI_STR("zlib: %s"), zError(error->code)); #endif break; case WI_ERROR_DOMAIN_CARBON: error->string = wi_string_init_with_format(wi_string_alloc(), WI_STR("Carbon: %d"), error->code); break; case WI_ERROR_DOMAIN_LIBWIRED: error->string = wi_string_init_with_cstring(wi_string_alloc(), _wi_error_strings[error->code]); break; case WI_ERROR_DOMAIN_NONE: error->string = wi_string_init_with_format(wi_string_alloc(), WI_STR("Unknown error domain: %d"), error->code); break; } } return error->string; }
void wd_version_init(void) { wd_version_string = wi_string_init_with_format(wi_string_alloc(), WI_STR("%s (%u)"), WD_VERSION, WI_REVISION); wd_protocol_version_string = wi_string_init_with_cstring(wi_string_alloc(), WD_PROTOCOL_VERSION); #ifdef HAVE_CORESERVICES_CORESERVICES_H wd_server_version_string = wi_string_init_with_format(wi_string_alloc(), WI_STR("Wired/%@ (%@; %@; %@) (%s; CoreFoundation %.1f)"), wd_version_string, wi_process_os_name(wi_process()), wi_process_os_release(wi_process()), wi_process_os_arch(wi_process()), SSLeay_version(SSLEAY_VERSION), kCFCoreFoundationVersionNumber); #else wd_server_version_string = wi_string_init_with_format(wi_string_alloc(), WI_STR("Wired/%@ (%@; %@; %@) (%s)"), wd_version_string, wi_process_os_name(wi_process()), wi_process_os_release(wi_process()), wi_process_os_arch(wi_process()), SSLeay_version(SSLEAY_VERSION)); #endif }
void wi_error_set_openssl_error(void) { wi_error_t *error; const char *file; int line; if(ERR_peek_error() == 0) { wi_error_set_errno(errno); } else { error = _wi_get_error(); error->domain = WI_ERROR_DOMAIN_OPENSSL; error->code = ERR_get_error_line(&file, &line); wi_release(error->string); error->string = wi_string_init_with_format(wi_string_alloc(), WI_STR("%s:%d: %s: %s (%u)"), file, line, ERR_func_error_string(error->code), ERR_reason_error_string(error->code), ERR_GET_REASON(error->code)); } }
void _wi_url_regenerate_string(wi_url_t *url) { wi_release(url->string); url->string = wi_string_init_with_format(wi_mutable_string_alloc(), WI_STR("%#@://"), url->scheme); if(url->user && wi_string_length(url->user) > 0) { wi_mutable_string_append_format(url->string, WI_STR("%#@"), url->user); if(url->password && wi_string_length(url->password) > 0) wi_mutable_string_append_format(url->string, WI_STR(":%#@"), url->password); wi_mutable_string_append_string(url->string, WI_STR("@")); } wi_mutable_string_append_format(url->string, WI_STR("%#@"), url->host); if(url->port > 0) wi_mutable_string_append_format(url->string, WI_STR(":%lu"), url->port); if(url->path) wi_mutable_string_append_string(url->string, url->path); else wi_mutable_string_append_string(url->string, WI_STR("/")); }
static wi_string_t * _wi_p7_message_description(wi_runtime_instance_t *instance) { wi_p7_message_t *p7_message = instance; wi_hash_t *fields; wi_enumerator_t *enumerator; wi_string_t *description, *xml_string, *field_name; description = wi_string_init_with_format(wi_string_alloc(), WI_STR("<%@ %p>{name = %@, serialization = %@"), wi_runtime_class_name(p7_message), p7_message, p7_message->name, p7_message->serialization == WI_P7_BINARY ? WI_STR("binary") : WI_STR("xml")); if(p7_message->serialization == WI_P7_BINARY) { wi_string_append_format(description, WI_STR(", buffer = %@, fields = (\n"), wi_data_with_bytes_no_copy(p7_message->binary_buffer, p7_message->binary_size, false)); } else { if(p7_message->xml_string) xml_string = p7_message->xml_string; else xml_string = wi_string_with_bytes(p7_message->xml_buffer, p7_message->xml_length); wi_string_append_format(description, WI_STR(", xml = \"%@\", fields = (\n"), xml_string); } fields = wi_p7_message_fields(p7_message); enumerator = wi_hash_key_enumerator(fields); while((field_name = wi_enumerator_next_data(enumerator))) { wi_string_append_format(description, WI_STR(" %@ = %@\n"), field_name, wi_hash_data_for_key(fields, field_name)); } wi_string_append_string(description, WI_STR(")}")); return wi_autorelease(description); }