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

📄 wy__cfunc.cpp

📁 一个不错
💻 CPP
字号:
/* Copyright is licensed under GNU LGPL.                 by I.J.Wang 2005*/#define WYLIB_SOURCE#include "wy__cfunc.h"#include "wydefs.h"   // for WY__CANCEL_POINT#include <fcntl.h>#ifdef WY_DEBUGstatic int wyc__fdcnt=0;static int wyc__fdcnt_max=0;static ::pthread_mutex_t wyc__mtx= PTHREAD_MUTEX_INITIALIZER;int wydbg_get_fdcnt(void) throw(){ int v( ::pthread_mutex_lock(&wyc__mtx) ); if(v!=0) {   WY_TERMINATE(""); } v=wyc__fdcnt;  if(::pthread_mutex_unlock(&wyc__mtx)!=0) {   WY_TERMINATE(""); } return(v);};int wydbg_get_fdcnt_max(void) throw(){ int v( ::pthread_mutex_lock(&wyc__mtx) ); if(v!=0) {   WY_TERMINATE(""); } v=wyc__fdcnt_max; if(::pthread_mutex_unlock(&wyc__mtx)!=0) {   WY_TERMINATE(""); } return(v);};void wydbg_dec_fdcnt(void) throw(){ int v( ::pthread_mutex_lock(&wyc__mtx) ); if(v!=0) {   WY_TERMINATE(""); } --wyc__fdcnt;  if(::pthread_mutex_unlock(&wyc__mtx)!=0) {   WY_TERMINATE(""); }};#endif  // end WY_DEBUGint wyc_open(const char* pathname, int flags){#ifdef WY_DEBUG if(::pthread_mutex_lock(&wyc__mtx)!=0) {   WY_TERMINATE(""); }#endif  // end WY_DEBUG WY__CANCEL_POINT; const int v=::open(pathname,flags); WY__CANCEL_POINT;#ifdef WY_DEBUG if(v!=-1) {   ++wyc__fdcnt;   if(wyc__fdcnt>wyc__fdcnt_max) {     wyc__fdcnt_max=wyc__fdcnt;   } } if(::pthread_mutex_unlock(&wyc__mtx)!=0) {   WY_TERMINATE(""); }#endif  // end WY_DEBUG return(v);};int wyc_open(const char* pathname, int flags, mode_t mode){#ifdef WY_DEBUG if(::pthread_mutex_lock(&wyc__mtx)!=0) {   WY_TERMINATE(""); }#endif  // end WY_DEBUG WY__CANCEL_POINT; const int v=::open(pathname,flags,mode); WY__CANCEL_POINT;#ifdef WY_DEBUG if(v!=-1) {   ++wyc__fdcnt;   if(wyc__fdcnt>wyc__fdcnt_max) {     wyc__fdcnt_max=wyc__fdcnt;   } } if(::pthread_mutex_unlock(&wyc__mtx)!=0) {   WY_TERMINATE(""); }#endif  // end WY_DEBUG return(v);};int wyc_creat(const char* pathname, mode_t mode){#ifdef WY_DEBUG if(::pthread_mutex_lock(&wyc__mtx)!=0) {   WY_TERMINATE(""); }#endif  // end WY_DEBUG WY__CANCEL_POINT; const int v=::creat(pathname,mode); WY__CANCEL_POINT;#ifdef WY_DEBUG if(v!=-1) {   ++wyc__fdcnt;   if(wyc__fdcnt>wyc__fdcnt_max) {     wyc__fdcnt_max=wyc__fdcnt;   } } if(::pthread_mutex_unlock(&wyc__mtx)!=0) {   WY_TERMINATE(""); }#endif  // end WY_DEBUG return(v);};int wyc_dup(int oldfd){#ifdef WY_DEBUG if(::pthread_mutex_lock(&wyc__mtx)!=0) {   WY_TERMINATE(""); }#endif  // end WY_DEBUG const int v=::dup(oldfd); #ifdef WY_DEBUG if(v!=-1) {   ++wyc__fdcnt;   if(wyc__fdcnt>wyc__fdcnt_max) {     wyc__fdcnt_max=wyc__fdcnt;   } } if(::pthread_mutex_unlock(&wyc__mtx)!=0) {   WY_TERMINATE(""); }#endif  // end WY_DEBUG return(v);};// [Syn] Is the given fd an open file descriptor//// [Ret] 1= fd is an open file descriptor//       0= otherwise//int wyc__is_open(int fd){ return (::fcntl(fd,F_GETFL)==-1)? 0:1;};int wyc_dup2(int oldfd, int newfd){#ifdef WY_DEBUG if(::pthread_mutex_lock(&wyc__mtx)!=0) {   WY_TERMINATE(""); } int t= wyc__is_open(newfd); const int v=::dup2(oldfd,newfd);  if(v!=-1) {   ++wyc__fdcnt;   wyc__fdcnt-=t;   if(wyc__fdcnt>wyc__fdcnt_max) {     wyc__fdcnt_max=wyc__fdcnt;   } } if(::pthread_mutex_unlock(&wyc__mtx)!=0) {   WY_TERMINATE(""); } return(v);#else return ::dup2(oldfd,newfd); #endif  // end WY_DEBUG};int wyc_fstat(int fd, struct stat* buf){ return ::fstat(fd,buf); };int wyc_stat(const char* pathname, struct stat* buf){ return ::stat(pathname,buf); };int wyc_fsync(int fd){ WY__CANCEL_POINT; const int v( ::fsync(fd) ); WY__CANCEL_POINT; return(v);};int wyc_fdatasync(int fd){ return ::fdatasync(fd); };int wyc_isatty(int fd){ return(::isatty(fd)); };

⌨️ 快捷键说明

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