⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 target_generic_file.h

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 H
📖 第 1 页 / 共 2 页
字号:
    #define TARGET_NATIVE_FILE_AVAILABLE(filedescriptor,length,result) \      do { \        ssize_t __n; \        \        result=(ioctl(filedescriptor,FIONREAD,(char*)&__n)==0)?TARGET_NATIVE_OK:TARGET_NATIVE_ERROR; \        length=TARGET_NATIVE_MATH_INT_INT32_TO_INT64(__n); \      } while (0)  #elif defined(HAVE_FSTAT)    #include <sys/types.h>    #include <sys/stat.h>    #include <unistd.h>    #define TARGET_NATIVE_FILE_AVAILABLE(filedescriptor,length,result) \      do { \        struct stat __statBuffer; \        off_t       __n; \        \        length=0; \        \        if ((fstat(filedescriptor,&__statBuffer)==0) && S_ISREG(__statBuffer.st_mode)) \        { \          __n=(lseek(filedescriptor,0,SEEK_CUR)); \          if (__n!=-1) \          { \            length=TARGET_NATIVE_MATH_INT_INT32_TO_INT64(__statBuffer.st_size-__n); \            result=TARGET_NATIVE_OK; \          } \          else \          { \            result=TARGET_NATIVE_ERROR; \          } \        } \        else \        { \          result=TARGET_NATIVE_ERROR; \        } \      } while (0)  #elif defined(HAVE_SELECT)    #include <string.h>    #include <sys/select.h>    #define TARGET_NATIVE_FILE_AVAILABLE(filedescriptor,length,result) \      do { \        fd_set         __filedescriptset; \        struct timeval __timeval; \        \        length=0; \        \        FD_ZERO(&__filedescriptset); \        FD_SET(filedescriptor,&__filedescriptset); \        memset(&__timeval,0,sizeof(__timeval)); \        switch (select(filedescriptor+1,&__filedescriptset,NULL,NULL,&__timeval)==0) \        { \          case -1: result=TARGET_NATIVE_ERROR; break; \          case  0: length=JNI_JLONG_CONST_0; result=TARGET_NATIVE_OK; break; \          default: length=JNI_JLONG_CONST_1; result=TARGET_NATIVE_OK; break; \        } \      } while (0)  #else    #define TARGET_NATIVE_FILE_AVAILABLE(filedescriptor,length,result) \      do { \        errno=TARGET_NATIVE_ERROR_OPERATION_NOT_PERMITTED; \        length=0; \        result=TARGET_NATIVE_ERROR; \      } while (0)  #endif#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_READ|WRITE* Purpose    : read/write from/to frile* Input      : -* Output     : -* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************/#ifndef TARGET_NATIVE_FILE_READ  #include <unistd.h>  #define TARGET_NATIVE_FILE_READ(filedescriptor,buffer,length,bytesRead,result) \    do { \      bytesRead=read(filedescriptor,buffer,length); \      result=(bytesRead!=-1)?TARGET_NATIVE_OK:TARGET_NATIVE_ERROR; \    } while (0)#endif#ifndef TARGET_NATIVE_FILE_WRITE  #include <unistd.h>  #define TARGET_NATIVE_FILE_WRITE(filedescriptor,buffer,length,bytesWritten,result) \    do { \      bytesWritten=write(filedescriptor,buffer,length); \      result=(bytesWritten!=-1)?TARGET_NATIVE_OK:TARGET_NATIVE_ERROR; \    } while (0)#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_SET_MODE_READONLY* Purpose    : set file mode to read-only* Input      : -* Output     : -* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************/#ifndef TARGET_NATIVE_FILE_SET_MODE_READONLY  #include <sys/types.h>  #include <sys/stat.h>  #include <unistd.h>  #define TARGET_NATIVE_FILE_SET_MODE_READONLY(filename,result) \    do { \      struct stat __statBuffer; \      \      if (stat(filename,&__statBuffer)==0) { \        result=(chmod(filename,__statBuffer.st_mode & TARGET_NATIVE_FILE_FILEPERMISSION_READONLY)==0)?TARGET_NATIVE_OK:TARGET_NATIVE_ERROR; \      } else { \        result=TARGET_NATIVE_ERROR; \      } \    } while (0)#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_EXISTS* Purpose    : check if file exists* Input      : -* Output     : -* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************/#ifndef TARGET_NATIVE_FILE_EXISTS  #include <sys/types.h>  #include <sys/stat.h>  #include <unistd.h>  #define TARGET_NATIVE_FILE_EXISTS(filename,result) \    do { \      struct stat __statBuffer; \      \      result=(stat(filename,&__statBuffer)==0)?TARGET_NATIVE_OK:TARGET_NATIVE_ERROR; \    } while (0)#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_IS_FILE* Purpose    : check if directory entry is a file* Input      : -* Output     : -* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************/#ifndef TARGET_NATIVE_FILE_IS_FILE  #include <sys/types.h>  #include <sys/stat.h>  #include <unistd.h>  #define TARGET_NATIVE_FILE_IS_FILE(filename,result) \    do { \      struct stat __statBuffer; \      \      result=((stat(filename,&__statBuffer)==0) && (S_ISREG(__statBuffer.st_mode)))?TARGET_NATIVE_OK:TARGET_NATIVE_ERROR; \    } while (0)#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_IS_DIRECTORY* Purpose    : check if directory entry is a directory* Input      : -* Output     : -* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************/#ifndef TARGET_NATIVE_FILE_IS_DIRECTORY  #include <sys/types.h>  #include <sys/stat.h>  #include <unistd.h>  #define TARGET_NATIVE_FILE_IS_DIRECTORY(filename,result) \    do { \      struct stat __statBuffer; \      \      result=((stat(filename,&__statBuffer)==0) && (S_ISDIR(__statBuffer.st_mode)))?TARGET_NATIVE_OK:TARGET_NATIVE_ERROR; \    } while (0)#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_GET_LAST_MODIFIED* Purpose    : get last modification time of file (milliseconds)* Input      : -* Output     : -* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************/#ifndef TARGET_NATIVE_FILE_GET_LAST_MODIFIED  #include <sys/types.h>  #include <sys/stat.h>  #include <unistd.h>  #define TARGET_NATIVE_FILE_GET_LAST_MODIFIED(filename,time,result) \    do { \      struct stat __statBuffer; \      \      time=TARGET_NATIVE_MATH_INT_INT64_CONST_0; \      if (stat(filename,&__statBuffer)==0) { \        time=TARGET_NATIVE_MATH_INT_INT64_MUL(TARGET_NATIVE_MATH_INT_INT32_TO_INT64(__statBuffer.st_mtime), \                                              TARGET_NATIVE_MATH_INT_INT32_TO_INT64(1000) \                                             ); \        result=TARGET_NATIVE_OK; \      } else { \        result=TARGET_NATIVE_ERROR; \      } \    } while (0)#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_SET_LAST_MODIFIED* Purpose    : set last modification time of file (milliseconds)* Input      : -* Output     : -* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************/#ifndef TARGET_NATIVE_FILE_SET_LAST_MODIFIED  #include <sys/types.h>  #include <sys/stat.h>  #include <unistd.h>  #ifdef HAVE_UTIME_H    #include <utime.h>  #elif HAVE_SYS_UTIME_H    #include <sys/utime.h>  #else    #error utime.h not found. Please check configuration.  #endif  #define TARGET_NATIVE_FILE_SET_LAST_MODIFIED(filename,time,result) \    do { \      struct stat    __statBuffer; \      struct utimbuf __utimeBuffer; \      \      if (stat(filename,&__statBuffer)==0) { \        __utimeBuffer.actime =__statBuffer.st_atime; \        __utimeBuffer.modtime=TARGET_NATIVE_MATH_INT_INT64_TO_INT32(TARGET_NATIVE_MATH_INT_INT64_DIV(time, \                                                                                                     TARGET_NATIVE_MATH_INT_INT32_TO_INT64(1000) \                                                                                                    ) \                                                              ); \        result=(utime(filename,&__utimeBuffer)==0)?TARGET_NATIVE_OK:TARGET_NATIVE_ERROR; \      } else { \        result=TARGET_NATIVE_ERROR; \      } \    } while (0)#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_DELETE* Purpose    : delete a file,link or directory* Input      : -* Output     : -* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************/#ifndef TARGET_NATIVE_FILE_DELETE  #define TARGET_NATIVE_FILE_DELETE(filename,result) \    do { \      result=((unlink(filename)==0) || (rmdir(filename)==0))?TARGET_NATIVE_OK:TARGET_NATIVE_ERROR; \    } while (0)#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_RENAME* Purpose    : delete a file, link or directory* Input      : -* Output     : -* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************/#ifndef TARGET_NATIVE_FILE_RENAME  #define TARGET_NATIVE_FILE_RENAME(oldfilename,newfilename,result) \    do { \      result=(rename(oldfilename,newfilename)==0)?TARGET_NATIVE_OK:TARGET_NATIVE_ERROR; \    } while (0)#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_MAKE_DIR* Purpose    : create new directory* Input      : name - directory name* Output     : result - 1 if successful, 0 otherwise* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************/#ifndef TARGET_NATIVE_FILE_MAKE_DIR  #include <sys/stat.h>  #define TARGET_NATIVE_FILE_MAKE_DIR(name,result) \    do { \      result=((mkdir(name,(S_IRWXO|S_IRWXG|S_IRWXU))==0)?TARGET_NATIVE_OK:TARGET_NATIVE_ERROR); \    } while (0)#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_GET_CWD* Purpose    : get current working directory* Input      : -* Output     : -* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************/#ifndef TARGET_NATIVE_FILE_GET_CWD  #include <unistd.h>  #define TARGET_NATIVE_FILE_GET_CWD(path,maxPathLength,result) \    do {\      result=(getcwd(path,maxPathLength)!=NULL)?TARGET_NATIVE_OK:TARGET_NATIVE_ERROR; \    } while (0)#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_OPEN_DIR* Purpose    : open directory for reading entries. * Input      : -* Output     : handle - handle if not error, NULL otherwise* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************/#ifndef TARGET_NATIVE_FILE_OPEN_DIR  #include <sys/types.h>  #include <dirent.h>  #define TARGET_NATIVE_FILE_OPEN_DIR(filename,handle,result) \    do { \      handle=(void*)opendir(filename); \      result=(handle!=NULL)?TARGET_NATIVE_OK:TARGET_NATIVE_ERROR; \    } while(0)#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_CLOSE_DIR* Purpose    : close directory* Input      : -* Output     : -* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************/#ifndef TARGET_NATIVE_FILE_CLOSE_DIR  #include <sys/types.h>  #include <dirent.h>  #define TARGET_NATIVE_FILE_CLOSE_DIR(handle,result) \    do { \      closedir((DIR*)handle); \      result=TARGET_NATIVE_OK; \    }  while(0)#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_READ_DIR* Purpose    : read directory entry* Input      : -* Output     : -* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************//* XXX ??? name als buffer? */#ifndef TARGET_NATIVE_FILE_READ_DIR  #include <sys/types.h>  #include <dirent.h>  #define TARGET_NATIVE_FILE_READ_DIR(handle,name,result) \    do { \      struct dirent *__direntBuffer; \      \      name=NULL; \      \      __direntBuffer=readdir((DIR*)handle); \      if (__direntBuffer!=NULL) { \        name=__direntBuffer->d_name; \        result=TARGET_NATIVE_OK; \      } else { \        result=TARGET_NATIVE_ERROR; \      } \    } while (0)#endif/***********************************************************************\* Name       : TARGET_NATIVE_FILE_FSYNC* Purpose    : do filesystem sync* Input      : -* Output     : -* Return     : -* Side-effect: unknown* Notes      : -\***********************************************************************/#ifndef TARGET_NATIVE_FILE_FSYNC  #define TARGET_NATIVE_FILE_FSYNC(filedescriptor,result) \    do { \      result=(fsync(filedescriptor)==0)?TARGET_NATIVE_OK:TARGET_NATIVE_ERROR; \    } while(0)#endif/***************************** Functions *******************************/#ifdef __cplusplus}#endif#endif /* __TARGET_GENERIC_FILE__ *//* end of file */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -