summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugin.h10
-rw-r--r--firmware/common/file.c12
-rw-r--r--firmware/include/file.h36
-rw-r--r--uisimulator/x11/file.h2
-rw-r--r--uisimulator/x11/io.c2
5 files changed, 43 insertions, 19 deletions
diff --git a/apps/plugin.h b/apps/plugin.h
index 5bebcd701f..e7ec86aa53 100644
--- a/apps/plugin.h
+++ b/apps/plugin.h
@@ -135,13 +135,13 @@ struct plugin_api {
135 /* file */ 135 /* file */
136 int (*open)(const char* pathname, int flags); 136 int (*open)(const char* pathname, int flags);
137 int (*close)(int fd); 137 int (*close)(int fd);
138 int (*read)(int fd, void* buf, int count); 138 ssize_t (*read)(int fd, void* buf, size_t count);
139 int (*lseek)(int fd, int offset, int whence); 139 off_t (*lseek)(int fd, off_t offset, int whence);
140 int (*creat)(const char *pathname, int mode); 140 int (*creat)(const char *pathname, mode_t mode);
141 int (*write)(int fd, void* buf, int count); 141 ssize_t (*write)(int fd, const void* buf, size_t count);
142 int (*remove)(const char* pathname); 142 int (*remove)(const char* pathname);
143 int (*rename)(const char* path, const char* newname); 143 int (*rename)(const char* path, const char* newname);
144 int (*ftruncate)(int fd, unsigned int size); 144 int (*ftruncate)(int fd, off_t length);
145 int (*filesize)(int fd); 145 int (*filesize)(int fd);
146 int (*fprintf)(int fd, const char *fmt, ...); 146 int (*fprintf)(int fd, const char *fmt, ...);
147 int (*read_line)(int fd, char* buffer, int buffer_size); 147 int (*read_line)(int fd, char* buffer, int buffer_size);
diff --git a/firmware/common/file.c b/firmware/common/file.c
index b4b879f8fb..f81038fa77 100644
--- a/firmware/common/file.c
+++ b/firmware/common/file.c
@@ -52,7 +52,7 @@ static struct filedesc openfiles[MAX_OPEN_FILES];
52 52
53static int flush_cache(int fd); 53static int flush_cache(int fd);
54 54
55int creat(const char *pathname, int mode) 55int creat(const char *pathname, mode_t mode)
56{ 56{
57 (void)mode; 57 (void)mode;
58 return open(pathname, O_WRONLY|O_CREAT|O_TRUNC); 58 return open(pathname, O_WRONLY|O_CREAT|O_TRUNC);
@@ -307,7 +307,7 @@ int rename(const char* path, const char* newpath)
307 return 0; 307 return 0;
308} 308}
309 309
310int ftruncate(int fd, unsigned int size) 310int ftruncate(int fd, off_t size)
311{ 311{
312 int rc, sector; 312 int rc, sector;
313 struct filedesc* file = &openfiles[fd]; 313 struct filedesc* file = &openfiles[fd];
@@ -513,22 +513,22 @@ static int readwrite(int fd, void* buf, int count, bool write)
513 return nread; 513 return nread;
514} 514}
515 515
516int write(int fd, void* buf, int count) 516ssize_t write(int fd, const void* buf, size_t count)
517{ 517{
518 if (!openfiles[fd].write) { 518 if (!openfiles[fd].write) {
519 errno = EACCES; 519 errno = EACCES;
520 return -1; 520 return -1;
521 } 521 }
522 return readwrite(fd, buf, count, true); 522 return readwrite(fd, (void *)buf, count, true);
523} 523}
524 524
525int read(int fd, void* buf, int count) 525ssize_t read(int fd, void* buf, size_t count)
526{ 526{
527 return readwrite(fd, buf, count, false); 527 return readwrite(fd, buf, count, false);
528} 528}
529 529
530 530
531int lseek(int fd, int offset, int whence) 531off_t lseek(int fd, off_t offset, int whence)
532{ 532{
533 int pos; 533 int pos;
534 int newsector; 534 int newsector;
diff --git a/firmware/include/file.h b/firmware/include/file.h
index 2ea74c2f5b..8159a7bc84 100644
--- a/firmware/include/file.h
+++ b/firmware/include/file.h
@@ -42,8 +42,32 @@
42#define O_TRUNC 0x10 42#define O_TRUNC 0x10
43#endif 43#endif
44 44
45#if !defined(__ssize_t_defined) && !defined(_SSIZE_T_)
46#define __ssize_t_defined
47#define _SSIZE_T_
48typedef signed long ssize_t;
49#endif
50
51#if !defined(__off_t_defined) && !defined(_OFF_T_)
52#define __off_t_defined
53#define _OFF_T_
54typedef signed long off_t;
55#endif
56
57#if !defined(__mode_t_defined) && !defined(_MODE_T_)
58#define __mode_t_defined
59#define _MODE_T_
60typedef unsigned int mode_t;
61#endif
62
63#ifndef _SIZE_T
64#define _SIZE_T
65typedef unsigned int size_t;
66#endif
67
68
45#if defined(__MINGW32__) && defined(SIMULATOR) 69#if defined(__MINGW32__) && defined(SIMULATOR)
46extern int open(const char*, int, ...); 70extern int open(const char*, int flags, ...);
47extern int close(int fd); 71extern int close(int fd);
48extern int read(int, void*, unsigned int); 72extern int read(int, void*, unsigned int);
49extern long lseek(int, long, int); 73extern long lseek(int, long, int);
@@ -57,13 +81,13 @@ extern int remove(const char*);
57extern int open(const char* pathname, int flags); 81extern int open(const char* pathname, int flags);
58extern int close(int fd); 82extern int close(int fd);
59extern int fsync(int fd); 83extern int fsync(int fd);
60extern int read(int fd, void* buf, int count); 84extern ssize_t read(int fd, void *buf, size_t count);
61extern int lseek(int fd, int offset, int whence); 85extern off_t lseek(int fildes, off_t offset, int whence);
62extern int creat(const char *pathname, int mode); 86extern int creat(const char *pathname, mode_t mode);
63extern int write(int fd, void* buf, int count); 87extern ssize_t write(int fd, const void *buf, size_t count);
64extern int remove(const char* pathname); 88extern int remove(const char* pathname);
65extern int rename(const char* path, const char* newname); 89extern int rename(const char* path, const char* newname);
66extern int ftruncate(int fd, unsigned int size); 90extern int ftruncate(int fd, off_t length);
67extern int filesize(int fd); 91extern int filesize(int fd);
68#endif /* SIMULATOR */ 92#endif /* SIMULATOR */
69#endif /* __MINGW32__ */ 93#endif /* __MINGW32__ */
diff --git a/uisimulator/x11/file.h b/uisimulator/x11/file.h
index 7212692907..b30167ecbd 100644
--- a/uisimulator/x11/file.h
+++ b/uisimulator/x11/file.h
@@ -26,7 +26,7 @@
26int x11_open(const char *name, int opts); 26int x11_open(const char *name, int opts);
27int x11_close(int fd); 27int x11_close(int fd);
28int x11_filesize(int fd); 28int x11_filesize(int fd);
29int x11_creat(char *name, int mode); 29int x11_creat(const char *name, mode_t mode);
30int x11_remove(char *name); 30int x11_remove(char *name);
31int x11_rename(char *oldpath, char *newpath); 31int x11_rename(char *oldpath, char *newpath);
32 32
diff --git a/uisimulator/x11/io.c b/uisimulator/x11/io.c
index 6fc82cc6f7..14d2bfa2c0 100644
--- a/uisimulator/x11/io.c
+++ b/uisimulator/x11/io.c
@@ -120,7 +120,7 @@ int x11_close(int fd)
120 return (close)(fd); 120 return (close)(fd);
121} 121}
122 122
123int x11_creat(char *name, int mode) 123int x11_creat(const char *name, mode_t mode)
124{ 124{
125 char buffer[256]; /* sufficiently big */ 125 char buffer[256]; /* sufficiently big */
126 (void)mode; 126 (void)mode;