mirror of https://github.com/ArduPilot/ardupilot
hwdef: add more posix methods
This commit is contained in:
parent
288f6b1fa0
commit
539d5adc13
|
@ -247,6 +247,9 @@ fgetc(FILE *stream)
|
|||
return (c);
|
||||
}
|
||||
|
||||
int getc(FILE *fp) {
|
||||
return (fgetc (fp));
|
||||
}
|
||||
/// @brief Put a byte to TTY device or FatFs file stream
|
||||
/// open() or fopen() sets stream->put = fatfs_outc() for FatFs functions
|
||||
/// See fdevopen() sets stream->put get for TTY devices
|
||||
|
@ -298,6 +301,10 @@ fputc(int c, FILE *stream)
|
|||
}
|
||||
}
|
||||
|
||||
void clearerr(FILE *stream)
|
||||
{
|
||||
stream->flags = 0;
|
||||
}
|
||||
|
||||
|
||||
///@brief functions normally defined as macros
|
||||
|
@ -423,6 +430,23 @@ fgets(char *str, int size, FILE *stream)
|
|||
return(str);
|
||||
}
|
||||
|
||||
|
||||
/** char *gets(p) -- get line from stdin */
|
||||
|
||||
char *
|
||||
gets (char *p)
|
||||
{
|
||||
char *s;
|
||||
int n;
|
||||
|
||||
s = fgets (p, MAXLN, stdin);
|
||||
if (s == 0)
|
||||
return (0);
|
||||
n = strlen (p);
|
||||
if (n && p[n - 1] == '\n')
|
||||
p[n - 1] = 0;
|
||||
return (s);
|
||||
}
|
||||
/// @brief put a string to stdout
|
||||
/// See fdevopen() sets stream->put get for TTY devices
|
||||
///
|
||||
|
@ -774,7 +798,7 @@ FILE *fopen(const char *path, const char *mode)
|
|||
/// @return count on sucess.
|
||||
/// @return 0 or < size on error with errno set.
|
||||
|
||||
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
|
||||
size_t __wrap_fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
|
||||
{
|
||||
size_t count = size * nmemb;
|
||||
int fn = fileno(stream);
|
||||
|
@ -1199,7 +1223,14 @@ ssize_t write(int fd, const void *buf, size_t count)
|
|||
return ((ssize_t) size);
|
||||
}
|
||||
|
||||
|
||||
FILE * __wrap_freopen ( const char * filename, const char * mode, FILE * stream )
|
||||
{
|
||||
int ret = close(stream);
|
||||
if (ret < 0) {
|
||||
return NULL;
|
||||
}
|
||||
return fopen(filename, mode);
|
||||
}
|
||||
/// @brief POSIX close a file stream.
|
||||
///
|
||||
/// - man page flose (3).
|
||||
|
@ -1208,8 +1239,8 @@ ssize_t write(int fd, const void *buf, size_t count)
|
|||
|
||||
/// @return 0 on sucess.
|
||||
/// @return -1 on error witrh errno set.
|
||||
/*
|
||||
int fclose(FILE *stream)
|
||||
|
||||
int __wrap_fclose(FILE *stream)
|
||||
{
|
||||
int fn = fileno(stream);
|
||||
if(fn < 0)
|
||||
|
@ -1217,7 +1248,6 @@ int fclose(FILE *stream)
|
|||
|
||||
return( close(fn) );
|
||||
}
|
||||
*/
|
||||
// =============================================
|
||||
// =============================================
|
||||
/// - POSIX file information functions
|
||||
|
@ -1679,6 +1709,19 @@ int unlink(const char *pathname)
|
|||
return(0);
|
||||
}
|
||||
|
||||
|
||||
int remove(const char *pathname)
|
||||
{
|
||||
errno = 0;
|
||||
int res = f_unlink(pathname);
|
||||
if(res != FR_OK)
|
||||
{
|
||||
errno = fatfs_to_errno(res);
|
||||
return(-1);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
// =============================================
|
||||
// =============================================
|
||||
/// - POSIX - directory scanning functions
|
||||
|
|
|
@ -35,6 +35,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#include <ff.h>
|
||||
#include <stdarg.h>
|
||||
#include <time.h>
|
||||
|
||||
#define MAXLN 128
|
||||
#define ISSPACE " \t\n\r\f\v"
|
||||
|
||||
///@brief make sure we use our strerror_r function
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -46,6 +50,8 @@ extern "C" {
|
|||
/// - Using these makes code portable accross many acrchitectures
|
||||
//typedef uint32_t blkcnt_t; /*< blkcnt_t for this architecture */
|
||||
//typedef uint32_t blksize_t; /*< blksize_t for this architecture */
|
||||
typedef int32_t off_t;
|
||||
typedef off_t fpos_t;
|
||||
extern int errno;
|
||||
// =============================================
|
||||
|
||||
|
@ -297,6 +303,7 @@ extern FILE *__iob[MAX_FILES];
|
|||
int isatty ( int fileno );
|
||||
int fgetc ( FILE *stream );
|
||||
int fputc ( int c , FILE *stream );
|
||||
void clearerr(FILE *stream);
|
||||
#ifndef IO_MACROS
|
||||
int getchar ( void );
|
||||
int putchar ( int c );
|
||||
|
@ -321,7 +328,7 @@ int close ( int fileno );
|
|||
int fileno ( FILE *stream );
|
||||
FILE *fileno_to_stream ( int fileno );
|
||||
FILE *fopen ( const char *path , const char *mode );
|
||||
size_t fread ( void *ptr , size_t size , size_t nmemb , FILE *stream );
|
||||
size_t __wrap_fread ( void *ptr , size_t size , size_t nmemb , FILE *stream );
|
||||
int ftruncate ( int fd , off_t length );
|
||||
size_t fwrite ( const void *ptr , size_t size , size_t nmemb , FILE *stream );
|
||||
int open (const char *pathname, int flags);
|
||||
|
@ -331,7 +338,10 @@ int syncfs(int fd);
|
|||
int fsync ( int fd );
|
||||
int truncate ( const char *path , off_t length );
|
||||
ssize_t write ( int fd , const void *buf , size_t count );
|
||||
//int fclose ( FILE *stream );
|
||||
int __wrap_fclose ( FILE *stream );
|
||||
FILE * __wrap_freopen ( const char * filename, const char * mode, FILE * stream );
|
||||
int getc(FILE *fp);
|
||||
char *gets (char *p);
|
||||
//void dump_stat ( struct stat *sp );
|
||||
|
||||
#if 0
|
||||
|
@ -356,6 +366,7 @@ int mkdir ( const char *pathname , mode_t mode );
|
|||
int rename ( const char *oldpath , const char *newpath );
|
||||
int rmdir ( const char *pathname );
|
||||
int unlink ( const char *pathname );
|
||||
int remove(const char *pathname);
|
||||
int closedir ( DIR *dirp );
|
||||
DIR *opendir ( const char *pathdir );
|
||||
struct dirent *readdir ( DIR *dirp );
|
||||
|
|
|
@ -112,9 +112,12 @@ int printf(const char *fmt, ...)
|
|||
return done;
|
||||
}
|
||||
|
||||
#define MAXLN 128
|
||||
#define ISSPACE " \t\n\r\f\v"
|
||||
|
||||
//just a stub
|
||||
int
|
||||
scanf (const char *fmt, ...)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
* sscanf(buf,fmt,va_alist)
|
||||
*/
|
||||
|
@ -311,3 +314,32 @@ vsscanf (const char *buf, const char *s, va_list ap)
|
|||
}
|
||||
return (count);
|
||||
}
|
||||
|
||||
/*
|
||||
* fscanf(stream,fmt,va_alist)
|
||||
*/
|
||||
int fscanf (FILE *stream, const char *fmt, ...)
|
||||
{
|
||||
int count;
|
||||
va_list ap;
|
||||
|
||||
va_start (ap, fmt);
|
||||
count = vfscanf (stream, fmt, ap);
|
||||
va_end (ap);
|
||||
return (count);
|
||||
}
|
||||
|
||||
/*
|
||||
* vfscanf(stream,fmt,ap)
|
||||
*/
|
||||
static int vfscanf (FILE *stream, const char *fmt, va_list ap)
|
||||
{
|
||||
int count;
|
||||
char buf[MAXLN + 1];
|
||||
|
||||
if (fgets (buf, MAXLN, stream) == 0) {
|
||||
return (-1);
|
||||
}
|
||||
count = vsscanf (buf, fmt, ap);
|
||||
return (count);
|
||||
}
|
||||
|
|
|
@ -27,8 +27,9 @@ int vasprintf(char **strp, const char *fmt, va_list ap);
|
|||
int asprintf(char **strp, const char *fmt, ...);
|
||||
int vprintf(const char *fmt, va_list arg);
|
||||
int printf(const char *fmt, ...);
|
||||
int fscanf ( FILE * stream, const char * format, ... );
|
||||
|
||||
|
||||
int scanf (const char *fmt, ...);
|
||||
int sscanf (const char *buf, const char *fmt, ...);
|
||||
int vsscanf (const char *buf, const char *s, va_list ap);
|
||||
void *malloc(size_t size);
|
||||
|
|
Loading…
Reference in New Issue