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

📄 ck_sysfile.cpp

📁 一个不错
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    CHK_DEFAULT(tmp);    if((r=tmp.reset())!=Ok) {      WY_THROW(r);    }    CHK_DEFAULT(tmp);    if((r=tmp.reset(tmp))!=Ok) {   // self-ops      WY_THROW(r);    }    CHK_DEFAULT(tmp);    if((r=tmp.reset(tmp.fh()))!=Ok) {      WY_THROW(r);    }    #ifdef WY_DEBUG     if(wydbg_get_fdcnt()!=initial_fdcnt) {       WY_THROW( WyRet() );     }    #endif    //    WySysFile S0(HSrc0);    WySysFile S1(HSrc1);    CHK_SAME_SYSF(S0,HSrc0);    CHK_SAME_SYSF(S1,HSrc1);    if((r=tmp.reset(S0))!=Ok) {  // default->S0      WY_THROW(r);    }    CHK_NOT_DEFAULT(tmp);    CHK_SAME_SYSF(tmp,S0);    if((r=tmp.reset(S1))!=Ok) {  // S0->S1      WY_THROW(r);    }    CHK_NOT_DEFAULT(tmp);    CHK_SAME_SYSF(tmp,S1);    if((r=tmp.reset())!=Ok) {      WY_THROW(r);    }    CHK_DEFAULT(tmp);      if((r=tmp.reset(S0.fh()))!=Ok) { // default->S0.fh()      WY_THROW(r);    }    CHK_SAME_SYSF(tmp,S0);    if((r=tmp.reset(S1.fh()))!=Ok) {  // S0->S1.fh()      WY_THROW(r);    }    CHK_SAME_SYSF(tmp,S1);    // feature    {      WyFileHandle PreFh(tmp.fh());      if((r=tmp.reset(tmp))!=Ok) {        WY_THROW(r);      }      CHK_SAME_SYSF(tmp,S1);      std::cout << "Feature(Ok,non-default): ";      if(tmp.fh()==PreFh) {        std::cout << "t.reset(t) did not change fd\n";      } else {        std::cout << "t.reset(t) changes fd\n";      }    }    if((r=tmp.reset())!=Ok) {      WY_THROW(r);    }    CHK_DEFAULT(tmp);   }#ifdef WY_DEBUG if(wydbg_get_fdcnt()!=initial_fdcnt) {   WY_THROW( WyRet() );  }#endif     // chk reset(const char*,int)/reset(const WyStr&,int)   {    WySysFile tmp1;    WySysFile tmp2;    CHK_DEFAULT(tmp1);    CHK_DEFAULT(tmp2);    if((r=tmp1.reset(WyStr(__FILE__),O_RDONLY))!=Ok) {      WY_THROW( WyRet(r) );     }    if((r=tmp2.reset(__FILE__,O_RDONLY))!=Ok) {      WY_THROW( WyRet(r) );     }    CHK_NOT_DEFAULT(tmp1);    CHK_NOT_DEFAULT(tmp2);    CHK_SAME_SYSF(tmp1,tmp2);    if((r=tmp2.reset(__FILE__,O_RDONLY))!=Ok) {      WY_THROW( WyRet(r) );     }    CHK_SAME_SYSF(tmp1,tmp2);    #ifdef WY_DEBUG     if(wydbg_get_fdcnt()!=initial_fdcnt+2) {       WY_THROW( WyRet() );     }    #endif   }#ifdef WY_DEBUG if(wydbg_get_fdcnt()!=initial_fdcnt) {   WY_THROW( WyRet() ); }#endif   // chk _swap(WySysFile&)   {    WySysFile S0(HSrc0);    WySysFile S1(HSrc1);    const WyFileHandle Fh0(S0.fh()), Fh1(S1.fh());    CHK_SAME_SYSF(S0,HSrc0);    CHK_SAME_SYSF(S1,HSrc1);    r=S0._swap(S1);    if(r!=Ok) {      WY_THROW(r);    }    CHK_SAME_SYSF(S0,HSrc1);    CHK_SAME_SYSF(S1,HSrc0);    if(S0.fh()!=Fh1) {      WY_THROW(r);    }    if(S1.fh()!=Fh0) {      WY_THROW(r);    }      r=S1._swap(S0);    if(r!=Ok) {      WY_THROW(r);    }    if(S0.fh()!=Fh0) {      WY_THROW(r);    }    if(S1.fh()!=Fh1) {      WY_THROW(r);    }    WySysFile tmp;    CHK_DEFAULT(tmp);    CHK_NOT_DEFAULT(S0);    if((r=tmp._swap(S0))!=Ok) {      WY_THROW(r);    }    CHK_NOT_DEFAULT(tmp);    CHK_DEFAULT(S0);    #ifdef WY_DEBUG     if(wydbg_get_fdcnt()!=initial_fdcnt+2) {       WY_THROW( WyRet() );     }    #endif   }#ifdef WY_DEBUG if(wydbg_get_fdcnt()!=initial_fdcnt) {   WY_THROW( WyRet() );  } if(WySysFile::wydbg_get_objcnt()!=ObjCnt+1) {   WY_THROW( WyRet() ); }#endif    // chk _alloc  {   WySysFile tmp;   WySysFile* p=tmp._alloc(r);   if(r!=Ok) {     WY_THROW(r);   }   if(p==0) {     WY_THROW( WyRet() );   }   Wy_AtDestroy<void,WySysFile*> rrid(Wy::_delete_one,p);   CHK_DEFAULT(*p);   if((r=tmp._swap(*p))!=Ok) {     WY_THROW(r);   }    CHK_DEFAULT(*p);    CHK_DEFAULT(tmp);   // chk _alloc not override   {     class T : public WySysFile {     } tmp;     WySysFile* p=tmp._alloc(r);     if(r!=Wym_ENOSYS) {       if(r==Ok) {         delete p;       }       WY_THROW(r);     }   }  }#ifdef WY_DEBUG if(wydbg_get_fdcnt()!=initial_fdcnt) {   WY_THROW( WyRet() ); } if(WySysFile::wydbg_get_objcnt()!=ObjCnt+1) {   WY_THROW( WyRet() ); }#endif   // chk ctor failure (WyFileHandle)   {     try {       WySysFile tmp( WyFileHandle(-2) );       WY_THROW( WyRet() );     }     catch(const WySysFile::Reply& e) {       if(e!=Wym_EBADF) {         WY_THROW( WyRet(e) );       }       // FALLTHROUGH     };   }#ifdef WY_DEBUG if(wydbg_get_fdcnt()!=initial_fdcnt) {   WY_THROW( WyRet() ); }#endif     // chk copy ctor failure (const WySysFile&)   {     const WySysFile Fref(HSrc1);     const Wy__TypeFD Fref_fd( Fref.wy_fd() );     try {       exaust_cpy_ctor(Fref);       WY_THROW( WyRet() );     }     catch(const WySysFile::Reply& e) {       if((e!=Wym_EMFILE)&&(e!=Wym_ENOMEM)) {         WY_THROW( WyRet(e) );       }       // FALLTHROUGH     };     if(Fref.wy_fd()!=Fref_fd) {       WY_THROW( WyRet() );     }     #ifdef WY_DEBUG      if(wydbg_get_fdcnt()!=initial_fdcnt+1) {        WY_THROW( WyRet() );      }     #endif   }#ifdef WY_DEBUG if(wydbg_get_fdcnt()!=initial_fdcnt) {   WY_THROW( WyRet() ); }#endif     // chk copy ctor failure (const char*,int)   {     try {       WySysFile tmp("no.such.file.delete.me",O_RDONLY);       WY_THROW( WyRet() );     }     catch(const WySysFile::Reply& e) {       if(e!=Wym_ENOENT) {         WY_THROW( WyRet(e) );       }       // FALLTHROUGH     };   }#ifdef WY_DEBUG if(wydbg_get_fdcnt()!=initial_fdcnt) {   WY_THROW( WyRet() );           // fd lost }#endif     // chk copy ctor failure (const WyStr&,int)   {     try {       WySysFile tmp( WyStr("no.such.file.delete.me"),O_RDONLY);       WY_THROW( WyRet() );     }     catch(const WySysFile::Reply& e) {       if(e!=Wym_ENOENT) {         WY_THROW( WyRet(e) );       }       // FALLTHROUGH     };   }#ifdef WY_DEBUG if(wydbg_get_fdcnt()!=initial_fdcnt) {   WY_THROW( WyRet() );           // fd lost }#endif     // chk err reset(WyFileHandle)   {     r=exaust_reset(HSrc0);     if((r!=Wym_EMFILE)&&(r!=Wym_ENOMEM)) {       WY_THROW( WyRet(r) );     }     WySysFile tmp;     if((r=tmp.reset(WyFileHandle(-2)))!=Wym_EBADF) {       WY_THROW( WyRet(r) );   // assume no fd -2 currently     }   }#ifdef WY_DEBUG if(wydbg_get_fdcnt()!=initial_fdcnt) {   WY_THROW( WyRet() );           // fd lost }#endif   // chk err reset(const WySysFile&)   {     const WySysFile Fref( WyFileHandle(2) );     const Wy__TypeFD Fref_fd( Fref.wy_fd() );     r=exaust_reset(Fref);     if((r!=Wym_EMFILE)&&(r!=Wym_ENOMEM)) {       WY_THROW( WyRet(r) );     }     if(Fref.wy_fd()!=Fref_fd) {       WY_THROW( WyRet() );     }   }#ifdef WY_DEBUG if(wydbg_get_fdcnt()!=initial_fdcnt) {   WY_THROW( WyRet() );           // fd lost }#endif     // chk swap err   {     struct TMP : public WySysFile {};     WySysFile tmp0;     TMP tmp1;     r=tmp0._swap(tmp1);     if(r!=Wym_EBADTYPE) {       WY_THROW( WyRet(r) );     }     r=tmp1._swap(tmp0);     if(r!=Wym_EBADTYPE) {       WY_THROW( WyRet(r) );     }   }#ifdef WY_DEBUG if(wydbg_get_fdcnt()!=initial_fdcnt) {   WY_THROW( WyRet() );           // fd lost }#endif   // chk _alloc err   {    //WySysFile tmp;    //exaust_alloctmp);   } } catch(...) {   #ifdef WY_DEBUG   if(WySysFile::wydbg_get_objcnt()!=ObjCnt+1) {     WY_THROW( WyRet() );   }   #endif   throw; }; #ifdef WY_DEBUG if(WySysFile::wydbg_get_objcnt()!=ObjCnt+1) {   WY_THROW( WyRet() ); } #endif};void ck_sysfile(void){#ifdef WY_DEBUG initial_fdcnt=wydbg_get_fdcnt();#endif ck_0();#ifdef WY_DEBUG if(wydbg_get_fdcnt()!=initial_fdcnt) {   WY_THROW( WyRet() );           // fd lost }#endif ck_sysfile_1();#ifdef WY_DEBUG if(wydbg_get_fdcnt()!=initial_fdcnt) {   WY_THROW( WyRet() );           // fd lost } std::cout << "At most " << wydbg_get_fdcnt_max() << " fd's allocated\n";#endif};

⌨️ 快捷键说明

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