forked from len0rd/rockbox
The version of the setting files are raised.
Settings can be normally read even by the old setting file. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25563 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
a06f1416b9
commit
0f6e79a227
1 changed files with 25 additions and 16 deletions
|
@ -52,8 +52,10 @@ PLUGIN_HEADER
|
||||||
/* temporary file */
|
/* temporary file */
|
||||||
#define GLOBAL_SETTINGS_TMP_FILE VIEWERS_DIR "/viewer_file.tmp"
|
#define GLOBAL_SETTINGS_TMP_FILE VIEWERS_DIR "/viewer_file.tmp"
|
||||||
|
|
||||||
#define GLOBAL_SETTINGS_HEADER "\x54\x56\x47\x53\x31" /* header="TVGS" version=1 */
|
#define GLOBAL_SETTINGS_HEADER "\x54\x56\x47\x53" /* header="TVGS" */
|
||||||
#define GLOBAL_SETTINGS_H_SIZE 5
|
#define GLOBAL_SETTINGS_H_SIZE 5
|
||||||
|
#define GLOBAL_SETTINGS_VERSION 0x32 /* version=2 */
|
||||||
|
#define GLOBAL_SETTINGS_FIRST_VERSION 0x31
|
||||||
|
|
||||||
/* preferences and bookmarks at each file
|
/* preferences and bookmarks at each file
|
||||||
* binary file, so dont use .cfg
|
* binary file, so dont use .cfg
|
||||||
|
@ -100,8 +102,10 @@ PLUGIN_HEADER
|
||||||
/* temporary file */
|
/* temporary file */
|
||||||
#define SETTINGS_TMP_FILE VIEWERS_DIR "/viewer_file.tmp"
|
#define SETTINGS_TMP_FILE VIEWERS_DIR "/viewer_file.tmp"
|
||||||
|
|
||||||
#define SETTINGS_HEADER "\x54\x56\x53\x32" /* header="TVS" version=2 */
|
#define SETTINGS_HEADER "\x54\x56\x53" /* header="TVS" */
|
||||||
#define SETTINGS_H_SIZE 4
|
#define SETTINGS_H_SIZE 4
|
||||||
|
#define SETTINGS_VERSION 0x33 /* version=3 */
|
||||||
|
#define SETTINGS_FIRST_VERSION 0x32
|
||||||
|
|
||||||
#define WRAP_TRIM 44 /* Max number of spaces to trim (arbitrary) */
|
#define WRAP_TRIM 44 /* Max number of spaces to trim (arbitrary) */
|
||||||
#define NARROW_MAX_COLUMNS 64 /* Max displayable string len [narrow] (over-estimate) */
|
#define NARROW_MAX_COLUMNS 64 /* Max displayable string len [narrow] (over-estimate) */
|
||||||
|
@ -127,7 +131,7 @@ PLUGIN_HEADER
|
||||||
#define BOOKMARK_ICON "\xee\x84\x81\x00"
|
#define BOOKMARK_ICON "\xee\x84\x81\x00"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define PREFERENCES_SIZE (11 + MAX_PATH)
|
#define PREFERENCES_SIZE (12 + MAX_PATH)
|
||||||
|
|
||||||
/* Out-Of-Bounds test for any pointer to data in the buffer */
|
/* Out-Of-Bounds test for any pointer to data in the buffer */
|
||||||
#define BUFFER_OOB(p) ((p) < buffer || (p) >= buffer_end)
|
#define BUFFER_OOB(p) ((p) < buffer || (p) >= buffer_end)
|
||||||
|
@ -1919,7 +1923,7 @@ static void viewer_default_preferences(void)
|
||||||
prefs.encoding = rb->global_settings->default_codepage;
|
prefs.encoding = rb->global_settings->default_codepage;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool viewer_read_preferences(int pfd)
|
static bool viewer_read_preferences(int pfd, int version)
|
||||||
{
|
{
|
||||||
unsigned char buf[PREFERENCES_SIZE];
|
unsigned char buf[PREFERENCES_SIZE];
|
||||||
unsigned char *p = buf;
|
unsigned char *p = buf;
|
||||||
|
@ -1930,7 +1934,10 @@ static bool viewer_read_preferences(int pfd)
|
||||||
prefs.word_mode = *p++;
|
prefs.word_mode = *p++;
|
||||||
prefs.line_mode = *p++;
|
prefs.line_mode = *p++;
|
||||||
prefs.view_mode = *p++;
|
prefs.view_mode = *p++;
|
||||||
|
if (version > 0)
|
||||||
prefs.alignment = *p++;
|
prefs.alignment = *p++;
|
||||||
|
else
|
||||||
|
prefs.alignment = LEFT;
|
||||||
prefs.encoding = *p++;
|
prefs.encoding = *p++;
|
||||||
prefs.scrollbar_mode = *p++;
|
prefs.scrollbar_mode = *p++;
|
||||||
prefs.need_scrollbar = *p++;
|
prefs.need_scrollbar = *p++;
|
||||||
|
@ -1940,7 +1947,6 @@ static bool viewer_read_preferences(int pfd)
|
||||||
prefs.scroll_mode = *p++;
|
prefs.scroll_mode = *p++;
|
||||||
prefs.autoscroll_speed = *p++;
|
prefs.autoscroll_speed = *p++;
|
||||||
rb->memcpy(prefs.font, p, MAX_PATH);
|
rb->memcpy(prefs.font, p, MAX_PATH);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2050,19 +2056,20 @@ static bool viewer_load_global_settings(void)
|
||||||
{
|
{
|
||||||
unsigned buf[GLOBAL_SETTINGS_H_SIZE];
|
unsigned buf[GLOBAL_SETTINGS_H_SIZE];
|
||||||
int sfd = rb->open(GLOBAL_SETTINGS_FILE, O_RDONLY);
|
int sfd = rb->open(GLOBAL_SETTINGS_FILE, O_RDONLY);
|
||||||
|
int version;
|
||||||
|
bool res = false;
|
||||||
|
|
||||||
if (sfd < 0)
|
if (sfd < 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ((rb->read(sfd, buf, GLOBAL_SETTINGS_H_SIZE) != GLOBAL_SETTINGS_H_SIZE) ||
|
if ((rb->read(sfd, buf, GLOBAL_SETTINGS_H_SIZE) == GLOBAL_SETTINGS_H_SIZE) ||
|
||||||
rb->memcmp(buf, GLOBAL_SETTINGS_HEADER, GLOBAL_SETTINGS_H_SIZE) ||
|
(rb->memcmp(buf, GLOBAL_SETTINGS_HEADER, GLOBAL_SETTINGS_H_SIZE - 1) == 0))
|
||||||
!viewer_read_preferences(sfd))
|
|
||||||
{
|
{
|
||||||
rb->close(sfd);
|
version = buf[GLOBAL_SETTINGS_H_SIZE - 1] - GLOBAL_SETTINGS_FIRST_VERSION;
|
||||||
return false;
|
res = viewer_read_preferences(sfd, version);
|
||||||
}
|
}
|
||||||
rb->close(sfd);
|
rb->close(sfd);
|
||||||
return true;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool viewer_save_global_settings(void)
|
static bool viewer_save_global_settings(void)
|
||||||
|
@ -2094,13 +2101,14 @@ static bool viewer_load_settings(void)
|
||||||
bool res = false;
|
bool res = false;
|
||||||
int sfd;
|
int sfd;
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
|
int version;
|
||||||
|
|
||||||
sfd = rb->open(SETTINGS_FILE, O_RDONLY);
|
sfd = rb->open(SETTINGS_FILE, O_RDONLY);
|
||||||
if (sfd < 0)
|
if (sfd < 0)
|
||||||
goto read_end;
|
goto read_end;
|
||||||
|
|
||||||
if ((rb->read(sfd, buf, SETTINGS_H_SIZE+2) != SETTINGS_H_SIZE+2) ||
|
if ((rb->read(sfd, buf, SETTINGS_H_SIZE+2) != SETTINGS_H_SIZE+2) ||
|
||||||
rb->memcmp(buf, SETTINGS_HEADER, SETTINGS_H_SIZE))
|
rb->memcmp(buf, SETTINGS_HEADER, SETTINGS_H_SIZE - 1))
|
||||||
{
|
{
|
||||||
/* illegal setting file */
|
/* illegal setting file */
|
||||||
rb->close(sfd);
|
rb->close(sfd);
|
||||||
|
@ -2111,6 +2119,7 @@ static bool viewer_load_settings(void)
|
||||||
goto read_end;
|
goto read_end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
version = buf[SETTINGS_H_SIZE - 1] - SETTINGS_FIRST_VERSION;
|
||||||
fcount = (buf[SETTINGS_H_SIZE] << 8) | buf[SETTINGS_H_SIZE+1];
|
fcount = (buf[SETTINGS_H_SIZE] << 8) | buf[SETTINGS_H_SIZE+1];
|
||||||
for (i = 0; i < fcount; i++)
|
for (i = 0; i < fcount; i++)
|
||||||
{
|
{
|
||||||
|
@ -2124,7 +2133,7 @@ static bool viewer_load_settings(void)
|
||||||
break;
|
break;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!viewer_read_preferences(sfd))
|
if (!viewer_read_preferences(sfd, version))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
res = viewer_read_bookmark_infos(sfd);
|
res = viewer_read_bookmark_infos(sfd);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue