fseek and rewind added. No support for ftell in the microkernel.
This commit is contained in:
parent
ea985a42fd
commit
6f51733e92
3 changed files with 30 additions and 14 deletions
|
@ -183,9 +183,9 @@ struct fs_delete_t {
|
|||
};
|
||||
|
||||
struct fs_seek_t {
|
||||
uint8_t streak;
|
||||
uint8_t stream;
|
||||
uint8_t cookie;
|
||||
uint32_t position;
|
||||
uint32_t offset;
|
||||
};
|
||||
|
||||
struct file_t {
|
||||
|
|
|
@ -279,6 +279,18 @@ void fileReset(void) {
|
|||
}
|
||||
|
||||
|
||||
int16_t fileSeek(uint8_t id, uint32_t offset, uint8_t whence) {
|
||||
if (whence != SEEK_SET) return -1;
|
||||
|
||||
kernelArgs->file.seek.stream = id;
|
||||
kernelArgs->file.seek.offset = offset;
|
||||
kernelCall(File.Seek);
|
||||
if (kernelError) return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int16_t fileUnlink(char *name) {
|
||||
char drive;
|
||||
char stream;
|
||||
|
|
|
@ -53,6 +53,7 @@ int16_t fileRead(void *buf, uint16_t nbytes, uint16_t nmemb, uint8_t fd);
|
|||
fileDirEntT *fileReadDir(fileDirT *dir);
|
||||
int16_t fileRename(char *name, char *to);
|
||||
void fileReset(void);
|
||||
int16_t fileSeek(uint8_t id, uint32_t offset, uint8_t whence);
|
||||
int16_t fileUnlink(char *name);
|
||||
int16_t fileWrite(void *buf, uint16_t nbytes, uint16_t nmemb, uint8_t fd);
|
||||
|
||||
|
@ -65,18 +66,21 @@ int16_t fileWrite(void *buf, uint16_t nbytes, uint16_t nmemb, uint8_t fd);
|
|||
|
||||
// Aliases to the standard names if they don't exist.
|
||||
#ifndef DIR
|
||||
#define close fileClose
|
||||
#define closedir fileCloseDir
|
||||
#define DIR fileDirT
|
||||
#define dirent fileDirEntS
|
||||
#define FILE uint8_t
|
||||
#define fopen fileOpen
|
||||
#define fread fileRead
|
||||
#define fwrite fileWrite
|
||||
#define opendir fileOpenDir
|
||||
#define readdir fileReadDir
|
||||
#define rename fileRename
|
||||
#define unlink fileUnlink
|
||||
#define close fileClose
|
||||
#define closedir fileCloseDir
|
||||
#define DIR fileDirT
|
||||
#define dirent fileDirEntS
|
||||
#define FILE uint8_t
|
||||
#define fopen fileOpen
|
||||
#define fread fileRead
|
||||
#define fseek fileSeek
|
||||
#define fwrite fileWrite
|
||||
#define opendir fileOpenDir
|
||||
#define readdir fileReadDir
|
||||
#define rename fileRename
|
||||
#define rewind(s) (void)fileSeek(s, 0, SEEK_SET)
|
||||
#define SEEK_SET 0
|
||||
#define unlink fileUnlink
|
||||
#endif
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue