static void fsp_directory(FSP_SESSION *ses, struct uri *uri) { struct string buf; FSP_DIR *dir; unsigned char *data = get_uri_string(uri, URI_DATA); unsigned char dircolor[8] = ""; if (!data) fsp_error(connection_state(S_OUT_OF_MEM)); decode_uri(data); if (!is_in_state(init_directory_listing(&buf, uri), S_OK)) fsp_error(connection_state(S_OUT_OF_MEM)); dir = fsp_opendir(ses, data); if (!dir) fsp_error(connection_state_for_errno(errno)); fprintf(stderr, "text/html"); fclose(stderr); puts(buf.source); if (get_opt_bool("document.browse.links.color_dirs", NULL)) { color_to_string(get_opt_color("document.colors.dirs", NULL), dircolor); } sort_and_display_entries(dir, dircolor); fsp_closedir(dir); puts("</pre><hr/></body></html>"); fsp_close_session(ses); exit(0); }
/* First information such as permissions is gathered for each directory entry. * Finally the sorted entries are added to the @data->fragment one by one. */ static inline void add_dir_entries(struct directory_entry *entries, unsigned char *dirpath, struct string *page) { unsigned char dircolor[8]; int dirpathlen = strlen((const char *)dirpath); int i; /* Setup @dircolor so it's easy to check if we should color dirs. */ if (get_opt_bool((const unsigned char *)"document.browse.links.color_dirs", NULL)) { color_to_string(get_opt_color((const unsigned char *)"document.colors.dirs", NULL), (unsigned char *) &dircolor); } else { dircolor[0] = 0; } for (i = 0; entries[i].name; i++) { add_dir_entry(&entries[i], page, dirpathlen, dircolor); mem_free(entries[i].attrib); mem_free(entries[i].name); } /* We may have allocated space for entries but added none. */ mem_free_if(entries); }
void init_document_options(struct session *ses, struct document_options *doo) { /* Ensure that any padding bytes are cleared. */ memset(doo, 0, sizeof(*doo)); doo->assume_cp = get_opt_codepage("document.codepage.assume", ses); doo->hard_assume = get_opt_bool("document.codepage.force_assumed", ses); doo->use_document_colors = get_opt_int("document.colors.use_document_colors", ses); doo->margin = get_opt_int("document.browse.margin_width", ses); doo->num_links_key = get_opt_int("document.browse.links.number_keys_select_link", ses); doo->meta_link_display = get_opt_int("document.html.link_display", ses); doo->default_form_input_size = get_opt_int("document.browse.forms.input_size", ses); /* Color options. */ doo->default_style.color.foreground = get_opt_color("document.colors.text", ses); doo->default_style.color.background = get_opt_color("document.colors.background", ses); doo->default_color.link = get_opt_color("document.colors.link", ses); doo->default_color.vlink = get_opt_color("document.colors.vlink", ses); #ifdef CONFIG_BOOKMARKS doo->default_color.bookmark_link = get_opt_color("document.colors.bookmark", ses); #endif doo->default_color.image_link = get_opt_color("document.colors.image", ses); doo->active_link.color.foreground = get_opt_color("document.browse.links.active_link.colors.text", ses); doo->active_link.color.background = get_opt_color("document.browse.links.active_link.colors.background", ses); if (get_opt_bool("document.colors.increase_contrast", ses)) doo->color_flags |= COLOR_INCREASE_CONTRAST; if (get_opt_bool("document.colors.ensure_contrast", ses)) doo->color_flags |= COLOR_ENSURE_CONTRAST; /* Boolean options. */ #ifdef CONFIG_CSS doo->css_enable = get_opt_bool("document.css.enable", ses); doo->css_ignore_display_none = get_opt_bool("document.css.ignore_display_none", ses); doo->css_import = get_opt_bool("document.css.import", ses); #endif doo->plain_display_links = get_opt_bool("document.plain.display_links", ses); doo->plain_compress_empty_lines = get_opt_bool("document.plain.compress_empty_lines", ses); doo->underline_links = get_opt_bool("document.html.underline_links", ses); doo->wrap_nbsp = get_opt_bool("document.html.wrap_nbsp", ses); doo->use_tabindex = get_opt_bool("document.browse.links.use_tabindex", ses); doo->links_numbering = get_opt_bool("document.browse.links.numbering", ses); doo->active_link.enable_color = get_opt_bool("document.browse.links.active_link.enable_color", ses); doo->active_link.invert = get_opt_bool("document.browse.links.active_link.invert", ses); doo->active_link.underline = get_opt_bool("document.browse.links.active_link.underline", ses); doo->active_link.bold = get_opt_bool("document.browse.links.active_link.bold", ses); doo->table_order = get_opt_bool("document.browse.table_move_order", ses); doo->tables = get_opt_bool("document.html.display_tables", ses); doo->frames = get_opt_bool("document.html.display_frames", ses); doo->images = get_opt_bool("document.browse.images.show_as_links", ses); doo->display_subs = get_opt_bool("document.html.display_subs", ses); doo->display_sups = get_opt_bool("document.html.display_sups", ses); doo->framename = ""; doo->image_link.prefix = ""; doo->image_link.suffix = ""; doo->image_link.filename_maxlen = get_opt_int("document.browse.images.filename_maxlen", ses); doo->image_link.label_maxlen = get_opt_int("document.browse.images.label_maxlen", ses); doo->image_link.display_style = get_opt_int("document.browse.images.display_style", ses); doo->image_link.tagging = get_opt_int("document.browse.images.image_link_tagging", ses); doo->image_link.show_any_as_links = get_opt_bool("document.browse.images.show_any_as_links", ses); }