[libsoup] soup-directory-input-stream: return a titleless html



commit 9edf2779f4a329c3d3deb7753b5f14c26f9fcd4f
Author: Sergio Villar Senin <svillar igalia com>
Date:   Thu Oct 27 17:22:39 2011 +0200

    soup-directory-input-stream: return a titleless html
    
    Do not set the title of the HTML document returned by
    SoupDirectoryInputStream. Also added the file size and the last modified
    date to the output.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=662266

 libsoup/soup-directory-input-stream.c |   41 +++++++++++++++++++++------------
 1 files changed, 26 insertions(+), 15 deletions(-)
---
diff --git a/libsoup/soup-directory-input-stream.c b/libsoup/soup-directory-input-stream.c
index 3ba74b7..48f6f4d 100644
--- a/libsoup/soup-directory-input-stream.c
+++ b/libsoup/soup-directory-input-stream.c
@@ -29,8 +29,9 @@
 #include <stdio.h>
 #include <string.h>
 
-#define INIT_STRING "<html><head><title>OMG!</title></head><body><table>"
-#define EXIT_STRING "</table></html>"
+#define INIT_STRING "<html>\n<body>\n<table><th align=\"left\">Name</th><th>Size</th><th>Date Modified</th>\n"
+#define ROW_FORMAT  "<td><a href=\"%s\">%s</a></td><td align=\"right\">%s</td><td align=\"right\" margin=8>%s</td>\n"
+#define EXIT_STRING "</table>\n</html>\n"
 
 G_DEFINE_TYPE (SoupDirectoryInputStream, soup_directory_input_stream, G_TYPE_INPUT_STREAM)
 
@@ -40,31 +41,41 @@ soup_directory_input_stream_parse_info (SoupDirectoryInputStream *stream,
 {
 	SoupBuffer *buffer;
 	GString *string;
-	const char *s;
-	char *escaped, *path, *xml_string;
+	const char *file_name;
+	char *escaped, *path, *xml_string, *size, *time;
+	GTimeVal modified;
+	GDateTime *modification_time;
 
 	if (!g_file_info_get_name (info))
 		return NULL;
 
-	s = g_file_info_get_display_name (info);
-	if (!s) {
-		s = g_file_info_get_name (info);
+	file_name = g_file_info_get_display_name (info);
+	if (!file_name) {
+		file_name = g_file_info_get_name (info);
 		/* FIXME: convert somehow? */
-		if (!g_utf8_validate (s, -1, NULL))
+		if (!g_utf8_validate (file_name, -1, NULL))
 			return NULL;
 	}
 	string = g_string_new ("<tr>");
 
-	xml_string = g_markup_escape_text (s, -1);
-	escaped = g_uri_escape_string (g_file_info_get_name (info), NULL, FALSE);
-	path = g_strconcat (stream->uri, "/", escaped, NULL);
+	xml_string = g_markup_escape_text (file_name, -1);
+	escaped = g_uri_escape_string (file_name, NULL, FALSE);
+	path = g_strconcat (stream->uri, G_DIR_SEPARATOR_S, escaped, NULL);
+	size = g_format_size_for_display (g_file_info_get_size (info));
+	g_file_info_get_modification_time (info, &modified);
+	modification_time = g_date_time_new_from_timeval_local (&modified);
+	time = g_date_time_format (modification_time, "%X %x");
+	g_date_time_unref (modification_time);
+
+	g_string_append_printf (string, ROW_FORMAT, path, xml_string, size, time);
+	g_string_append (string, "</tr>\n");
+	buffer = soup_buffer_new (SOUP_MEMORY_TAKE, string->str, string->len);
+
+	g_free (time);
 	g_free (escaped);
-	g_string_append_printf (string, "<td><a href=\"%s\">%s</a></td>", path, xml_string);
+	g_free (size);
 	g_free (path);
 	g_free (xml_string);
-	g_string_append (string, "</tr>");
-
-	buffer = soup_buffer_new (SOUP_MEMORY_TAKE, string->str, string->len);
 	g_string_free (string, FALSE);
 
 	return buffer;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]