r10643 stevef - /trunk/netsurf/riscos/print.c
by netsurf@semichrome.net
Author: stevef
Date: Thu Jul 15 16:06:10 2010
New Revision: 10643
URL: http://source.netsurf-browser.org?rev=10643&view=rev
Log:
Force browser window redraw after printing to restore screen layout.
Modified:
trunk/netsurf/riscos/print.c
Modified: trunk/netsurf/riscos/print.c
URL: http://source.netsurf-browser.org/trunk/netsurf/riscos/print.c?rev=10643&...
==============================================================================
--- trunk/netsurf/riscos/print.c (original)
+++ trunk/netsurf/riscos/print.c Thu Jul 15 16:06:10 2010
@@ -731,11 +731,13 @@
rufl_invalidate_cache();
- /* restore document layout */
+ /* restore document layout and redraw browser window */
if (content_get_type(h) == CONTENT_HTML)
/* TODO: Front end code shouldn't see contents */
layout_document(hlcache_handle_get_content(h),
saved_width, saved_height);
+
+ gui_window_redraw_window(g);
return true;
12 years, 6 months
r10642 tlsa - /trunk/netsurf/render/directory.c
by netsurf@semichrome.net
Author: tlsa
Date: Thu Jul 15 13:43:47 2010
New Revision: 10642
URL: http://source.netsurf-browser.org?rev=10642&view=rev
Log:
Fix so column suppression choices actually end up in the output.
Modified:
trunk/netsurf/render/directory.c
Modified: trunk/netsurf/render/directory.c
URL: http://source.netsurf-browser.org/trunk/netsurf/render/directory.c?rev=10...
==============================================================================
--- trunk/netsurf/render/directory.c (original)
+++ trunk/netsurf/render/directory.c Thu Jul 15 13:43:47 2010
@@ -1,6 +1,7 @@
/*
* Copyright 2006 Richard Wilson <info(a)tinct.net>
* Copyright 2010 Chris Young <chris(a)unsatisfactorysoftware.co.uk>
+ * Copyright 2010 Michael Drake <tlsa(a)netsurf-browser.org>
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
@@ -477,6 +478,9 @@
/* Set which columns to suppress */
dirlist_generate_hide_columns(0, buffer, MAX_LENGTH);
+ binding_parse_chunk(c->data.html.parser_binding,
+ (uint8_t *) buffer, strlen(buffer));
+
/* Print document title and heading */
dirlist_generate_title(nice_path, buffer, MAX_LENGTH);
free(nice_path);
12 years, 6 months
r10641 tlsa - /trunk/netsurf/render/directory.c
by netsurf@semichrome.net
Author: tlsa
Date: Thu Jul 15 13:01:59 2010
New Revision: 10641
URL: http://source.netsurf-browser.org?rev=10641&view=rev
Log:
Move HTML generating code into separate functions. Tidy up spacing when parent directory link is not shown.
Modified:
trunk/netsurf/render/directory.c
Modified: trunk/netsurf/render/directory.c
URL: http://source.netsurf-browser.org/trunk/netsurf/render/directory.c?rev=10...
==============================================================================
--- trunk/netsurf/render/directory.c (original)
+++ trunk/netsurf/render/directory.c Thu Jul 15 13:01:59 2010
@@ -39,16 +39,60 @@
#define MAX_LENGTH 2048
-static const char header[] =
- "<html>\n"
+#define NO_NAME_COLUMN 1
+#define NO_TYPE_COLUMN 1 << 1
+#define NO_SIZE_COLUMN 1 << 2
+#define NO_DATE_COLUMN 1 << 3
+#define NO_TIME_COLUMN 1 << 4
+
+static const char footer[] = "</div>\n</body>\n</html>\n";
+
+static const char* dirlist_generate_top(void);
+static bool dirlist_generate_hide_columns(int flags, char *buffer,
+ int buffer_length);
+static bool dirlist_generate_title(char *title, char *buffer,
+ int buffer_length);
+static bool dirlist_generate_parent_link(char *parent, char *buffer,
+ int buffer_length);
+static bool dirlist_generate_headings(char *buffer, int buffer_length);
+static bool dirlist_generate_row(bool even, bool directory, char *url,
+ char *name, char *type, long long size, char *date,
+ char *time, char *buffer, int buffer_length);
+static const char* dirlist_generate_bottom(void);
+
+static int dirlist_filesize_calculate(unsigned long *bytesize);
+static int dirlist_filesize_value(unsigned long bytesize);
+static char* dirlist_filesize_unit(unsigned long bytesize);
+
+
+/**
+ * Generates the top part of an HTML directroy listing page
+ *
+ * \return Top of directory listing HTML
+ *
+ * This is part of a series of functions. To generate a complete page,
+ * call the following functions in order:
+ *
+ * dirlist_generate_top()
+ * dirlist_generate_hide_columns() -- optional
+ * dirlist_generate_title()
+ * dirlist_generate_parent_link() -- optional
+ * dirlist_generate_headings()
+ * dirlist_generate_row() -- call 'n' times for 'n' rows
+ * dirlist_generate_bottom()
+ */
+
+const char* dirlist_generate_top(void)
+{
+ return "<html>\n"
"<head>\n"
"<style>\n"
"html, body { margin: 0; padding: 0; }\n"
"body { background-color: #abf; }\n"
"h1 { padding: 5mm; margin: 0; "
"border-bottom: 2px solid #bcf; }\n"
- "p { padding: 2px 5mm; margin: 0 0 1em 0; }\n"
- "div { display: table; width: 94%; margin: 0 auto; "
+ "p { padding: 2px 5mm; margin: 0; }\n"
+ "div { display: table; width: 94%; margin: 5mm auto 0 auto; "
"padding: 0; }\n"
"a, strong { display: table-row; margin: 0; padding: 0; }\n"
"a.odd { background-color: #bcf; }\n"
@@ -61,29 +105,257 @@
"a.dir > span.type { font-weight: bold; }\n"
"span.size { text-align: right; padding-right: 0.3em; }\n"
"span.size + span.size { text-align: left; "
- "padding-right: 0; }\n"
- "</style>\n"
- "<title>\n";
-static const char footer[] = "</div>\n</body>\n</html>\n";
-
-static char sizeunits[][7] = {"Bytes", "kBytes", "MBytes", "GBytes"};
-
-static int filesize_calculate(unsigned long *bytesize);
-static int filesize_value(unsigned long bytesize);
-static char* filesize_unit(unsigned long bytesize);
-
-
-bool directory_create(struct content *c, const struct http_parameter *params) {
- if (!html_create(c, params))
- /* html_create() must have broadcast MSG_ERROR already, so we
- * don't need to. */
- return false;
-
- binding_parse_chunk(c->data.html.parser_binding,
- (uint8_t *) header, sizeof(header) - 1);
-
- return true;
-}
+ "padding-right: 0; }\n";
+}
+
+
+/**
+ * Generates the part of an HTML directory listing page that can suppress
+ * particular columns
+ *
+ * \param flags flags for which cols to suppress. 0 to suppress none
+ * \param buffer buffer to fill with generated HTML
+ * \param buffer_length maximum size of buffer
+ * \return true iff buffer filled without error
+ *
+ * This is part of a series of functions. To generate a complete page,
+ * call the following functions in order:
+ *
+ * dirlist_generate_top()
+ * dirlist_generate_hide_columns() -- optional
+ * dirlist_generate_title()
+ * dirlist_generate_parent_link() -- optional
+ * dirlist_generate_headings()
+ * dirlist_generate_row() -- call 'n' times for 'n' rows
+ * dirlist_generate_bottom()
+ */
+
+bool dirlist_generate_hide_columns(int flags, char *buffer, int buffer_length)
+{
+ int error = snprintf(buffer, buffer_length,
+ "%s\n%s\n%s\n%s\n%s\n",
+ (flags & NO_NAME_COLUMN) ?
+ "span.name { display: none; }\n" : "",
+ (flags & NO_TYPE_COLUMN) ?
+ "span.type { display: none; }\n" : "",
+ (flags & NO_SIZE_COLUMN) ?
+ "span.size { display: none; }\n" : "",
+ (flags & NO_DATE_COLUMN) ?
+ "span.date { display: none; }\n" : "",
+ (flags & NO_TIME_COLUMN) ?
+ "span.time { display: none; }\n" : "");
+ if (error < 0 || error >= buffer_length)
+ /* Error or buffer too small */
+ return false;
+ else
+ /* OK */
+ return true;
+}
+
+
+/**
+ * Generates the part of an HTML directory listing page that contains the title
+ *
+ * \param title title to use, gets prefixed by "Index of "
+ * \param buffer buffer to fill with generated HTML
+ * \param buffer_length maximum size of buffer
+ * \return true iff buffer filled without error
+ *
+ * This is part of a series of functions. To generate a complete page,
+ * call the following functions in order:
+ *
+ * dirlist_generate_top()
+ * dirlist_generate_hide_columns() -- optional
+ * dirlist_generate_title()
+ * dirlist_generate_parent_link() -- optional
+ * dirlist_generate_headings()
+ * dirlist_generate_row() -- call 'n' times for 'n' rows
+ * dirlist_generate_bottom()
+ */
+
+bool dirlist_generate_title(char *title, char *buffer, int buffer_length)
+{
+ int error = snprintf(buffer, buffer_length,
+ "</style>\n"
+ "<title>Index of %s</title>\n"
+ "</head>\n"
+ "<body>\n"
+ "<h1>Index of %s</h1>\n",
+ title, title);
+ if (error < 0 || error >= buffer_length)
+ /* Error or buffer too small */
+ return false;
+ else
+ /* OK */
+ return true;
+}
+
+
+/**
+ * Generates the part of an HTML directory listing page that links to the parent
+ * directory
+ *
+ * \param parent url of parent directory
+ * \param buffer buffer to fill with generated HTML
+ * \param buffer_length maximum size of buffer
+ * \return true iff buffer filled without error
+ *
+ * This is part of a series of functions. To generate a complete page,
+ * call the following functions in order:
+ *
+ * dirlist_generate_top()
+ * dirlist_generate_hide_columns() -- optional
+ * dirlist_generate_title()
+ * dirlist_generate_parent_link() -- optional
+ * dirlist_generate_headings()
+ * dirlist_generate_row() -- call 'n' times for 'n' rows
+ * dirlist_generate_bottom()
+ */
+
+bool dirlist_generate_parent_link(char *parent, char *buffer, int buffer_length)
+{
+ int error = snprintf(buffer, buffer_length,
+ "<p><a href=\"%s\">%s</a></p>",
+ parent, messages_get("FileParent"));
+ if (error < 0 || error >= buffer_length)
+ /* Error or buffer too small */
+ return false;
+ else
+ /* OK */
+ return true;
+}
+
+
+/**
+ * Generates the part of an HTML directory listing page that displays the column
+ * headings
+ *
+ * \param buffer buffer to fill with generated HTML
+ * \param buffer_length maximum size of buffer
+ * \return true iff buffer filled without error
+ *
+ * This is part of a series of functions. To generate a complete page,
+ * call the following functions in order:
+ *
+ * dirlist_generate_top()
+ * dirlist_generate_hide_columns() -- optional
+ * dirlist_generate_title()
+ * dirlist_generate_parent_link() -- optional
+ * dirlist_generate_headings()
+ * dirlist_generate_row() -- call 'n' times for 'n' rows
+ * dirlist_generate_bottom()
+ */
+
+bool dirlist_generate_headings(char *buffer, int buffer_length)
+{
+ int error = snprintf(buffer, buffer_length,
+ "<div>\n<strong>"
+ "<span class=\"name\">%s</span> "
+ "<span class=\"type\">%s</span> "
+ "<span class=\"size\">%s</span>"
+ "<span class=\"size\"></span> "
+ "<span class=\"date\">%s</span> "
+ "<span class=\"time\">%s</span></strong>\n",
+ messages_get("FileName"), messages_get("FileType"),
+ messages_get("FileSize"), messages_get("FileDate"),
+ messages_get("FileTime"));
+ if (error < 0 || error >= buffer_length)
+ /* Error or buffer too small */
+ return false;
+ else
+ /* OK */
+ return true;
+}
+
+
+/**
+ * Generates the part of an HTML directory listing page that displays a row
+ * in the directory contents table
+ *
+ * \param even evenness of row number, for alternate row colouring
+ * \param directory whether this row is for a directory (or a file)
+ * \param url url for row entry
+ * \param name name of row entry
+ * \param type MIME type of row entry
+ * \param size size of row entry. If negative, size is left blank
+ * \param date date row entry was last modified
+ * \param time time row entry was last modified
+ * \param buffer buffer to fill with generated HTML
+ * \param buffer_length maximum size of buffer
+ * \return true iff buffer filled without error
+ *
+ * This is part of a series of functions. To generate a complete page,
+ * call the following functions in order:
+ *
+ * dirlist_generate_top()
+ * dirlist_generate_hide_columns() -- optional
+ * dirlist_generate_title()
+ * dirlist_generate_parent_link() -- optional
+ * dirlist_generate_headings()
+ * dirlist_generate_row() -- call 'n' times for 'n' rows
+ * dirlist_generate_bottom()
+ */
+
+bool dirlist_generate_row(bool even, bool directory, char *url, char *name,
+ char *type, long long size, char *date, char *time,
+ char *buffer, int buffer_length)
+{
+ const char *unit;
+ char size_string[100];
+
+ if (size < 0) {
+ unit = "";
+ strncpy(size_string, "", sizeof size_string);
+ } else {
+ unit = messages_get(dirlist_filesize_unit((unsigned long)size));
+ snprintf(size_string, sizeof size_string, "%d",
+ dirlist_filesize_value((unsigned long)size));
+ }
+
+ int error = snprintf(buffer, buffer_length,
+ "<a href=\"%s\" class=\"%s %s\">"
+ "<span class=\"name\">%s</span> "
+ "<span class=\"type\">%s</span> "
+ "<span class=\"size\">%s</span>"
+ "<span class=\"size\">%s</span> "
+ "<span class=\"date\">%s</span> "
+ "<span class=\"time\">%s</span></a>\n",
+ url, even ? "even" : "odd",
+ directory ? "dir" : "file",
+ name, type, size_string, unit, date, time);
+ if (error < 0 || error >= buffer_length)
+ /* Error or buffer too small */
+ return false;
+ else
+ /* OK */
+ return true;
+}
+
+
+/**
+ * Generates the bottom part of an HTML directroy listing page
+ *
+ * \return Bottom of directory listing HTML
+ *
+ * This is part of a series of functions. To generate a complete page,
+ * call the following functions in order:
+ *
+ * dirlist_generate_top()
+ * dirlist_generate_hide_columns() -- optional
+ * dirlist_generate_title()
+ * dirlist_generate_parent_link() -- optional
+ * dirlist_generate_headings()
+ * dirlist_generate_row() -- call 'n' times for 'n' rows
+ * dirlist_generate_bottom()
+ */
+
+const char* dirlist_generate_bottom(void)
+{
+ return "</div>\n"
+ "</body>\n"
+ "</html>\n";
+}
+
/**
* Obtain display value and units for filesize after conversion to B/kB/MB/GB,
@@ -93,7 +365,7 @@
* \return number of times bytesize has been divided by 1024
*/
-int filesize_calculate(unsigned long *bytesize)
+int dirlist_filesize_calculate(unsigned long *bytesize)
{
int i = 0;
while (*bytesize > 1024 * 4) {
@@ -105,6 +377,7 @@
return i;
}
+
/**
* Obtain display value for filesize after conversion to B/kB/MB/GB,
* as appropriate
@@ -113,11 +386,12 @@
* \return Value to display for file size, in units given by filesize_unit()
*/
-int filesize_value(unsigned long bytesize)
-{
- filesize_calculate(&bytesize);
+int dirlist_filesize_value(unsigned long bytesize)
+{
+ dirlist_filesize_calculate(&bytesize);
return (int)bytesize;
}
+
/**
* Obtain display units for filesize after conversion to B/kB/MB/GB,
@@ -127,9 +401,24 @@
* \return Units to display for file size, for value given by filesize_value()
*/
-char* filesize_unit(unsigned long bytesize)
-{
- return sizeunits[filesize_calculate(&bytesize)];
+char* dirlist_filesize_unit(unsigned long bytesize)
+{
+ const char* units[] = { "Bytes", "kBytes", "MBytes", "GBytes" };
+ return (char*)units[dirlist_filesize_calculate(&bytesize)];
+}
+
+
+bool directory_create(struct content *c, const struct http_parameter *params) {
+ if (!html_create(c, params))
+ /* html_create() must have broadcast MSG_ERROR already, so we
+ * don't need to. */
+ return false;
+
+ binding_parse_chunk(c->data.html.parser_binding,
+ (uint8_t *) dirlist_generate_top(),
+ strlen(dirlist_generate_top()));
+
+ return true;
}
bool directory_convert(struct content *c) {
@@ -140,7 +429,7 @@
char buffer[MAX_LENGTH];
char *nice_path, *cnv, *tmp;
url_func_result res;
- bool compare;
+ bool compare, directory;
char *up;
struct stat filestat;
char *filepath, *mimetype = NULL;
@@ -149,6 +438,7 @@
int urlpath_size;
char moddate[100];
char modtime[100];
+ long long filesize;
bool extendedinfo, evenrow = false;
/* Get directory path from URL */
@@ -184,10 +474,11 @@
}
*cnv = '\0';
+ /* Set which columns to suppress */
+ dirlist_generate_hide_columns(0, buffer, MAX_LENGTH);
+
/* Print document title and heading */
- snprintf(buffer, sizeof(buffer), "Index of %s</title>\n</head>\n"
- "<body>\n<h1>Index of %s</h1>\n",
- nice_path, nice_path);
+ dirlist_generate_title(nice_path, buffer, MAX_LENGTH);
free(nice_path);
binding_parse_chunk(c->data.html.parser_binding,
@@ -198,9 +489,7 @@
if (res == URL_FUNC_OK) {
res = url_compare(content__get_url(c), up, false, &compare);
if ((res == URL_FUNC_OK) && !compare) {
- snprintf(buffer, sizeof(buffer),
- "<p><a href=\"%s\">%s</a></p>",
- up, messages_get("FileParent"));
+ dirlist_generate_parent_link(up, buffer, MAX_LENGTH);
binding_parse_chunk(c->data.html.parser_binding,
(uint8_t *) buffer, strlen(buffer));
@@ -209,16 +498,7 @@
}
/* Print directory contents table column headings */
- snprintf(buffer, sizeof(buffer),
- "<div>\n<strong>"
- "<span class=\"name\">%s</span> "
- "<span class=\"type\">%s</span> "
- "<span class=\"size\">%s</span><span class=\"size\"></span> "
- "<span class=\"date\">%s</span> "
- "<span class=\"time\">%s</span></strong>\n",
- messages_get("FileName"), messages_get("FileType"),
- messages_get("FileSize"), messages_get("FileDate"),
- messages_get("FileTime"));
+ dirlist_generate_headings(buffer, MAX_LENGTH);
binding_parse_chunk(c->data.html.parser_binding,
(uint8_t *) buffer, strlen(buffer));
@@ -257,7 +537,13 @@
return false;
}
- urlpath_size = strlen(content__get_url(c)) + strlen(entry->d_name) + 2;
+ if (S_ISDIR(filestat.st_mode))
+ directory = true;
+ else
+ directory = false;
+
+ urlpath_size = strlen(content__get_url(c)) +
+ strlen(entry->d_name) + 2;
urlpath = malloc(urlpath_size);
if (urlpath != NULL) {
strcpy(urlpath, content__get_url(c));
@@ -265,65 +551,41 @@
strncat(urlpath, "/", urlpath_size);
strncat(urlpath, entry->d_name, urlpath_size);
- /* Start row and print item name */
- snprintf(buffer, sizeof(buffer),
- "<a href=\"%s\" class=\"%s %s\">"
- "<span class=\"name\">%s</span> ",
- urlpath,
- evenrow ? "even" : "odd",
- S_ISDIR(filestat.st_mode) ? "dir" : "file",
- entry->d_name);
-
- binding_parse_chunk(c->data.html.parser_binding,
- (uint8_t *) buffer, strlen(buffer));
-
if (extendedinfo == true) {
/* Get date in output format */
if (strftime((char *)&moddate, sizeof moddate,
"%a %d %b %Y",
- localtime(&filestat.st_mtime)) == 0)
+ localtime(
+ &filestat.st_mtime)) == 0)
strncpy(moddate, "-", sizeof moddate);
/* Get time in output format */
if (strftime((char *)&modtime, sizeof modtime,
"%H:%M",
- localtime(&filestat.st_mtime)) == 0)
+ localtime(
+ &filestat.st_mtime)) == 0)
strncpy(modtime, "-", sizeof modtime);
- if (S_ISDIR(filestat.st_mode)) {
- /* Directory: Print type and date/time */
- snprintf(buffer, sizeof(buffer),
- "<span class=\"type\">%s</span> "
- "<span class=\"size\"></span>"
- "<span class=\"size\"></span> "
- "<span class=\"date\">%s</span> "
- "<span class=\"time\">%s</span></a>\n",
- messages_get("FileDirectory"),
- moddate, modtime);
+ if (directory) {
+ mimetype = (char*)messages_get(
+ "FileDirectory");
+ filesize = -1;
} else {
- /* File: Print type, size, and date/time */
mimetype = fetch_mimetype(filepath);
- snprintf(buffer, sizeof(buffer),
- "<span class=\"type\">%s</span> "
- "<span class=\"size\">%d</span>"
- "<span class=\"size\">%s</span> "
- "<span class=\"date\">%s</span> "
- "<span class=\"time\">%s</span></a>\n",
- mimetype,
- filesize_value(
- (unsigned long)filestat.st_size),
- messages_get(filesize_unit(
- (unsigned long)filestat.st_size)),
- moddate, modtime);
+ filesize = (long long)
+ filestat.st_size;
}
} else {
- /* Not got info, print empty cells */
- snprintf(buffer, sizeof(buffer),
- "<span class=\"type\"></span> "
- "<span class=\"size\"></span>"
- "<span class=\"size\"></span> "
- "<span class=\"date\"></span> "
- "<span class=\"time\"></span></a>\n");
+ strncpy(moddate, "", sizeof moddate);
+ strncpy(modtime, "", sizeof modtime);
+ filesize = -1;
}
+ /* Print row */
+ dirlist_generate_row(evenrow, directory,
+ urlpath, entry->d_name,
+ mimetype ? mimetype : (char*)"",
+ filesize,
+ moddate, modtime,
+ buffer, MAX_LENGTH);
binding_parse_chunk(c->data.html.parser_binding,
(uint8_t *) buffer, strlen(buffer));
@@ -345,7 +607,8 @@
closedir(parent);
binding_parse_chunk(c->data.html.parser_binding,
- (uint8_t *) footer, sizeof(footer) - 1);
+ (uint8_t *) dirlist_generate_bottom(),
+ strlen(dirlist_generate_bottom()));
c->type = CONTENT_HTML;
return html_convert(c);
12 years, 6 months
r10640 stevef - /trunk/netsurf/riscos/print.c
by netsurf@semichrome.net
Author: stevef
Date: Wed Jul 14 18:03:08 2010
New Revision: 10640
URL: http://source.netsurf-browser.org?rev=10640&view=rev
Log:
Work around apparent register corruption after printing.
Modified:
trunk/netsurf/riscos/print.c
Modified: trunk/netsurf/riscos/print.c
URL: http://source.netsurf-browser.org/trunk/netsurf/riscos/print.c?rev=10640&...
==============================================================================
--- trunk/netsurf/riscos/print.c (original)
+++ trunk/netsurf/riscos/print.c Wed Jul 14 18:03:08 2010
@@ -21,6 +21,7 @@
#include <assert.h>
#include <string.h>
+#include "swis.h"
#include "oslib/font.h"
#include "oslib/hourglass.h"
#include "oslib/osfile.h"
@@ -694,8 +695,14 @@
print_active = false;
ro_gui_current_redraw_gui = 0;
- /* clean up */
- error = xpdriver_end_jobw(fhandle);
+ /* clean up
+ *
+ * Call PDriver_EndJob via _swix() so that r9 is preserved. This
+ * prevents a crash if the SWI corrupts it on exit (as seems to
+ * happen on some versions of RISC OS 6).
+ */
+
+ error = (os_error *) _swix(PDriver_EndJob, _IN(0), (int) fhandle);
if (error) {
LOG(("xpdriver_end_jobw: 0x%x: %s",
error->errnum, error->errmess));
12 years, 6 months
r10639 chris_y - in /trunk/netsurf: amiga/misc.c render/directory.c
by netsurf@semichrome.net
Author: chris_y
Date: Wed Jul 14 17:36:04 2010
New Revision: 10639
URL: http://source.netsurf-browser.org?rev=10639&view=rev
Log:
More intelligent path concatenation
Modified:
trunk/netsurf/amiga/misc.c
trunk/netsurf/render/directory.c
Modified: trunk/netsurf/amiga/misc.c
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/misc.c?rev=10639&r1...
==============================================================================
--- trunk/netsurf/amiga/misc.c (original)
+++ trunk/netsurf/amiga/misc.c Wed Jul 14 17:36:04 2010
@@ -72,6 +72,9 @@
if (strncmp(url, "/", SLEN("/")) == 0)
url += SLEN("/");
+
+ if(*url == '\0')
+ return NULL; /* file:/// is not a valid path */
url2 = malloc(strlen(url) + 2);
strcpy(url2, url);
Modified: trunk/netsurf/render/directory.c
URL: http://source.netsurf-browser.org/trunk/netsurf/render/directory.c?rev=10...
==============================================================================
--- trunk/netsurf/render/directory.c (original)
+++ trunk/netsurf/render/directory.c Wed Jul 14 17:36:04 2010
@@ -145,6 +145,8 @@
struct stat filestat;
char *filepath, *mimetype = NULL;
int filepath_size;
+ char *urlpath;
+ int urlpath_size;
char moddate[100];
char modtime[100];
bool extendedinfo, evenrow = false;
@@ -196,8 +198,6 @@
if (res == URL_FUNC_OK) {
res = url_compare(content__get_url(c), up, false, &compare);
if ((res == URL_FUNC_OK) && !compare) {
- if (up[strlen(up) - 1] == '/')
- up[strlen(up) - 1] = '\0';
snprintf(buffer, sizeof(buffer),
"<p><a href=\"%s\">%s</a></p>",
up, messages_get("FileParent"));
@@ -257,68 +257,79 @@
return false;
}
- /* Start row and print item name */
- snprintf(buffer, sizeof(buffer),
- "<a href=\"%s/%s\" class=\"%s %s\">"
+ urlpath_size = strlen(content__get_url(c)) + strlen(entry->d_name) + 2;
+ urlpath = malloc(urlpath_size);
+ if (urlpath != NULL) {
+ strcpy(urlpath, content__get_url(c));
+ if(urlpath[strlen(urlpath) - 1] != '/')
+ strncat(urlpath, "/", urlpath_size);
+ strncat(urlpath, entry->d_name, urlpath_size);
+
+ /* Start row and print item name */
+ snprintf(buffer, sizeof(buffer),
+ "<a href=\"%s\" class=\"%s %s\">"
"<span class=\"name\">%s</span> ",
- content__get_url(c), entry->d_name,
+ urlpath,
evenrow ? "even" : "odd",
S_ISDIR(filestat.st_mode) ? "dir" : "file",
entry->d_name);
- binding_parse_chunk(c->data.html.parser_binding,
- (uint8_t *) buffer, strlen(buffer));
-
- if (extendedinfo == true) {
- /* Get date in output format */
- if (strftime((char *)&moddate, sizeof moddate,
- "%a %d %b %Y",
- localtime(&filestat.st_mtime)) == 0)
- strncpy(moddate, "-", sizeof moddate);
- /* Get time in output format */
- if (strftime((char *)&modtime, sizeof modtime,
- "%H:%M",
- localtime(&filestat.st_mtime)) == 0)
- strncpy(modtime, "-", sizeof modtime);
-
- if (S_ISDIR(filestat.st_mode)) {
- /* Directory: Print type and date/time */
+ binding_parse_chunk(c->data.html.parser_binding,
+ (uint8_t *) buffer, strlen(buffer));
+
+ if (extendedinfo == true) {
+ /* Get date in output format */
+ if (strftime((char *)&moddate, sizeof moddate,
+ "%a %d %b %Y",
+ localtime(&filestat.st_mtime)) == 0)
+ strncpy(moddate, "-", sizeof moddate);
+ /* Get time in output format */
+ if (strftime((char *)&modtime, sizeof modtime,
+ "%H:%M",
+ localtime(&filestat.st_mtime)) == 0)
+ strncpy(modtime, "-", sizeof modtime);
+
+ if (S_ISDIR(filestat.st_mode)) {
+ /* Directory: Print type and date/time */
+ snprintf(buffer, sizeof(buffer),
+ "<span class=\"type\">%s</span> "
+ "<span class=\"size\"></span>"
+ "<span class=\"size\"></span> "
+ "<span class=\"date\">%s</span> "
+ "<span class=\"time\">%s</span></a>\n",
+ messages_get("FileDirectory"),
+ moddate, modtime);
+ } else {
+ /* File: Print type, size, and date/time */
+ mimetype = fetch_mimetype(filepath);
+ snprintf(buffer, sizeof(buffer),
+ "<span class=\"type\">%s</span> "
+ "<span class=\"size\">%d</span>"
+ "<span class=\"size\">%s</span> "
+ "<span class=\"date\">%s</span> "
+ "<span class=\"time\">%s</span></a>\n",
+ mimetype,
+ filesize_value(
+ (unsigned long)filestat.st_size),
+ messages_get(filesize_unit(
+ (unsigned long)filestat.st_size)),
+ moddate, modtime);
+ }
+ } else {
+ /* Not got info, print empty cells */
snprintf(buffer, sizeof(buffer),
- "<span class=\"type\">%s</span> "
- "<span class=\"size\"></span>"
- "<span class=\"size\"></span> "
- "<span class=\"date\">%s</span> "
- "<span class=\"time\">%s</span></a>\n",
- messages_get("FileDirectory"),
- moddate, modtime);
- } else {
- /* File: Print type, size, and date/time */
- mimetype = fetch_mimetype(filepath);
- snprintf(buffer, sizeof(buffer),
- "<span class=\"type\">%s</span> "
- "<span class=\"size\">%d</span>"
- "<span class=\"size\">%s</span> "
- "<span class=\"date\">%s</span> "
- "<span class=\"time\">%s</span></a>\n",
- mimetype,
- filesize_value(
- (unsigned long)filestat.st_size),
- messages_get(filesize_unit(
- (unsigned long)filestat.st_size)),
- moddate, modtime);
+ "<span class=\"type\"></span> "
+ "<span class=\"size\"></span>"
+ "<span class=\"size\"></span> "
+ "<span class=\"date\"></span> "
+ "<span class=\"time\"></span></a>\n");
}
- } else {
- /* Not got info, print empty cells */
- snprintf(buffer, sizeof(buffer),
- "<span class=\"type\"></span> "
- "<span class=\"size\"></span>"
- "<span class=\"size\"></span> "
- "<span class=\"date\"></span> "
- "<span class=\"time\"></span></a>\n");
- }
-
- binding_parse_chunk(c->data.html.parser_binding,
- (uint8_t *) buffer, strlen(buffer));
+
+ binding_parse_chunk(c->data.html.parser_binding,
+ (uint8_t *) buffer, strlen(buffer));
+
+ free(urlpath);
+ }
if (evenrow == false)
evenrow = true;
12 years, 6 months
r10638 tlsa - /trunk/netsurf/render/directory.c
by netsurf@semichrome.net
Author: tlsa
Date: Wed Jul 14 11:08:55 2010
New Revision: 10638
URL: http://source.netsurf-browser.org?rev=10638&view=rev
Log:
Squash mimetype may be used uninitialised warning.
Modified:
trunk/netsurf/render/directory.c
Modified: trunk/netsurf/render/directory.c
URL: http://source.netsurf-browser.org/trunk/netsurf/render/directory.c?rev=10...
==============================================================================
--- trunk/netsurf/render/directory.c (original)
+++ trunk/netsurf/render/directory.c Wed Jul 14 11:08:55 2010
@@ -143,7 +143,8 @@
bool compare;
char *up;
struct stat filestat;
- char *filepath, *mimetype;
+ char *filepath, *mimetype = NULL;
+ int filepath_size;
char moddate[100];
char modtime[100];
bool extendedinfo, evenrow = false;
@@ -235,21 +236,25 @@
/* Skip . and .. entries */
continue;
- extendedinfo = false;
-
- filepath = malloc(strlen(path) + strlen(entry->d_name) + 2);
+ filepath_size = strlen(path) + strlen(entry->d_name) + 2;
+ filepath = malloc(filepath_size);
if (filepath != NULL) {
strcpy(filepath, path);
- if (path_add_part(filepath,
- (strlen(path) +
- strlen(entry->d_name) + 2),
- entry->d_name)) {
- if (stat(filepath, &filestat) == 0) {
- mimetype = fetch_mimetype(filepath);
- extendedinfo = true;
- }
+ if (path_add_part(filepath, filepath_size,
+ entry->d_name) == false) {
+ msg_data.error = messages_get("MiscErr");
+ content_broadcast(c, CONTENT_MSG_ERROR,
+ msg_data);
+ return false;
}
- free(filepath);
+ if (stat(filepath, &filestat) == 0)
+ extendedinfo = true;
+ else
+ extendedinfo = false;
+ } else {
+ msg_data.error = messages_get("MiscErr");
+ content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
+ return false;
}
/* Start row and print item name */
@@ -288,6 +293,7 @@
moddate, modtime);
} else {
/* File: Print type, size, and date/time */
+ mimetype = fetch_mimetype(filepath);
snprintf(buffer, sizeof(buffer),
"<span class=\"type\">%s</span> "
"<span class=\"size\">%d</span>"
@@ -319,8 +325,11 @@
else
evenrow = false;
- if (mimetype)
+ if (mimetype != NULL) {
free(mimetype);
+ mimetype = NULL;
+ }
+ free(filepath);
}
closedir(parent);
12 years, 6 months
r10637 tlsa - /trunk/netsurf/render/directory.c
by netsurf@semichrome.net
Author: tlsa
Date: Wed Jul 14 08:36:15 2010
New Revision: 10637
URL: http://source.netsurf-browser.org?rev=10637&view=rev
Log:
Add comments and factor out common file size code.
Modified:
trunk/netsurf/render/directory.c
Modified: trunk/netsurf/render/directory.c
URL: http://source.netsurf-browser.org/trunk/netsurf/render/directory.c?rev=10...
==============================================================================
--- trunk/netsurf/render/directory.c (original)
+++ trunk/netsurf/render/directory.c Wed Jul 14 08:36:15 2010
@@ -68,6 +68,7 @@
static char sizeunits[][7] = {"Bytes", "kBytes", "MBytes", "GBytes"};
+static int filesize_calculate(unsigned long *bytesize);
static int filesize_value(unsigned long bytesize);
static char* filesize_unit(unsigned long bytesize);
@@ -84,28 +85,51 @@
return true;
}
-int filesize_value(unsigned long bytesize) {
+/**
+ * Obtain display value and units for filesize after conversion to B/kB/MB/GB,
+ * as appropriate.
+ *
+ * \param bytesize file size in bytes, updated to filesize in output units
+ * \return number of times bytesize has been divided by 1024
+ */
+
+int filesize_calculate(unsigned long *bytesize)
+{
int i = 0;
- while (bytesize > 1024 * 4) {
- bytesize /= 1024;
+ while (*bytesize > 1024 * 4) {
+ *bytesize /= 1024;
i++;
if (i == 3)
break;
}
-
- return bytesize;
-}
-
-char* filesize_unit(unsigned long bytesize) {
- int i = 0;
- while (bytesize > 1024 * 4) {
- bytesize /= 1024;
- i++;
- if (i == 3)
- break;
- }
-
- return sizeunits[i];
+ return i;
+}
+
+/**
+ * Obtain display value for filesize after conversion to B/kB/MB/GB,
+ * as appropriate
+ *
+ * \param bytesize file size in bytes
+ * \return Value to display for file size, in units given by filesize_unit()
+ */
+
+int filesize_value(unsigned long bytesize)
+{
+ filesize_calculate(&bytesize);
+ return (int)bytesize;
+}
+
+/**
+ * Obtain display units for filesize after conversion to B/kB/MB/GB,
+ * as appropriate
+ *
+ * \param bytesize file size in bytes
+ * \return Units to display for file size, for value given by filesize_value()
+ */
+
+char* filesize_unit(unsigned long bytesize)
+{
+ return sizeunits[filesize_calculate(&bytesize)];
}
bool directory_convert(struct content *c) {
@@ -124,18 +148,22 @@
char modtime[100];
bool extendedinfo, evenrow = false;
+ /* Get directory path from URL */
path = url_to_path(content__get_url(c));
if (!path) {
msg_data.error = messages_get("NoMemory");
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
return false;
}
+
+ /* Convert path for display */
nice_path = malloc(strlen(path) * 4 + 1);
if (!nice_path) {
msg_data.error = messages_get("MiscErr");
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
return false;
}
+ /* Escape special HTML characters */
for (cnv = nice_path, tmp = path; *tmp != '\0'; tmp++) {
if (*tmp == '<') {
*cnv++ = '&';
@@ -152,6 +180,8 @@
}
}
*cnv = '\0';
+
+ /* Print document title and heading */
snprintf(buffer, sizeof(buffer), "Index of %s</title>\n</head>\n"
"<body>\n<h1>Index of %s</h1>\n",
nice_path, nice_path);
@@ -160,8 +190,8 @@
binding_parse_chunk(c->data.html.parser_binding,
(uint8_t *) buffer, strlen(buffer));
+ /* Print parent directory link */
res = url_parent(content__get_url(c), &up);
-
if (res == URL_FUNC_OK) {
res = url_compare(content__get_url(c), up, false, &compare);
if ((res == URL_FUNC_OK) && !compare) {
@@ -177,6 +207,7 @@
free(up);
}
+ /* Print directory contents table column headings */
snprintf(buffer, sizeof(buffer),
"<div>\n<strong>"
"<span class=\"name\">%s</span> "
@@ -196,9 +227,12 @@
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
return false;
}
+
+ /* Print a row for each item in the directory */
while ((entry = readdir(parent)) != NULL) {
if (!strcmp(entry->d_name, ".") ||
!strcmp(entry->d_name, ".."))
+ /* Skip . and .. entries */
continue;
extendedinfo = false;
@@ -218,6 +252,7 @@
free(filepath);
}
+ /* Start row and print item name */
snprintf(buffer, sizeof(buffer),
"<a href=\"%s/%s\" class=\"%s %s\">"
"<span class=\"name\">%s</span> ",
@@ -230,16 +265,19 @@
(uint8_t *) buffer, strlen(buffer));
if (extendedinfo == true) {
+ /* Get date in output format */
if (strftime((char *)&moddate, sizeof moddate,
"%a %d %b %Y",
localtime(&filestat.st_mtime)) == 0)
strncpy(moddate, "-", sizeof moddate);
+ /* Get time in output format */
if (strftime((char *)&modtime, sizeof modtime,
"%H:%M",
localtime(&filestat.st_mtime)) == 0)
strncpy(modtime, "-", sizeof modtime);
if (S_ISDIR(filestat.st_mode)) {
+ /* Directory: Print type and date/time */
snprintf(buffer, sizeof(buffer),
"<span class=\"type\">%s</span> "
"<span class=\"size\"></span>"
@@ -249,6 +287,7 @@
messages_get("FileDirectory"),
moddate, modtime);
} else {
+ /* File: Print type, size, and date/time */
snprintf(buffer, sizeof(buffer),
"<span class=\"type\">%s</span> "
"<span class=\"size\">%d</span>"
@@ -263,6 +302,7 @@
moddate, modtime);
}
} else {
+ /* Not got info, print empty cells */
snprintf(buffer, sizeof(buffer),
"<span class=\"type\"></span> "
"<span class=\"size\"></span>"
12 years, 6 months
r10636 tlsa - /trunk/netsurf/render/directory.c
by netsurf@semichrome.net
Author: tlsa
Date: Wed Jul 14 07:26:14 2010
New Revision: 10636
URL: http://source.netsurf-browser.org?rev=10636&view=rev
Log:
Restyle directory listings.
Modified:
trunk/netsurf/render/directory.c
Modified: trunk/netsurf/render/directory.c
URL: http://source.netsurf-browser.org/trunk/netsurf/render/directory.c?rev=10...
==============================================================================
--- trunk/netsurf/render/directory.c (original)
+++ trunk/netsurf/render/directory.c Wed Jul 14 07:26:14 2010
@@ -39,8 +39,37 @@
#define MAX_LENGTH 2048
-static const char header[] = "<html>\n<head>\n<title>\n";
-static const char footer[] = "</table>\n</tt>\n</body>\n</html>\n";
+static const char header[] =
+ "<html>\n"
+ "<head>\n"
+ "<style>\n"
+ "html, body { margin: 0; padding: 0; }\n"
+ "body { background-color: #abf; }\n"
+ "h1 { padding: 5mm; margin: 0; "
+ "border-bottom: 2px solid #bcf; }\n"
+ "p { padding: 2px 5mm; margin: 0 0 1em 0; }\n"
+ "div { display: table; width: 94%; margin: 0 auto; "
+ "padding: 0; }\n"
+ "a, strong { display: table-row; margin: 0; padding: 0; }\n"
+ "a.odd { background-color: #bcf; }\n"
+ "a.even { background-color: #b2c3ff; }\n"
+ "span { display: table-cell; }\n"
+ "em > span { padding-bottom: 1px; }\n"
+ "a + a>span { border-top: 1px solid #9af; }\n"
+ "span.name { padding-left: 22px; min-height: 19px;}\n"
+ "a.dir > span.name { font-weight: bold; }\n"
+ "a.dir > span.type { font-weight: bold; }\n"
+ "span.size { text-align: right; padding-right: 0.3em; }\n"
+ "span.size + span.size { text-align: left; "
+ "padding-right: 0; }\n"
+ "</style>\n"
+ "<title>\n";
+static const char footer[] = "</div>\n</body>\n</html>\n";
+
+static char sizeunits[][7] = {"Bytes", "kBytes", "MBytes", "GBytes"};
+
+static int filesize_value(unsigned long bytesize);
+static char* filesize_unit(unsigned long bytesize);
bool directory_create(struct content *c, const struct http_parameter *params) {
@@ -53,6 +82,30 @@
(uint8_t *) header, sizeof(header) - 1);
return true;
+}
+
+int filesize_value(unsigned long bytesize) {
+ int i = 0;
+ while (bytesize > 1024 * 4) {
+ bytesize /= 1024;
+ i++;
+ if (i == 3)
+ break;
+ }
+
+ return bytesize;
+}
+
+char* filesize_unit(unsigned long bytesize) {
+ int i = 0;
+ while (bytesize > 1024 * 4) {
+ bytesize /= 1024;
+ i++;
+ if (i == 3)
+ break;
+ }
+
+ return sizeunits[i];
}
bool directory_convert(struct content *c) {
@@ -67,9 +120,9 @@
char *up;
struct stat filestat;
char *filepath, *mimetype;
+ char moddate[100];
char modtime[100];
bool extendedinfo, evenrow = false;
- char *bgcolour, *specialtag, *specialendtag;
path = url_to_path(content__get_url(c));
if (!path) {
@@ -100,18 +153,9 @@
}
*cnv = '\0';
snprintf(buffer, sizeof(buffer), "Index of %s</title>\n</head>\n"
- "<body>\n<h1>\nIndex of %s</h1>\n<hr><tt><table>",
+ "<body>\n<h1>Index of %s</h1>\n",
nice_path, nice_path);
free(nice_path);
-
- binding_parse_chunk(c->data.html.parser_binding,
- (uint8_t *) buffer, strlen(buffer));
-
- snprintf(buffer, sizeof(buffer),
- "<tr><td><b>%s</b></td><td><b>%s</b></td>" \
- "<td><b>%s</b></td><td><b>%s</b></td></tr>\n",
- messages_get("FileName"), messages_get("FileSize"),
- messages_get("FileDate"), messages_get("FileType"));
binding_parse_chunk(c->data.html.parser_binding,
(uint8_t *) buffer, strlen(buffer));
@@ -121,19 +165,31 @@
if (res == URL_FUNC_OK) {
res = url_compare(content__get_url(c), up, false, &compare);
if ((res == URL_FUNC_OK) && !compare) {
- if(up[strlen(up) - 1] == '/') up[strlen(up) - 1] = '\0';
+ if (up[strlen(up) - 1] == '/')
+ up[strlen(up) - 1] = '\0';
snprintf(buffer, sizeof(buffer),
- "<tr bgcolor=\"#CCCCFF\"><td><b><a href=\"%s\">%s</a></td>" \
- "<td> </td><td> </td><td>%s</td></tr>\n",
- up, messages_get("FileParent"), messages_get("FileDirectory"));
+ "<p><a href=\"%s\">%s</a></p>",
+ up, messages_get("FileParent"));
binding_parse_chunk(c->data.html.parser_binding,
(uint8_t *) buffer, strlen(buffer));
-
- evenrow = true;
}
free(up);
}
+
+ snprintf(buffer, sizeof(buffer),
+ "<div>\n<strong>"
+ "<span class=\"name\">%s</span> "
+ "<span class=\"type\">%s</span> "
+ "<span class=\"size\">%s</span><span class=\"size\"></span> "
+ "<span class=\"date\">%s</span> "
+ "<span class=\"time\">%s</span></strong>\n",
+ messages_get("FileName"), messages_get("FileType"),
+ messages_get("FileSize"), messages_get("FileDate"),
+ messages_get("FileTime"));
+
+ binding_parse_chunk(c->data.html.parser_binding,
+ (uint8_t *) buffer, strlen(buffer));
if ((parent = opendir(path)) == NULL) {
msg_data.error = messages_get("EmptyErr");
@@ -147,12 +203,14 @@
extendedinfo = false;
- if(filepath = malloc(strlen(path) + strlen(entry->d_name) + 2)) {
+ filepath = malloc(strlen(path) + strlen(entry->d_name) + 2);
+ if (filepath != NULL) {
strcpy(filepath, path);
- if(path_add_part(filepath,
- (strlen(path) + strlen(entry->d_name) + 2),
- entry->d_name)) {
- if(stat(filepath, &filestat) == 0) {
+ if (path_add_part(filepath,
+ (strlen(path) +
+ strlen(entry->d_name) + 2),
+ entry->d_name)) {
+ if (stat(filepath, &filestat) == 0) {
mimetype = fetch_mimetype(filepath);
extendedinfo = true;
}
@@ -160,60 +218,69 @@
free(filepath);
}
- if((extendedinfo == true) && (S_ISDIR(filestat.st_mode))) {
- specialtag = "<b>";
- specialendtag = "</b>";
- }
- else {
- specialtag = "";
- specialendtag = "";
- }
-
- if(evenrow == false) bgcolour = "CCCCFF";
- else bgcolour = "BBBBFF";
- if(evenrow == false) evenrow = true;
- else evenrow = false;
-
snprintf(buffer, sizeof(buffer),
- "<tr bgcolor=\"#%s\"><td>%s<a href=\"%s/%s\">%s</a>%s</td>\n",
- bgcolour, specialtag,
- content__get_url(c), entry->d_name, entry->d_name,
- specialendtag);
+ "<a href=\"%s/%s\" class=\"%s %s\">"
+ "<span class=\"name\">%s</span> ",
+ content__get_url(c), entry->d_name,
+ evenrow ? "even" : "odd",
+ S_ISDIR(filestat.st_mode) ? "dir" : "file",
+ entry->d_name);
binding_parse_chunk(c->data.html.parser_binding,
(uint8_t *) buffer, strlen(buffer));
- if(extendedinfo == true) {
- if(strftime((char *)&modtime, sizeof modtime,
- "%c", localtime(&filestat.st_mtime)) == 0)
- strncpy(modtime, "%nbsp;", sizeof modtime);
-
- if(S_ISDIR(filestat.st_mode)) {
+ if (extendedinfo == true) {
+ if (strftime((char *)&moddate, sizeof moddate,
+ "%a %d %b %Y",
+ localtime(&filestat.st_mtime)) == 0)
+ strncpy(moddate, "-", sizeof moddate);
+ if (strftime((char *)&modtime, sizeof modtime,
+ "%H:%M",
+ localtime(&filestat.st_mtime)) == 0)
+ strncpy(modtime, "-", sizeof modtime);
+
+ if (S_ISDIR(filestat.st_mode)) {
snprintf(buffer, sizeof(buffer),
- "<td> </td><td>%s</td><td>%s</td>\n",
- modtime, messages_get("FileDirectory"));
+ "<span class=\"type\">%s</span> "
+ "<span class=\"size\"></span>"
+ "<span class=\"size\"></span> "
+ "<span class=\"date\">%s</span> "
+ "<span class=\"time\">%s</span></a>\n",
+ messages_get("FileDirectory"),
+ moddate, modtime);
+ } else {
+ snprintf(buffer, sizeof(buffer),
+ "<span class=\"type\">%s</span> "
+ "<span class=\"size\">%d</span>"
+ "<span class=\"size\">%s</span> "
+ "<span class=\"date\">%s</span> "
+ "<span class=\"time\">%s</span></a>\n",
+ mimetype,
+ filesize_value(
+ (unsigned long)filestat.st_size),
+ messages_get(filesize_unit(
+ (unsigned long)filestat.st_size)),
+ moddate, modtime);
}
- else {
- snprintf(buffer, sizeof(buffer),
- "<td align=\"right\">%s</td><td>%s</td><td>%s</td>\n",
- human_friendly_bytesize(
- (unsigned long)filestat.st_size),
- modtime, mimetype);
- }
- }
- else {
+ } else {
snprintf(buffer, sizeof(buffer),
- "<td> </td><td> </td><td> </td>\n");
+ "<span class=\"type\"></span> "
+ "<span class=\"size\"></span>"
+ "<span class=\"size\"></span> "
+ "<span class=\"date\"></span> "
+ "<span class=\"time\"></span></a>\n");
}
binding_parse_chunk(c->data.html.parser_binding,
(uint8_t *) buffer, strlen(buffer));
- strncpy(buffer, "</tr>\n", sizeof(buffer));
- binding_parse_chunk(c->data.html.parser_binding,
- (uint8_t *) buffer, strlen(buffer));
-
- if(mimetype) free(mimetype);
+ if (evenrow == false)
+ evenrow = true;
+ else
+ evenrow = false;
+
+ if (mimetype)
+ free(mimetype);
}
closedir(parent);
12 years, 6 months
r10635 tlsa - in /trunk/netsurf/!NetSurf/Resources: de/Messages en/Messages fr/Messages it/Messages nl/Messages
by netsurf@semichrome.net
Author: tlsa
Date: Wed Jul 14 07:24:22 2010
New Revision: 10635
URL: http://source.netsurf-browser.org?rev=10635&view=rev
Log:
Update file browser messages.
Modified:
trunk/netsurf/!NetSurf/Resources/de/Messages
trunk/netsurf/!NetSurf/Resources/en/Messages
trunk/netsurf/!NetSurf/Resources/fr/Messages
trunk/netsurf/!NetSurf/Resources/it/Messages
trunk/netsurf/!NetSurf/Resources/nl/Messages
Modified: trunk/netsurf/!NetSurf/Resources/de/Messages
URL: http://source.netsurf-browser.org/trunk/netsurf/%21NetSurf/Resources/de/M...
==============================================================================
--- trunk/netsurf/!NetSurf/Resources/de/Messages (original)
+++ trunk/netsurf/!NetSurf/Resources/de/Messages Wed Jul 14 07:24:22 2010
@@ -653,11 +653,12 @@
# Directory browser
#
-FileParent:^ Up one level
+FileParent:^ Up to parent directory
FileDirectory:Directory
FileName:Name
FileSize:Size
FileDate:Date
+FileTime:Time
FileType:Type
# Misc
Modified: trunk/netsurf/!NetSurf/Resources/en/Messages
URL: http://source.netsurf-browser.org/trunk/netsurf/%21NetSurf/Resources/en/M...
==============================================================================
--- trunk/netsurf/!NetSurf/Resources/en/Messages (original)
+++ trunk/netsurf/!NetSurf/Resources/en/Messages Wed Jul 14 07:24:22 2010
@@ -657,11 +657,12 @@
# Directory browser
#
-FileParent:^ Up one level
+FileParent:^ Up to parent directory
FileDirectory:Directory
FileName:Name
FileSize:Size
FileDate:Date
+FileTime:Time
FileType:Type
# Misc
Modified: trunk/netsurf/!NetSurf/Resources/fr/Messages
URL: http://source.netsurf-browser.org/trunk/netsurf/%21NetSurf/Resources/fr/M...
==============================================================================
--- trunk/netsurf/!NetSurf/Resources/fr/Messages (original)
+++ trunk/netsurf/!NetSurf/Resources/fr/Messages Wed Jul 14 07:24:22 2010
@@ -653,11 +653,12 @@
# Directory browser
#
-FileParent:^ Up one level
+FileParent:^ Up to parent directory
FileDirectory:Directory
FileName:Name
FileSize:Size
FileDate:Date
+FileTime:Time
FileType:Type
# Misc
Modified: trunk/netsurf/!NetSurf/Resources/it/Messages
URL: http://source.netsurf-browser.org/trunk/netsurf/%21NetSurf/Resources/it/M...
==============================================================================
--- trunk/netsurf/!NetSurf/Resources/it/Messages (original)
+++ trunk/netsurf/!NetSurf/Resources/it/Messages Wed Jul 14 07:24:22 2010
@@ -658,11 +658,12 @@
# Directory browser
#
-FileParent:^ Up one level
+FileParent:^ Up to parent directory
FileDirectory:Directory
FileName:Name
FileSize:Size
FileDate:Date
+FileTime:Time
FileType:Type
# Misc
Modified: trunk/netsurf/!NetSurf/Resources/nl/Messages
URL: http://source.netsurf-browser.org/trunk/netsurf/%21NetSurf/Resources/nl/M...
==============================================================================
--- trunk/netsurf/!NetSurf/Resources/nl/Messages (original)
+++ trunk/netsurf/!NetSurf/Resources/nl/Messages Wed Jul 14 07:24:22 2010
@@ -653,11 +653,12 @@
# Directory browser
#
-FileParent:^ Up one level
+FileParent:^ Up to parent directory
FileDirectory:Directory
FileName:Name
FileSize:Size
FileDate:Date
+FileTime:Time
FileType:Type
# Misc
12 years, 6 months
r10634 tlsa - /trunk/netsurf/render/directory.c
by netsurf@semichrome.net
Author: tlsa
Date: Wed Jul 14 04:30:40 2010
New Revision: 10634
URL: http://source.netsurf-browser.org?rev=10634&view=rev
Log:
Use human friendly size, which fixes RISC OS directory listings.
Modified:
trunk/netsurf/render/directory.c
Modified: trunk/netsurf/render/directory.c
URL: http://source.netsurf-browser.org/trunk/netsurf/render/directory.c?rev=10...
==============================================================================
--- trunk/netsurf/render/directory.c (original)
+++ trunk/netsurf/render/directory.c Wed Jul 14 04:30:40 2010
@@ -195,8 +195,10 @@
}
else {
snprintf(buffer, sizeof(buffer),
- "<td>%ld</td><td>%s</td><td>%s</td>\n",
- filestat.st_size, modtime, mimetype);
+ "<td align=\"right\">%s</td><td>%s</td><td>%s</td>\n",
+ human_friendly_bytesize(
+ (unsigned long)filestat.st_size),
+ modtime, mimetype);
}
}
else {
12 years, 6 months