📄 target_generic_file.h
字号:
#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 + -