diff --git a/src/protocol/fsp/fsp.c b/src/protocol/fsp/fsp.c index c66848a49..58dba70ea 100644 --- a/src/protocol/fsp/fsp.c +++ b/src/protocol/fsp/fsp.c @@ -69,10 +69,10 @@ struct module fsp_protocol_module = struct_module( * stdout fails for directory listing like we do for file fetching. */ static void -fsp_error(unsigned char *error) +fsp_error(int error) { - fprintf(stderr, "text/plain"); - puts(error); + printf("%d\n", error); + fprintf(stderr, "text/x-error"); exit(1); } @@ -140,16 +140,16 @@ fsp_directory(FSP_SESSION *ses, struct uri *uri) unsigned char dircolor[8] = ""; if (!data || init_directory_listing(&buf, uri) != S_OK) - fsp_error("Out of memory"); + fsp_error(-S_OUT_OF_MEM); + + dir = fsp_opendir(ses, data); + if (!dir) fsp_error(errno); fprintf(stderr, "text/html"); fclose(stderr); puts(buf.source); - dir = fsp_opendir(ses, data); - if (!dir) goto end; - if (get_opt_bool("document.browse.links.color_dirs")) { color_to_string(get_opt_color("document.colors.dirs"), (unsigned char *) &dircolor); @@ -166,7 +166,6 @@ fsp_directory(FSP_SESSION *ses, struct uri *uri) } fsp_closedir(dir); } -end: puts("