Support building tagcache db natively on PC using the core of the

Rockbox tagcache database engine. Only host endian support at the
moment and no command line parameters. Mainly for developers for
debugging at the moment.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11497 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Miika Pekkarinen 2006-11-10 08:03:33 +00:00
parent ae221f1402
commit 0dd7ea2d71
15 changed files with 298 additions and 137 deletions

View file

@ -106,11 +106,14 @@ MYDIR *sim_opendir(const char *name)
char buffer[256]; /* sufficiently big */
DIR *dir;
if(name[0] == '/') {
#ifndef __PCTOOL__
if(name[0] == '/')
{
sprintf(buffer, "%s%s", SIMULATOR_ARCHOS_ROOT, name);
dir=(DIR *)opendir(buffer);
}
else
#endif
dir=(DIR *)opendir(name);
if(dir) {
@ -137,8 +140,12 @@ struct sim_dirent *sim_readdir(MYDIR *dir)
strcpy((char *)secret.d_name, x11->d_name);
/* build file name */
#ifdef __PCTOOL__
sprintf(buffer, "%s/%s", dir->name, x11->d_name);
#else
sprintf(buffer, SIMULATOR_ARCHOS_ROOT "%s/%s",
dir->name, x11->d_name);
#endif
stat(buffer, &s); /* get info */
#define ATTR_DIRECTORY 0x10
@ -164,22 +171,32 @@ int sim_open(const char *name, int o)
char buffer[256]; /* sufficiently big */
int opts = rockbox2sim(o);
if(name[0] == '/') {
#ifndef __PCTOOL__
if(name[0] == '/')
{
sprintf(buffer, "%s%s", SIMULATOR_ARCHOS_ROOT, name);
debugf("We open the real file '%s'\n", buffer);
return open(buffer, opts, 0666);
}
fprintf(stderr, "WARNING, bad file name lacks slash: %s\n",
name);
return -1;
#else
return open(name, opts, 0666);
#endif
}
int sim_creat(const char *name, mode_t mode)
{
char buffer[256]; /* sufficiently big */
int opts = rockbox2sim(mode);
if(name[0] == '/') {
#ifndef __PCTOOL__
char buffer[256]; /* sufficiently big */
if(name[0] == '/')
{
sprintf(buffer, "%s%s", SIMULATOR_ARCHOS_ROOT, name);
debugf("We create the real file '%s'\n", buffer);
@ -188,12 +205,22 @@ int sim_creat(const char *name, mode_t mode)
fprintf(stderr, "WARNING, bad file name lacks slash: %s\n",
name);
return -1;
#else
return open(name, opts | O_CREAT | O_TRUNC, 0666);
#endif
}
int sim_mkdir(const char *name, mode_t mode)
{
char buffer[256]; /* sufficiently big */
(void)mode;
#ifdef __PCTOOL__
# ifdef WIN32
return mkdir(name);
# else
return mkdir(name, 0777);
# endif
#else
char buffer[256]; /* sufficiently big */
sprintf(buffer, "%s%s", SIMULATOR_ARCHOS_ROOT, name);
@ -204,22 +231,31 @@ int sim_mkdir(const char *name, mode_t mode)
#else
return mkdir(buffer, 0777);
#endif
#endif
}
int sim_rmdir(const char *name)
{
#ifdef __PCTOOL__
return rmdir(name);
#else
char buffer[256]; /* sufficiently big */
if(name[0] == '/') {
if(name[0] == '/')
{
sprintf(buffer, "%s%s", SIMULATOR_ARCHOS_ROOT, name);
debugf("We remove the real directory '%s'\n", buffer);
return rmdir(buffer);
}
return rmdir(name);
#endif
}
int sim_remove(const char *name)
{
#ifdef __PCTOOL__
return remove(name);
#else
char buffer[256]; /* sufficiently big */
#ifdef HAVE_DIRCACHE
@ -233,10 +269,14 @@ int sim_remove(const char *name)
return remove(buffer);
}
return remove(name);
#endif
}
int sim_rename(const char *oldpath, const char* newpath)
{
#ifdef __PCTOOL__
return rename(oldpath, newpath);
#else
char buffer1[256];
char buffer2[256];
@ -252,6 +292,7 @@ int sim_rename(const char *oldpath, const char* newpath)
return rename(buffer1, buffer2);
}
return -1;
#endif
}
/* rockbox off_t may be different from system off_t */