2019-08-01 02:07:26 -03:00
|
|
|
/*
|
|
|
|
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 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
/*
|
|
|
|
compatibility with posix APIs using AP_Filesystem
|
|
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stddef.h>
|
2023-12-07 14:29:01 -04:00
|
|
|
#include <stdbool.h>
|
2023-12-09 20:30:11 -04:00
|
|
|
#include <stdint.h>
|
2019-08-01 02:07:26 -03:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
these are here to allow lua to build on HAL_ChibiOS
|
|
|
|
*/
|
|
|
|
|
2023-12-07 14:29:01 -04:00
|
|
|
typedef struct apfs_file {
|
|
|
|
int fd;
|
|
|
|
bool error;
|
|
|
|
bool eof;
|
|
|
|
int16_t unget;
|
|
|
|
char *tmpfile_name;
|
|
|
|
} APFS_FILE;
|
2019-08-01 02:07:26 -03:00
|
|
|
|
|
|
|
APFS_FILE *apfs_fopen(const char *pathname, const char *mode);
|
|
|
|
int apfs_fprintf(APFS_FILE *stream, const char *format, ...);
|
|
|
|
int apfs_fflush(APFS_FILE *stream);
|
|
|
|
size_t apfs_fread(void *ptr, size_t size, size_t nmemb, APFS_FILE *stream);
|
|
|
|
size_t apfs_fwrite(const void *ptr, size_t size, size_t nmemb, APFS_FILE *stream);
|
|
|
|
int apfs_fputs(const char *s, APFS_FILE *stream);
|
|
|
|
char *apfs_fgets(char *s, int size, APFS_FILE *stream);
|
|
|
|
void apfs_clearerr(APFS_FILE *stream);
|
|
|
|
int apfs_fseek(APFS_FILE *stream, long offset, int whence);
|
|
|
|
int apfs_ferror(APFS_FILE *stream);
|
|
|
|
int apfs_fclose(APFS_FILE *stream);
|
|
|
|
APFS_FILE *apfs_tmpfile(void);
|
|
|
|
int apfs_getc(APFS_FILE *stream);
|
|
|
|
int apfs_ungetc(int c, APFS_FILE *stream);
|
|
|
|
int apfs_feof(APFS_FILE *stream);
|
|
|
|
long apfs_ftell(APFS_FILE *stream);
|
|
|
|
APFS_FILE *apfs_freopen(const char *pathname, const char *mode, APFS_FILE *stream);
|
|
|
|
int apfs_remove(const char *pathname);
|
2020-04-23 23:27:29 -03:00
|
|
|
int apfs_rename(const char *oldpath, const char *newpath);
|
2022-05-05 05:53:38 -03:00
|
|
|
char *tmpnam(char s[L_tmpnam]);
|
2019-08-01 02:07:26 -03:00
|
|
|
|
|
|
|
#undef stdin
|
|
|
|
#undef stdout
|
|
|
|
#undef stderr
|
|
|
|
#define stdin ((APFS_FILE*)1)
|
|
|
|
#define stdout ((APFS_FILE*)2)
|
|
|
|
#define stderr ((APFS_FILE*)3)
|
|
|
|
|
|
|
|
#undef BUFSIZ
|
|
|
|
#define BUFSIZ 256
|
|
|
|
#define EOF (-1)
|
|
|
|
|
|
|
|
#ifndef SEEK_SET
|
|
|
|
#define SEEK_SET 0
|
|
|
|
#define SEEK_CUR 1
|
|
|
|
#define SEEK_END 2
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define FILE APFS_FILE
|
2024-07-05 20:17:46 -03:00
|
|
|
|
|
|
|
#ifndef __cplusplus
|
|
|
|
/*
|
|
|
|
only redefine posix functions for C code (eg. lua).
|
|
|
|
for C++ use the AP_Filsystem APIs
|
|
|
|
*/
|
2019-08-01 02:07:26 -03:00
|
|
|
#define fopen(p,m) apfs_fopen(p,m)
|
|
|
|
#define fprintf(stream, format, args...) apfs_fprintf(stream, format, ##args)
|
|
|
|
#define fflush(s) apfs_fflush(s)
|
|
|
|
#define fread(ptr,size,nmemb, stream) apfs_fread(ptr, size, nmemb, stream)
|
|
|
|
#define fwrite(ptr, size, nmemb, stream) apfs_fwrite(ptr, size, nmemb, stream)
|
|
|
|
#define fputs(s, stream) apfs_fputs(s, stream)
|
|
|
|
#define fgets(s, size, stream) apfs_fgets(s, size, stream)
|
|
|
|
#define clearerr(stream) apfs_clearerr(stream)
|
|
|
|
#define fseek(stream, offset, whence) apfs_fseek(stream, offset, whence)
|
|
|
|
#define ferror(stream) apfs_ferror(stream)
|
|
|
|
#define fclose(stream) apfs_fclose(stream)
|
|
|
|
#define tmpfile() apfs_tmpfile()
|
|
|
|
#undef getc
|
|
|
|
#define getc(stream) apfs_getc(stream)
|
|
|
|
#define ungetc(c, stream) apfs_ungetc(c, stream)
|
|
|
|
#define feof(stream) apfs_ferror(stream)
|
|
|
|
#define ftell(stream) apfs_ftell(stream)
|
|
|
|
#define freopen(pathname, mode, stream) apfs_freopen(pathname, mode, stream)
|
2020-04-23 23:27:29 -03:00
|
|
|
#define rename(oldpath, newpath) apfs_rename(oldpath, newpath)
|
2019-09-09 05:30:59 -03:00
|
|
|
#if !defined(__APPLE__)
|
2021-04-20 11:53:00 -03:00
|
|
|
#define remove(pathname) apfs_remove(pathname)
|
2019-08-01 02:07:26 -03:00
|
|
|
int sprintf(char *str, const char *format, ...);
|
2019-09-09 05:30:59 -03:00
|
|
|
#endif
|
2024-07-05 20:17:46 -03:00
|
|
|
#endif // __cplusplus
|
2019-08-01 02:07:26 -03:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|