📄 usr.cpp
字号:
#include "usr.h"
#include <sstream>
#include <string>
#include <fstream.h>
#include "global.h"
namespace gilyou
{
user_t current_usr;
/*************************** user.info文件格式 ***************************/
/********* uname:password:deleted:uid:gid:home:ihome:ctime:atime *********/
int get_usr(char uname[],char upasswd[],user_t &usr,bool update_time){
std::fstream fs;
std::istringstream iss;
char buffs[COMMAND_SIZE];
system("IF NOT EXIST sys MKDIR sys");
fs.open(SYS_USER,std::ios::in | std::ios::out);
if(fs.fail()){
print("sys\\usr.info file missed.",INDENT | NEW_LINE);
fs.close();
return READ_FILE_ERROR;
}
std::ios::pos_type start = 0;
while(!fs.eof()){
start = fs.tellg();
fs.getline(buffs,COMMAND_SIZE);
replace(buffs,' ',':');
iss.clear();
iss.str(buffs);
iss>>usr.uname>>usr.upasswd>>usr.deleted>>usr.uid>>usr.gid>>usr.home>>usr.ihome>>usr.ctime>>usr.atime;
#if DEBUG
print(string_cat(2,"uname = ",usr.uname), INDENT | NEW_LINE);
print(string_cat(3,"upasswd = ",usr.upasswd,"\n deleted = "));
print(usr.deleted,INDENT | NEW_LINE);
print("uid = ");
print(usr.uid,INDENT | NEW_LINE);
print("gid = ",INDENT);
print(usr.gid,INDENT | NEW_LINE);
print(string_cat(3,"home = ",usr.home,"\n ctime = "));
print(usr.ctime,INDENT | NEW_LINE);
print("atime = ",INDENT);
print(usr.atime,INDENT | NEW_LINE);
#endif
if(string_equal(usr.uname,uname) && string_equal(usr.upasswd,upasswd) && (usr.deleted == NOT_DELETED)){
if(update_time){
fs.seekp(start);
fs.clear();
fs<<usr.uname<<":"<<usr.upasswd<<":"<<usr.deleted<<":"<<usr.uid<<":"<<usr.gid<<":"<<usr.home<<":"<<usr.ihome<<":"<<usr.ctime<<":"<<time(NULL);
}
fs.flush();
fs.close();
return SUCCESS;
}
}
fs.close();
return NOT_EXISTS;
}
bool usr_exists(char uname[])
{
std::ifstream ifs;
std::istringstream iss;
user_t usr;
char buffs[COMMAND_SIZE];
system("IF NOT EXIST sys MKDIR sys");
ifs.open(SYS_USER,std::ios::in);
if(ifs.fail()){
print("sys\\usr.info file missed.",INDENT | NEW_LINE);
ifs.close();
return false;
}
std::ios::pos_type start = 0;
while(!ifs.eof()){
start = ifs.tellg();
ifs.getline(buffs,COMMAND_SIZE);
replace(buffs,' ',':');
iss.clear();
iss.str(buffs);
iss>>usr.uname>>usr.upasswd>>usr.deleted>>usr.uid>>usr.gid>>usr.home>>usr.ihome>>usr.ctime>>usr.atime;
if(string_equal(usr.uname,uname) && (usr.deleted == NOT_DELETED)){
ifs.close();
return true;
}
}
ifs.close();
return false;
}
void copy_usr(user_t &to_be_init,user_t for_init)
{
to_be_init.uid = for_init.uid;
to_be_init.gid = for_init.gid;
to_be_init.deleted = for_init.deleted;
to_be_init.ihome = for_init.ihome;
strcpy(to_be_init.uname,for_init.uname);
strcpy(to_be_init.upasswd,for_init.upasswd);
strcpy(to_be_init.home,for_init.home);
to_be_init.ctime = for_init.ctime;
to_be_init.atime = for_init.atime;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -