void user_mark(char *s,char *p) { op_system(); sion_sr("select",s); sion_read(nowvar); sion_close(); dsd_mark(p,nowvar,TRUE); }
void user_sel(char *s,char *p) { op_system(); sion_sr("select",s); sion_read(nowvar); sion_close(); dsd_select(p,nowvar); }
void ulist_write() { uint i; op_user(); for(i=1;i<user.member;++i) ulist_set(i,nowvar); sion_close(); }
void prof_read(uint i) { if (i==0||i>user.member) return; op_user(); if (sion_sr("user",lpu(i,0))==2) sion_pageout(); else msgout(IC_nok "プロフィールは登録されていません。"); sion_close(); }
void prof_writeafter(uint f) { if (!f) { msgout(IC_stop "書き込みを中止しました。"); return; } op_user(); sion_sr("user",lpu(user.number,0)); sion_write(op_temp("r"),user.var); msgout(IC_ok "書き込みをしました。"); sys_log("| prof書き込み"); sion_close(); }
SHELL void user_set(uint id) { if (id>user.member) return ; op_user(); sion_sr("user",lpu(id,0)); sion_read(user.var); sion_sr("mptr",lpu(id,0)); sion_read(user.mptr); sion_close(); user_rep(id); }
void user_init() { user.defs=varinit(LN_str,MAX_var); user.var=varinit(LN_str,MAX_var); user.mptr=varinit(LN_longdig,MAX_var); user.member=atoi(getvar("member",sys.var)); op_system(); sion_sr("def","signup"); sion_read(user.defs); sion_close(); ulist_init(); }
void user_guest(char *s) { char buf[LN_buf+1]; op_user(); sion_sr("user",lpu(0,0)); sion_read(user.var); sion_sr("mptr",lpu(0,0)); sion_read(user.mptr); sion_close(); sprt(buf,nps(s,LN_handle-6),"(旅人)",NULL); setvar("handle",buf,user.var); user_rep(0); }
void ulist_init() { uint i; user.list=lmalloc(sizeof(ulist_t) *(MAX_user+1)); if (user.list==NULL) error(lpu(farcoreleft(),0)); op_user(); for (i=0;i<=user.member;++i) { if (sion_sr("user",lpu(i,0))==0) continue; sion_read(nowvar); ulist_rep(i,nowvar); } sion_close(); }
SHELL void sys_fin() { setvar("member",lpu(user.member,0),sys.var); setvar("execute",lpu(sys.execute,0),sys.var); setvar("logon",lpu(sys.logon,0),sys.var); setvar("post",lpu(sys.post,0),sys.var); setvar("poolmax",lpu(pool.max,0),sys.var); setvar("tdlogon",lpu(sys.t_logon,0),sys.var); setvar("tdpost" ,lpu(sys.t_post,0),sys.var); ulist_write(); op_system(); sion_sr("config","system"); sion_write(NULL,sys.var); varfin(sys.result); varfin(sys.var); varfin(nowvar); sion_close(); /* sys_log("●システム終了");*/ }
SHELL void user_write() { if (user.number==0) return ; op_user(); setvar("mode",lpu((!ch.frug.esc)?1:0|(ch.frug.onekey)?2:0,0),user.var); setvar("post" ,lpu(ulist_getpost (user.number),0),user.var); setvar("mpost" ,lpu(ulist_getmpost (user.number),0),user.var); setvar("login" ,lpu(ulist_getlogin (user.number),0),user.var); setvar("mlogin",lpu(ulist_getmlogin(user.number),0),user.var); setvar("wp" ,lpu(ulist_getwp (user.number),0),user.var); sion_sr("user",lpu(user.number,0)); sion_write(NULL,user.var); sion_sr("mptr",lpu(user.number,0)); sion_write(NULL,user.mptr); sion_close(); user_rep(user.number); }
void sys_init() { char *p,buf[LN_buf+1]; char t; time_t e,s; ch.frug.called=0; ch.frug.monitor=1; ch.frug.esc=0; ch.fp=NULL; sys.rs=FALSE; /* ch.env=NULL;*/ /* debug_start();*/ ed_init(); sion_init(); nowvar=varinit(LN_str,MAX_var); sys.var=varinit(LN_str,MAX_var); sys.result=varinit(LN_result,MAX_var); strcpy(sys.home,"."); op_system(); if (sion_sr("config","system")==0) { exit(1); } sion_read(sys.var); sion_sr("config","result"); sion_read(sys.result); sion_close(); sys.execute=atoi(getvar("execute",sys.var))+1; sys.logon =atoi(getvar("logon",sys.var)); sys.post =atoi(getvar("post",sys.var)); sys.t_logon=atoi(getvar("tdlogon",sys.var)); sys.t_post =atoi(getvar("tdpost",sys.var)); strjncpy(sys.netname,getvar("netname",sys.var),LN_title); strjncpy(sys.netid,getvar("netid",sys.var),LN_netid); strjncpy(sys.home ,getvar("home",sys.var),LN_dirs); strjncpy(sys.temp ,getvar("temp",sys.var),LN_dirs); pool.max=atoi(getvar("poolmax",sys.var)); copyright(); p=getvar("opentime",sys.var); tzset(); /* 時空関数がまだ現れていないので呼ぶ必要あり */ if (p==NULL) { sys.opentime=DT_daytime; sys.starttime=0; }else { p=pull(buf,p); t=atoi(buf); p=pull(buf,p); s=(t*60+atoi(buf))*60; p=pull(buf,p); t=atoi(buf); p=pull(buf,p); e=(t*60+atoi(buf))*60; /*dbprintf("s:%ld,e:%ld",s,e);*/ sys.opentime=e+(e<s?DT_daytime:0)-s; sys.starttime=DT_daytime-s; /*dbprintf("o:%ld,s:%ld",sys.opentime,sys.starttime);*/ } stack_init(); where_init(); user_init(); art_init(); pool_init(); sys.rs=rs_init(); /* sys_log("●システム起動");*/ }
int readMultiFile(char* fn, bool printanyway) { int errors=0; std::cout << "read sion file" << std::endl; //output varibales for sion_open function sion_int32 fsblksize; sion_int64 *chunksize = NULL; int *globalranks = NULL; int ntasks; int nfiles; FILE *fileptr; int sid = sion_open(fn, "rb", &ntasks, &nfiles, &chunksize, &fsblksize, &globalranks, &fileptr); //values are now know //std::cout << "ntasks=" << ntasks << std::endl; //std::cout << "fsblksize=" << fsblksize << std::endl; //std::cout << "chunksize[0]="<< chunksize[0] << std::endl; //iterating the nodes(tasks) for (int task=0; task<ntasks; task++) { int NodesCount; double Tstart; double T; int numberOfRecords=0; int startBody; double Tresolution; //seek to chunks of task sion_seek(sid, task, 0,0); //while (sion_feof(sid)<1) // sion_fread(&numberOfRecords, sizeof(int), 1, sid); //sion_seek(sid, task, 0,0); //read values sion_fread(&NodesCount, sizeof(int), 1,sid); sion_fread(&T, sizeof(double), 1,sid); sion_fread(&Tresolution, sizeof(double), 1,sid); int numberOfRecords_wrong; sion_fread(&numberOfRecords_wrong, sizeof(int), 1,sid); sion_fread(&startBody, sizeof(int), 1,sid); if (printanyway) { std::cout << "NodesCount=" << NodesCount << std::endl; std::cout << "T=" << T << std::endl; std::cout << "Tresolution=" << Tresolution << std::endl; //std::cout << "numberOfRecords=" << numberOfRecords << std::endl; std::cout << "startBody=" << startBody << std::endl; } if (!inBoundaries(NodesCount, NodesCount_B)) { std::cerr << "NodesCount not in Boundaries" << std::endl; return errors+1;; } if (!inBoundaries(T, T_B)) { std::cerr << "T not in Boundaries" << std::endl; errors++; } if (!inBoundaries(Tresolution, Tresolution_B)) { std::cerr << "Tresolution not in Boundaries" << std::endl; errors++; } /*if (!inBoundaries(numberOfRecords, numberOfRecords_B)) { std::cerr << "numberOfRecords not in Boundaries" << std::endl; return errors+1;; }*/ //read and store header information std::map<int,Multi> idMap; for (int i=0; i<NodesCount; i++) { int multi_id; Multi multi; double interval; int numberOfValues; sion_fread(&multi_id, sizeof(int), 1,sid); sion_fread(&multi.neuron_id, sizeof(int), 1,sid); sion_fread(&multi.interval, sizeof(double), 1,sid); sion_fread(&multi.numberOfValues, sizeof(int), 1,sid); /*std::cout << "Node " << i << ":" << std::endl; std::cout << "\tmultimeter_id=" << multi_id << std::endl; std::cout << "\tneuron_id=" << multi.neuron_id << std::endl; std::cout << "\tinterval=" << multi.interval << std::endl; std::cout << "\tnumberOfValues=" << multi.numberOfValues << std::endl;*/ if (!inBoundaries(multi.numberOfValues, numberOfValues_B)) { std::cerr << "multi.numberOfValues not in Boundaries" << std::endl; std::cerr << "multi.numberOfValues=" << multi.numberOfValues << std::endl; return errors+1;; } for (int v=0; v<multi.numberOfValues; v++) { char valueName[20]; sion_fread(&valueName, 20, 1, sid); multi.valuesNames.push_back(valueName); } idMap.insert(std::pair<int,Multi>(multi_id,multi)); /*std::cout << "\tvaluesNames=" << multi.valuesNames.at(0) ; for (int v=1; v<multi.numberOfValues; v++) { std::cout << "," << multi.valuesNames.at(v); } std::cout << std::endl;*/ } double v[10]; //read body of file //std::cout << "\t\tSTATUS\tM_ID\tN_ID\tTIMESTAMP\tVALUES" << std::endl; while (sion_feof(sid)<1) { int multi_id; sion_fread(&multi_id, sizeof(int), 1, sid); //if end of file multi_id contains numberOfRecords value if (sion_feof(sid)>0) { if (numberOfRecords != multi_id) { std::cerr << "ERROR: numberOfRecords read != numberOfRecordss counted" << std::endl; std::cerr << "numberOfRecords read ="<< multi_id <<std::endl; std::cerr << "numberOfRecords counted ="<< numberOfRecords <<std::endl; errors++; } break; } numberOfRecords++; int neuron_id; int numberOfValues; int timestamp; sion_fread(&neuron_id, sizeof(int), 1, sid); sion_fread(×tamp, sizeof(int), 1, sid); sion_fread(&numberOfValues, sizeof(int), 1, sid); if (numberOfValues != idMap[multi_id].numberOfValues) { std::cerr << "ERROR: numberOfValues != idMap[multi_id].numberOfValues" << std::endl; std::cerr << "numberOfValues=" << numberOfValues << std::endl; std::cerr << "idMap[" << multi_id <<"].numberOfValues=" << idMap[multi_id].numberOfValues << std::endl; } sion_fread(&v, sizeof(double),idMap[neuron_id].numberOfValues,sid); bool valueNotInBoundaries=false; for (int i=1; i<idMap[multi_id].numberOfValues; i++) { valueNotInBoundaries = (valueNotInBoundaries || inBoundaries(v[i], values_B)); } if (!inBoundaries(multi_id, multimeter_id_B) || !inBoundaries(neuron_id, neuron_id_B) || !inBoundaries(numberOfValues, numberOfValues_B) || !inBoundaries(timestamp, timestamp_B) || valueNotInBoundaries || printanyway) { std::cerr << "OOB\t" << multi_id << "\t" << neuron_id << "\t" << timestamp << "\t"; std::cerr << idMap[neuron_id].valuesNames.at(0) << "=" << v[0]; for (int i=1; i<idMap[neuron_id].numberOfValues; i++) { std::cerr << "\t" << idMap[neuron_id].valuesNames.at(i) << "=" << v[i]; } std::cerr << std::endl; errors++; } } } //close file sion_close(sid); return errors; }
int readSpikeFile(char* fn, bool printanyway) { sion_int32 fsblksize; sion_int64 *chunksize = NULL; int *globalranks = NULL; int ntasks; int nfiles; int sid = sion_open(fn, "rb", &ntasks, &nfiles, &chunksize, &fsblksize, &globalranks, NULL); //std::cout << "ntasks: " << ntasks << std::endl; //std::cout << "chunksize[0]: " << chunksize[0] << std::endl; //std::cout << "fsblksize: " << fsblksize << std::endl; int errors=0; for (int task=0; task<ntasks; task++) { sion_seek(sid, task, 0,0); int nodesCount; double T; double Tresolution; int numberOfRecords=0; int startOfBody; //while (sion_feof(sid)<1) // sion_fread(&numberOfRecords, sizeof(int), 1, sid); sion_seek(sid, task, 0,0); sion_fread(&nodesCount, sizeof(int), 1, sid); sion_fread(&T, sizeof(double), 1, sid); sion_fread(&Tresolution, sizeof(double), 1, sid); // should be Tresolution int numberOfRecords_wrong; sion_fread(&numberOfRecords_wrong, sizeof(int), 1, sid); sion_fread(&startOfBody, sizeof(int), 1, sid); /*std::cout << "task " << task << ":" << std::endl; std::cout << "\tchunksize: " << chunksize[task] << std::endl; std::cout << "\tglobalranks: " << globalranks[task] << std::endl; std::cout << std::endl;*/ if (printanyway) { std::cout << "\tnodesCount: " << nodesCount << std::endl; std::cout << "\tT: " << T << std::endl; std::cout << "\tTresolution: " << Tresolution << std::endl; std::cout << "\tstartOfBody: " << startOfBody << std::endl; //std::cout << "\tnumberOfRecords: " << numberOfRecords << std::endl; } //int spikedetector_id; /*if (!inBoundaries(numberOfRecords, numberOfRecords_B)) { std::cerr << "numberOfRecords is not in Boundaries" << std::endl; std::cerr << "numberOfRecords=" << numberOfRecords << std::endl; return errors+1; }*/ //std::cout << "\t\tSTATUS\tSD_ID\tN_ID\tTIMESTAMP" << std::endl; while (sion_feof(sid)<1) { int spikedetector_id; sion_fread(&spikedetector_id, sizeof(int), 1, sid); //if end of file multi_id contains numberOfRecords value if (sion_feof(sid)>0) { if (numberOfRecords != spikedetector_id) { std::cerr << "ERROR: numberOfRecords read != numberOfRecordss counted" << std::endl; std::cerr << "numberOfRecords read ="<< spikedetector_id <<std::endl; std::cerr << "numberOfRecords counted ="<< numberOfRecords <<std::endl; errors++; } break; } numberOfRecords++; int neuron_id; int timestamp; sion_fread(&neuron_id, sizeof(int), 1, sid); sion_fread(×tamp, sizeof(int), 1, sid); if (!inBoundaries(spikedetector_id, spikedetector_id_B) || !inBoundaries(neuron_id, neuron_id_B) || !inBoundaries(timestamp, timestamp_B) || printanyway ) { std::cerr << "\t\tOOB\t"; std::cerr << spikedetector_id << "\t"; std::cerr << neuron_id << "\t"; std::cerr << timestamp << std::endl; errors++; } } } sion_close(sid); return errors; }