diff --git a/firmware/SOURCES b/firmware/SOURCES index 19b0efd089..b2ddc246ec 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES @@ -78,10 +78,10 @@ drivers/rtc/rtc_as3514.c target/hosted/rtc.c #endif target/hosted/kernel-unix.c +target/hosted/filesystem-unix.c target/hosted/ypr0/button-ypr0.c target/hosted/ypr0/lcd-ypr0.c target/hosted/ypr0/system-ypr0.c -target/hosted/ypr0/fs-ypr0.c target/hosted/ypr0/lc-ypr0.c thread.c #ifdef HAVE_BACKLIGHT @@ -1693,7 +1693,7 @@ target/arm/rk27xx/hm801/power-hm801.c #if (CONFIG_PLATFORM & PLATFORM_ANDROID) target/hosted/kernel-unix.c -target/hosted/android/fs-android.c +target/hosted/filesystem-unix.c target/hosted/android/lcd-android.c target/hosted/android/lc-android.c target/hosted/android/button-android.c diff --git a/firmware/common/rbpaths.c b/firmware/common/rbpaths.c index aacd949430..f5a484273c 100644 --- a/firmware/common/rbpaths.c +++ b/firmware/common/rbpaths.c @@ -40,17 +40,13 @@ #undef rmdir +#if (CONFIG_PLATFORM & PLATFORM_ANDROID) || defined(SAMSUNG_YPR0) +#include "dir-target.h" +#define opendir _opendir +#define mkdir _mkdir #if (CONFIG_PLATFORM & PLATFORM_ANDROID) -#include "dir-target.h" -#define opendir opendir_android -#define mkdir mkdir_android -#define rmdir rmdir_android static const char rbhome[] = "/sdcard"; -#elif defined(SAMSUNG_YPR0) -#include "dir-target.h" -#define opendir opendir_ypr0 -#define mkdir mkdir_ypr0 -#define rmdir rmdir_ypr0 +#endif #elif (CONFIG_PLATFORM & (PLATFORM_SDL|PLATFORM_MAEMO|PLATFORM_PANDORA)) #define open sim_open #define remove sim_remove diff --git a/firmware/target/hosted/android/dir-target.h b/firmware/target/hosted/android/dir-target.h index c6c6b4b2b0..6962d943fe 100644 --- a/firmware/target/hosted/android/dir-target.h +++ b/firmware/target/hosted/android/dir-target.h @@ -32,16 +32,9 @@ #define mkdir_uncached _mkdir #define rmdir_uncached rmdir -#define dirent_android dirent -#define DIR_android DIR -#define opendir_android _opendir -#define readdir_android _readdir -#define closedir_android _closedir -#define mkdir_android _mkdir -#define rmdir_android rmdir - extern DIR* _opendir(const char* name); extern int _mkdir(const char* name); +extern int rmdir(const char* name); extern int _closedir(DIR* dir); extern struct dirent *_readdir(DIR* dir); extern void fat_size(unsigned long *size, unsigned long *free); diff --git a/firmware/target/hosted/android/fs-android.c b/firmware/target/hosted/android/fs-android.c deleted file mode 100644 index c6d22a477e..0000000000 --- a/firmware/target/hosted/android/fs-android.c +++ /dev/null @@ -1,141 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2010 by Thomas Martitz - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#include -#include /* stat() */ -#include /* snprintf */ -#include /* size_t */ -#include -#include /* localtime() */ -#include "system-target.h" -#include "dir-target.h" -#include "file.h" -#include "dir.h" -#include "rbpaths.h" - - -long filesize(int fd) -{ - struct stat buf; - - if (!fstat(fd, &buf)) - return buf.st_size; - else - return -1; -} - -/* do we really need this in the app? */ -void fat_size(unsigned long* size, unsigned long* free) -{ - *size = *free = 0; -} - -#undef opendir -#undef closedir -#undef mkdir -#undef readdir - -/* need to wrap around DIR* because we need to save the parent's - * directory path in order to determine dirinfo */ -struct __dir { - DIR *dir; - char *path; -}; - -DIR* _opendir(const char *name) -{ - char *buf = malloc(sizeof(struct __dir) + strlen(name)+1); - if (!buf) - return NULL; - - struct __dir *this = (struct __dir*)buf; - - this->path = buf+sizeof(struct __dir); - /* definitely fits due to strlen() */ - strcpy(this->path, name); - - this->dir = opendir(name); - - if (!this->dir) - { - free(buf); - return NULL; - } - return (DIR*)this; -} - -int _mkdir(const char *name) -{ - return mkdir(name, 0777); -} - -int _closedir(DIR *dir) -{ - struct __dir *this = (struct __dir*)dir; - int ret = closedir(this->dir); - free(this); - return ret; -} - -struct dirent* _readdir(DIR* dir) -{ - struct __dir *d = (struct __dir*)dir; - return readdir(d->dir); -} - -struct dirinfo dir_get_info(struct DIR* _parent, struct dirent *dir) -{ - struct __dir *parent = (struct __dir*)_parent; - struct stat s; - struct tm *tm = NULL; - struct dirinfo ret; - char path[MAX_PATH]; - - snprintf(path, sizeof(path), "%s/%s", parent->path, dir->d_name); - memset(&ret, 0, sizeof(ret)); - - if (!stat(path, &s)) - { - if (S_ISDIR(s.st_mode)) - { - ret.attribute = ATTR_DIRECTORY; - } - ret.size = s.st_size; - tm = localtime(&(s.st_mtime)); - } - - if (!lstat(path, &s) && S_ISLNK(s.st_mode)) - { - ret.attribute |= ATTR_LINK; - } - - if (tm) - { - ret.wrtdate = ((tm->tm_year - 80) << 9) | - ((tm->tm_mon + 1) << 5) | - tm->tm_mday; - ret.wrttime = (tm->tm_hour << 11) | - (tm->tm_min << 5) | - (tm->tm_sec >> 1); - } - - return ret; -} diff --git a/firmware/target/hosted/ypr0/fs-ypr0.c b/firmware/target/hosted/filesystem-unix.c similarity index 100% rename from firmware/target/hosted/ypr0/fs-ypr0.c rename to firmware/target/hosted/filesystem-unix.c diff --git a/firmware/target/hosted/ypr0/dir-target.h b/firmware/target/hosted/ypr0/dir-target.h index 48859526df..7df9554e92 100644 --- a/firmware/target/hosted/ypr0/dir-target.h +++ b/firmware/target/hosted/ypr0/dir-target.h @@ -35,16 +35,9 @@ extern int rmdir(const char* name); #define mkdir_uncached _mkdir #define rmdir_uncached rmdir -#define dirent_ypr0 dirent -#define DIR_ypr0 DIR -#define opendir_ypr0 _opendir -#define readdir_ypr0 _readdir -#define closedir_ypr0 _closedir -#define mkdir_ypr0 _mkdir -#define rmdir_ypr0 rmdir - extern DIR* _opendir(const char* name); extern int _mkdir(const char* name); +extern int _rmdir(const char* name); extern int _closedir(DIR* dir); extern struct dirent *_readdir(DIR* dir); extern void fat_size(unsigned long *size, unsigned long *free);