From 298316d19297eea82869b63235b535e5904fc0dd Mon Sep 17 00:00:00 2001 From: Rafaël Carré Date: Sun, 20 Jun 2010 21:53:47 +0000 Subject: text_viewer: cleanup & bugfix cleanup: - don't use enum in struct / return values - don't use a getter for preferences but a global pointer - explicitely make enums start at 0 - use static tables for header/footer settings - remove unneeded memset before strlcpy - use static buffer allocation, not dynamic - check header/footer preferences before using the callbacks - don't include font filename in archos player preferences (break file format) bugfix: - statically allocate old preferences in tv_set_preferences() Sometimes I can read a file on Clipv2, but it still aborts quite often refs: FS#11399 git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26998 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/text_viewer/tv_settings.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'apps/plugins/text_viewer/tv_settings.c') diff --git a/apps/plugins/text_viewer/tv_settings.c b/apps/plugins/text_viewer/tv_settings.c index 6b16218523..428666de24 100644 --- a/apps/plugins/text_viewer/tv_settings.c +++ b/apps/plugins/text_viewer/tv_settings.c @@ -181,9 +181,9 @@ static bool tv_read_preferences(int pfd, int version, struct tv_preferences *pre else prefs->indent_spaces = 2; +#ifdef HAVE_LCD_BITMAP rb->memcpy(prefs->font_name, buf + read_size - MAX_PATH, MAX_PATH); -#ifdef HAVE_LCD_BITMAP prefs->font = rb->font_get(FONT_UI); #endif @@ -213,7 +213,9 @@ static bool tv_write_preferences(int pfd, const struct tv_preferences *prefs) *p++ = prefs->narrow_mode; *p++ = prefs->indent_spaces; +#ifdef HAVE_LCD_BITMAP rb->memcpy(buf + 28, prefs->font_name, MAX_PATH); +#endif return (rb->write(pfd, buf, TV_PREFERENCES_SIZE) >= 0); } @@ -457,7 +459,6 @@ static bool tv_copy_settings(int sfd, int dfd, int size) bool tv_save_settings(void) { - const struct tv_preferences *prefs = tv_get_preferences(); unsigned char buf[MAX_PATH+2]; unsigned int fcount = 0; unsigned int i; @@ -502,7 +503,7 @@ bool tv_save_settings(void) } size = (buf[MAX_PATH] << 8) | buf[MAX_PATH + 1]; - if (rb->strcmp(buf, prefs->file_name) == 0) + if (rb->strcmp(buf, preferences->file_name) == 0) rb->lseek(ofd, size, SEEK_CUR); else { @@ -522,12 +523,11 @@ bool tv_save_settings(void) { /* save to current read file's preferences and bookmarks */ res = false; - rb->memset(buf, 0, MAX_PATH); - rb->strlcpy(buf, prefs->file_name, MAX_PATH); + rb->strlcpy(buf, preferences->file_name, MAX_PATH); if (rb->write(tfd, buf, MAX_PATH + 2) >= 0) { - if (tv_write_preferences(tfd, prefs)) + if (tv_write_preferences(tfd, preferences)) { size = tv_serialize_bookmarks(tfd); if (size > 0) -- cgit v1.2.3