END_TEST /** * check has component asserts on NULL parameter */ START_TEST(nsurl_api_assert_has_component1_test) { bool has; has = nsurl_has_component(NULL, NSURL_PATH); ck_assert(has == false); }
END_TEST /** * check has component asserts on bad component parameter */ START_TEST(nsurl_api_assert_has_component2_test) { nserror err; nsurl *res; bool has; err = nsurl_create(base_str, &res); ck_assert(err == NSERROR_OK); has = nsurl_has_component(res, -1); ck_assert(has == false); nsurl_unref(res); }
END_TEST /** * has component */ START_TEST(nsurl_has_component_test) { nserror err; nsurl *url1; const struct test_compare *tst = &component_tests[_i]; bool status; /* not testing create, this should always succeed */ err = nsurl_create(tst->test1, &url1); ck_assert(err == NSERROR_OK); status = nsurl_has_component(url1, tst->parts); ck_assert(status == tst->res); nsurl_unref(url1); }
/* exported interface documented in image_cache.h */ int image_cache_snentryf(char *string, size_t size, unsigned int entryn, const char *fmt) { struct image_cache_entry_s *centry; size_t slen = 0; /* current output string length */ int fmtc = 0; /* current index into format string */ lwc_string *origin; /* current entry's origin */ centry = image_cache__findn(entryn); if (centry == NULL) return -1; while((slen < size) && (fmt[fmtc] != 0)) { if (fmt[fmtc] == '%') { fmtc++; switch (fmt[fmtc]) { case 'e': slen += snprintf(string + slen, size - slen, "%d", entryn); break; case 'r': slen += snprintf(string + slen, size - slen, "%u", centry->redraw_count); break; case 'a': slen += snprintf(string + slen, size - slen, "%.2f", (float)((image_cache->current_age - centry->redraw_age)) / 1000); break; case 'c': slen += snprintf(string + slen, size - slen, "%d", centry->conversion_count); break; case 'g': slen += snprintf(string + slen, size - slen, "%.2f", (float)((image_cache->current_age - centry->bitmap_age)) / 1000); break; case 'k': slen += snprintf(string + slen, size - slen, "%p", centry->content); break; case 'U': slen += snprintf(string + slen, size - slen, "%s", nsurl_access(llcache_handle_get_url(centry->content->llcache))); break; case 'o': if (nsurl_has_component(llcache_handle_get_url( centry->content->llcache), NSURL_HOST)) { origin = nsurl_get_component( llcache_handle_get_url( centry->content-> llcache), NSURL_HOST); slen += snprintf(string + slen, size - slen, "%s", lwc_string_data( origin)); lwc_string_unref(origin); } else { slen += snprintf(string + slen, size - slen, "%s", "localhost"); } break; case 's': if (centry->bitmap != NULL) { slen += snprintf(string + slen, size - slen, "%"SSIZET_FMT, centry->bitmap_size); } else { slen += snprintf(string + slen, size - slen, "0"); } break; } fmtc++; } else { string[slen] = fmt[fmtc]; slen++; fmtc++; } } /* Ensure that we NUL-terminate the output */ string[min(slen, size - 1)] = '\0'; return slen; }
static struct gui_download_window * gui_download_window_create(download_context *ctx, struct gui_window *gui) { nsurl *url = download_context_get_url(ctx); unsigned long total_size = download_context_get_total_length(ctx); gchar *domain; gchar *destination; gboolean unknown_size = total_size == 0; const char *size = (total_size == 0 ? messages_get("gtkUnknownSize") : human_friendly_bytesize(total_size)); nsgtk_download_parent = nsgtk_scaffolding_window(nsgtk_get_scaffold(gui)); struct gui_download_window *download = malloc(sizeof *download); if (download == NULL) { return NULL; } /* set the domain to the host component of the url if it exists */ if (nsurl_has_component(url, NSURL_HOST)) { domain = g_strdup(lwc_string_data(nsurl_get_component(url, NSURL_HOST))); } else { domain = g_strdup(messages_get("gtkUnknownHost")); } if (domain == NULL) { free(download); return NULL; } /* show the dialog */ destination = nsgtk_download_dialog_show( download_context_get_filename(ctx), domain, size); if (destination == NULL) { g_free(domain); free(download); return NULL; } /* Add the new row and store the reference to it (which keeps track of * the tree changes) */ gtk_list_store_prepend(nsgtk_download_store, &nsgtk_download_iter); download->row = gtk_tree_row_reference_new( GTK_TREE_MODEL(nsgtk_download_store), gtk_tree_model_get_path( GTK_TREE_MODEL(nsgtk_download_store), &nsgtk_download_iter)); download->ctx = ctx; download->name = g_string_new(download_context_get_filename(ctx)); download->time_left = g_string_new(""); download->size_total = total_size; download->size_downloaded = 0; download->speed = 0; download->start_time = g_timer_elapsed(nsgtk_downloads_timer, NULL); download->time_remaining = -1; download->status = NSGTK_DOWNLOAD_NONE; download->progress = 0; download->error = NULL; download->write = g_io_channel_new_file(destination, "w", &download->error); if (nsgtk_download_handle_error(download->error)) { g_string_free(download->name, TRUE); g_string_free(download->time_left, TRUE); free(download); return NULL; } g_io_channel_set_encoding(download->write, NULL, &download->error); nsgtk_download_change_sensitivity(download, NSGTK_DOWNLOAD_CANCEL); nsgtk_download_store_create_item(download); nsgtk_download_show(nsgtk_download_parent); if (unknown_size) nsgtk_download_change_status(download, NSGTK_DOWNLOAD_WORKING); if (nsgtk_downloads_num_active == 0) { g_timeout_add(UPDATE_RATE, (GSourceFunc) nsgtk_download_update, FALSE); } nsgtk_downloads_list = g_list_prepend(nsgtk_downloads_list, download); return download; }
/** * Check if this fetcher can fetch a url. * * \param url The url to check. * \return true if the fetcher supports the url else false. */ static bool fetch_curl_can_fetch(const nsurl *url) { return nsurl_has_component(url, NSURL_HOST); }