1
0
Fork 0
forked from len0rd/rockbox

FS#7487 - mpegplayer - video start time seek with resume

by John S. Gwynne & Brian J. Morey
This should stop the patch from breaking again and give them opportunity to improve it further.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15052 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Robert Kukla 2007-10-09 20:42:20 +00:00
parent ce135909b9
commit fd3fe45bc1
17 changed files with 1241 additions and 219 deletions

View file

@ -55,12 +55,14 @@ int configfile_save(const char *filename, struct configdata *cfg,
if(fd < 0)
return fd*10 - 1;
cfg_rb->fdprintf(fd, "file version: %d\n", version);
/* pre-allocate 10 bytes for INT */
cfg_rb->fdprintf(fd, "file version: %10d\n", version);
for(i = 0;i < num_items;i++) {
switch(cfg[i].type) {
case TYPE_INT:
cfg_rb->fdprintf(fd, "%s: %d\n",
/* pre-allocate 10 bytes for INT */
cfg_rb->fdprintf(fd, "%s: %10d\n",
cfg[i].name,
*cfg[i].val);
break;
@ -141,3 +143,72 @@ int configfile_load(const char *filename, struct configdata *cfg,
cfg_rb->close(fd);
return 0;
}
int configfile_get_value(const char* filename, const char* name)
{
int fd;
char *pname;
char *pval;
char buf[MAX_PATH];
get_cfg_filename(buf, MAX_PATH, filename);
fd = cfg_rb->open(buf, O_RDONLY);
if(fd < 0)
return -1;
while(cfg_rb->read_line(fd, buf, MAX_PATH) > 0)
{
cfg_rb->settings_parseline(buf, &pname, &pval);
if(!cfg_rb->strcmp(name, pname))
{
cfg_rb->close(fd);
return cfg_rb->atoi(pval);
}
}
cfg_rb->close(fd);
return -1;
}
int configfile_update_entry(const char* filename, const char* name, int val)
{
int fd;
char *pname;
char *pval;
char path[MAX_PATH];
char buf[256];
int found = 0;
int line_len = 0;
int pos = 0;
/* open the current config file */
get_cfg_filename(path, MAX_PATH, filename);
fd = cfg_rb->open(path, O_RDWR);
if(fd < 0)
return -1;
/* read in the current stored settings */
while((line_len = cfg_rb->read_line(fd, buf, 256)) > 0)
{
cfg_rb->settings_parseline(buf, &pname, &pval);
if(!cfg_rb->strcmp(name, pname))
{
found = 1;
cfg_rb->lseek(fd, pos, SEEK_SET);
/* pre-allocate 10 bytes for INT */
cfg_rb->fdprintf(fd, "%s: %10d\n", pname, val);
break;
}
pos += line_len;
}
/* if (name/val) is a new entry just append to file */
if (found == 0)
/* pre-allocate 10 bytes for INT */
cfg_rb->fdprintf(fd, "%s: %10d\n", name, val);
cfg_rb->close(fd);
return found;
}