📄 a_who.cpp
字号:
/* Copyright is licensed under GNU LGPL. by I.J.Wang 2005 Simulate shell command who Build: make a_who*/#include "../src/wy_uty.h"#include "../src/wyregfile.h"#include "../src/wydate.h"#include <utmp.h>// print text of ubufWyRet dump_info(struct utmp& ubuf)try { if(ubuf.ut_type!=USER_PROCESS) { return(Ok); } WyStr str; str=ubuf.ut_user; str.resize(8,' '); str+=' '; str+=ubuf.ut_line; str.resize(14,' '); str+=' '; str+=ubuf.ut_host; str.resize(20,' '); str+=' '; WyTimeSpec utm(ubuf.ut_tv.tv_sec,ubuf.ut_tv.tv_usec*1000); str+=Wy::wrd( WyDate(Wy::local_tzname(),utm) ); Wy::cout << str << '\n'; return(Ok);}catch(const WyStr::Reply& e) { WY_RETURN(e);}catch(const WyByteFlow::Reply& e) { WY_RETURN(e);}catch(const WyRet& e) { throw;}catch(...) { WY_TERMINATE("unknown throw type");};int main(void)try { WyRet r; size_t n_rd; struct utmp ubuf; WyRegFile ufile(UTMP_FILE,O_RDONLY); for(;;) { if((r=Wy::full_read(ufile,&ubuf,sizeof(ubuf),n_rd))!=Ok) { WY_THROW(r); } if(n_rd!=sizeof(ubuf)) { if(n_rd==0) { break; } WY_THROW( WyRet(Wym_EIO) ); } if((r=dump_info(ubuf))!=Ok) { throw(r); } }; return(0);}catch(const WyRet& e) { if(e!=Ok) { Wy::cerr << Wy::wrd(e) << '\n'; } return e->c_repcode();}catch(...) { Wy::cerr << "main caught(...)\n"; return(-1);};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -