6eaab4d004
Use host's functions for file i/o directly (open(), close() ,etc.), not the sim_* variants. Some dir functions need to be wrapped still because we need to cache the parents dir's path (host's dirent doesn't let us know). For the same reason (incompatibility) with host's dirent) detach some members from Rockbox' dirent struct and put it into an extra one, the values can be retrieved via the new dir_get_info(). Get rid of the sim_ prefix for sleep as well and change the signature to unix sleep(). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27968 a1c6a512-1295-4272-9138-f99709370657
88 lines
3.1 KiB
C
88 lines
3.1 KiB
C
/***************************************************************************
|
|
* __________ __ ___.
|
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
|
* \/ \/ \/ \/ \/
|
|
* $Id$
|
|
*
|
|
* Copyright (C) 2002 by Björn Stenberg
|
|
*
|
|
* 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.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#ifndef _FILE_H_
|
|
#define _FILE_H_
|
|
|
|
#include <sys/types.h>
|
|
#include "config.h"
|
|
#include "gcc_extensions.h"
|
|
#include <fcntl.h>
|
|
#ifdef WIN32
|
|
/* this has SEEK_SET et al */
|
|
#include <stdio.h>
|
|
#endif
|
|
|
|
|
|
#undef MAX_PATH /* this avoids problems when building simulator */
|
|
#define MAX_PATH 260
|
|
#define MAX_OPEN_FILES 11
|
|
|
|
#if !defined(PLUGIN) && !defined(CODEC)
|
|
#if (CONFIG_PLATFORM & PLATFORM_SDL)
|
|
#define open(x, ...) sim_open(x, __VA_ARGS__)
|
|
#define creat(x,m) sim_creat(x,m)
|
|
#define remove(x) sim_remove(x)
|
|
#define rename(x,y) sim_rename(x,y)
|
|
#define filesize(x) sim_filesize(x)
|
|
#define fsync(x) sim_fsync(x)
|
|
#define ftruncate(x,y) sim_ftruncate(x,y)
|
|
#define lseek(x,y,z) sim_lseek(x,y,z)
|
|
#define read(x,y,z) sim_read(x,y,z)
|
|
#define write(x,y,z) sim_write(x,y,z)
|
|
#define close(x) sim_close(x)
|
|
extern int sim_creat(const char *pathname, mode_t mode);
|
|
extern int sim_open(const char *pathname, int flags, ...);
|
|
#endif
|
|
|
|
typedef int (*open_func)(const char* pathname, int flags, ...);
|
|
typedef ssize_t (*read_func)(int fd, void *buf, size_t count);
|
|
typedef int (*creat_func)(const char *pathname, mode_t mode);
|
|
typedef ssize_t (*write_func)(int fd, const void *buf, size_t count);
|
|
typedef void (*qsort_func)(void *base, size_t nmemb, size_t size,
|
|
int(*_compar)(const void *, const void *));
|
|
|
|
extern int file_open(const char* pathname, int flags);
|
|
extern int close(int fd);
|
|
extern int fsync(int fd);
|
|
extern ssize_t read(int fd, void *buf, size_t count);
|
|
extern off_t lseek(int fildes, off_t offset, int whence);
|
|
extern int file_creat(const char *pathname);
|
|
#if (CONFIG_PLATFORM & PLATFORM_NATIVE) && !defined(__PCTOOL__)
|
|
/* posix compatibility function */
|
|
static inline int creat(const char *pathname, mode_t mode)
|
|
{
|
|
(void)mode;
|
|
return file_creat(pathname);
|
|
}
|
|
#if !defined(CODEC) && !defined(PLUGIN)
|
|
#define open(x, y, ...) file_open(x,y)
|
|
#endif
|
|
#endif
|
|
extern ssize_t write(int fd, const void *buf, size_t count);
|
|
extern int remove(const char* pathname);
|
|
extern int rename(const char* path, const char* newname);
|
|
extern int ftruncate(int fd, off_t length);
|
|
extern off_t filesize(int fd);
|
|
extern int release_files(int volume);
|
|
int fdprintf (int fd, const char *fmt, ...) ATTRIBUTE_PRINTF(2, 3);
|
|
#endif /* !CODEC && !PLUGIN */
|
|
#endif
|