/* ----> DO NOT REMOVE THE FOLLOWING NOTICE <---- Copyright (c) 2014-2015 Datalight, Inc. All Rights Reserved Worldwide. 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; use version 2 of the License. This program is distributed in the hope that it will be useful, but "AS-IS," 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPLv2 license may obtain a commercial license before incorporating Reliance Edge into proprietary software for distribution in any form. Visit http://www.datalight.com/reliance-edge for more information. */ /** @file @brief Defines macros which make the Reliance Edge POSIX-like API look more like the actual POSIX API. This file is intended for porting POSIX file system tests; it is not intended for application use. */ #ifndef REDPOSIXCOMPAT_H #define REDPOSIXCOMPAT_H #ifndef assert #define assert(x) REDASSERT(x) #endif #undef O_RDONLY #undef O_WRONLY #undef O_RDWR #undef O_APPEND #undef O_CREAT #undef O_EXCL #undef O_TRUNC #define O_RDONLY RED_O_RDONLY #define O_WRONLY RED_O_WRONLY #define O_RDWR RED_O_RDWR #define O_APPEND RED_O_APPEND #define O_CREAT RED_O_CREAT #define O_EXCL RED_O_EXCL #define O_TRUNC RED_O_TRUNC #undef SEEK_SET #undef SEEK_CUR #undef SEEK_END #define SEEK_SET RED_SEEK_SET #define SEEK_CUR RED_SEEK_CUR #define SEEK_END RED_SEEK_END /* Old-fashioned Linux seek names. */ #undef L_SET #undef L_INCR #undef L_XTND #define L_SET SEEK_SET #define L_INCR SEEK_CUR #define L_XTND SEEK_END #undef S_IFDIR #undef S_IFREG #undef S_ISDIR #undef S_ISREG #define S_IFDIR RED_S_IFDIR #define S_IFREG RED_S_IFREG #define S_ISDIR(m) RED_S_ISDIR(m) #define S_ISREG(m) RED_S_ISREG(m) #undef ST_RDONLY #undef ST_NOSUID #define ST_RDONLY RED_ST_RDONLY #define ST_NOSUID RED_ST_NOSUID #undef open #undef creat #undef unlink #undef mkdir #undef rmdir #undef rename #undef link #undef close #undef read #undef write #undef fsync #undef fdatasync #undef lseek #undef ftruncate #undef fstat #undef opendir #undef readdir #undef rewinddir #undef closedir #define open(path, oflag) red_open(path, oflag) #define creat(path, mode) open(path, O_WRONLY|O_CREAT|O_TRUNC) #define unlink(path) red_unlink(path) #define mkdir(path) red_mkdir(path) #define rmdir(path) red_rmdir(path) #define rename(old, new) red_rename(old, new) #define link(path, hardlink) red_link(path, hardlink) #define close(fd) red_close(fd) #define read(fd, buf, len) red_read(fd, buf, len) #define write(fd, buf, len) red_write(fd, buf, len) #define fsync(fd) red_fsync(fd) #define fdatasync(fd) fsync(fd) #define lseek(fd, offset, whence) red_lseek(fd, offset, whence) #define lseek64(fd, offset, whence) lseek(fd, offset, whence) #define ftruncate(fd, size) red_ftruncate(fd, size) #define fstat(fd, stat) red_fstat(fd, stat) #define fstat64(fd, stat) fstat(fd, stat) #define opendir(path) red_opendir(path) #define readdir(dirp) red_readdir(dirp) #define readdir64(dirp) readdir(dirp) #define rewinddir(dirp) red_rewinddir(dirp) #define closedir(dirp) red_closedir(dirp) #undef DIR #define DIR REDDIR #undef errno #define errno (*(int *)red_errnoptr()) #undef memcpy #undef memmove #undef memset #undef strlen #undef strncmp #undef strcmp #undef strncpy #define memcpy(d, s, l) RedMemCpy(d, s, (uint32_t)(l)) #define memmove(d, s, l) RedMemMove(d, s, (uint32_t)(l)) #define memset(d, c, l) RedMemSet(d, (uint8_t)(c), (uint32_t)(l)) #define strlen(s) RedStrLen(s) #define strncmp(s1, s2, l) RedStrNCmp(s1, s2, (uint32_t)(l)) #define strcmp(s1, s2) RedStrCmp(s1, s2) #define strncpy(d, s, l) RedStrNCpy(d, s, (uint32_t)(l)) #endif