home *** CD-ROM | disk | FTP | other *** search
- #include "msg.h"
- #include "xext.h"
- #include "awindow.h"
- #include "xkeys.h"
-
- char mskphone[]="(___)___-____";
- char mskdate[]="__/__/____";
- char mskflags[]="________|________";
- #define msk35 msk78+43
- #define msk36 msk78+42
- #define mskst msk35+33
- #define mskzip msk35+30
- #define mskcit msk35+12
- #define msk1 msk78+77
- #define msk2 msk78+76
- #define msk3 msk35+32
- #define msk4 msk35+31
- #define msk5 msk35+30
- #define msk6 msk35+29
- #define msk8 msk35+27
- #define msk10 msk35+25
- #define msk11 msk35+24
- #define msk47 msk78+31
- #define msk63 msk78+15
- #define msk15 msk78+63
- #define msk12 msk78+66
- #define msk58 msk78+20
- #define msk46 msk78+32
- #define msk16 msk78+62
-
- #define USEREDITOR 1
- #define OPTIONS 2
-
-
- void pascal edit_user (char type) {
-
- WINDOW *wnd;
- FIELD *fld;
- char flags[18];
- char seclvls[10][7];
- register int x;
- int oldx,oldy;
- char s[81];
- word tempbaud;
- char tempsafe,oldtimer;
- char ldate[15];
- char bdate[15];
- char cold[2];
- char clr[2];
- char more[2];
- char genflags[4];
- char width[4];
- char length[4];
- char expert[2];
- char twit[2];
- char spec[2];
- char ignhr[2];
- char ignrat[2];
- char fse[2];
- char graph[2];
- char amnu[2];
- char nokill[2];
- char del[2];
- char arq[2];
- char pointid[6];
- char credit[6];
- char hiok[2];
- char comptype[4];
- char upk[11];
- char downk[11];
- char upno[6];
- char downno[6];
- char posts[6];
- char viol[4];
- char times[11];
- char dktoday[6];
- char uktoday[6];
- char callsperday[6];
- char timepercall[6];
- char totaltime[6];
- char callstoday[6];
- char timetoday[6];
- char timeleft[6];
- char inout[2];
- char debug[2];
- char swap[2];
- char trace[2];
- char swapdisk[2];
-
- if(inwindow & USEREDITOR) {
- fputs("\07",stdout);
- return;
- }
- tempbaud=baud;
- tempsafe=safe;
- if(!type) baud=0; /* Allow remote use */
- safe=0;
- oldtimer=timer_off;
- timer_off=1;
- curr_cursor(&oldx,&oldy);
- if(inwindow & USEREDITOR) {
- }
- wnd=establish_window(0,0,20,80);
- if(!wnd) {
- error_message(" Can't make window ");
- Outtahere:
- while(!inkey());
- clear_message();
- baud=tempbaud;
- safe=tempsafe;
- timer_off=oldtimer;
- cursor(oldx,oldy);
- return;
- }
- inwindow |= USEREDITOR;
- set_title(wnd," Edit User & Stuff -- [ESCape] when finished ");
- set_colors(wnd,ALL,BLUE,WHITE,BRIGHT);
- set_colors(wnd,ACCENT,WHITE,BLACK,DIM);
- set_border(wnd,2);
- display_window(wnd);
- wprompt(wnd,1,1,"Name:");
- wprompt(wnd,1,2,"Handle:");
- wprompt(wnd,1,3,"Phone#1:");
- wprompt(wnd,37,3,"Phone#2:");
- wprompt(wnd,1,4,"City:");
- wprompt(wnd,37,4,"Flags: [ ]");
- for(x=0;x<10;x++) {
- sprintf(s,"Sec#%d:",x);
- if(x<5) {
- wprompt(wnd,(x*14)+1,5,s);
- }
- else {
- wprompt(wnd,((x-5)*14)+1,6,s);
- }
- sprintf(seclvls[x],"%-01u",user.stat[x]);
- }
- *flags=0;
- for (x=0;x<16;x++) {
- (user.attr2 & (1<<x)) ? strcat(flags,"X") : strcat(flags,"-");
- }
- sprintf(bdate,"%02d%02d%04d",user.birthdate.da_mon,user.birthdate.da_day,user.birthdate.da_year);
- sprintf(ldate,"%02d%02d%04d",user.lastdate.da_mon,user.lastdate.da_day,user.lastdate.da_year);
- sprintf(pointid,"%01u",user.pointid);
- sprintf(credit,"%01d",user.credit);
- sprintf(timepercall,"%01u",user.timepercall);
- sprintf(callsperday,"%01u",user.callsperday);
- sprintf(totaltime,"%01u",user.totaltime);
- sprintf(timetoday,"%01u",user.timetoday);
- sprintf(callstoday,"%01u",user.callstoday);
-
- if(user.gen1) *genflags='X';
- else *genflags='-';
- if(user.gen2) genflags[1]='X';
- else genflags[1]='-';
- if(user.gen3) genflags[2]='X';
- else genflags[2]='-';
- genflags[3]=0;
- if(user.cold) strcpy(cold,"X");
- else strcpy(cold,"-");
- if(user.more) strcpy(more,"-");
- else strcpy(more,"X");
- if(user.scrnclr) strcpy(clr,"-");
- else strcpy(clr,"X");
- if(user.graphics) strcpy(graph,"X");
- else strcpy(graph,"-");
- if(user.fullscreen) strcpy(fse,"X");
- else strcpy(fse,"-");
- if(user.commodore) strcpy(spec,"X");
- else strcpy(spec,"-");
- if(user.expert) strcpy(expert,"X");
- else strcpy(expert,"-");
- if(user.twit) strcpy(twit,"X");
- else strcpy(twit,"-");
- if(user.ansimenus) strcpy(amnu,"-");
- else strcpy(amnu,"X");
- if(user.deleted) strcpy(del,"X");
- else strcpy(del,"-");
- if(user.ignorehrs) strcpy(ignhr,"X");
- else strcpy(ignhr,"-");
- if(user.ignorerat) strcpy(ignrat,"X");
- else strcpy(ignrat,"-");
- if(user.nokill) strcpy(nokill,"X");
- else strcpy(nokill,"-");
- if(user.arq) strcpy(arq,"X");
- else strcpy(arq,"-");
- sprintf(width,"%01hu",user.width);
- sprintf(length,"%01hu",user.length);
- if(user.hiok) strcpy(hiok,"X");
- else strcpy(hiok,"-");
- if(conf.sysopin) strcpy(inout,"X");
- else strcpy(inout,"-");
- if(conf.debug) strcpy(debug,"X");
- else strcpy(debug,"-");
- if(conf.swap) strcpy(swap,"X");
- else strcpy(swap,"-");
- if(conf.trace) strcpy(trace,"X");
- else strcpy(trace,"-");
- sprintf(comptype,"%01hu",user.comptype);
- sprintf(upk,"%01lu",user.upk);
- sprintf(downk,"%01lu",user.downk);
- sprintf(upno,"%01u",user.upno);
- sprintf(downno,"%01u",user.downno);
- sprintf(posts,"%01u",user.posts);
- sprintf(times,"%01lu",user.times);
- sprintf(viol,"%01hu",user.violations);
- sprintf(uktoday,"%01u",user.uktoday);
- sprintf(dktoday,"%01u",user.dktoday);
- sprintf(timeleft,"%01u",(word)((long)timelimit-(getxbbstime()/60L)));
- sprintf(swapdisk,"%c",conf.useswapdisk);
-
- wprompt(wnd,1,7,"Birth:");
- wprompt(wnd,33,7,"Last:");
- if(!conf.genstatezip) {
- wprompt(wnd,1,8,"State:");
- wprompt(wnd,14,8,"Zip:");
- }
- else wprompt(wnd,1,8,"GenFld:");
- wprompt(wnd,27,8,"Cold: [ ]");
- wprompt(wnd,38,8,"Clr: [ ]");
- wprompt(wnd,48,8,"More: [ ]");
- wprompt(wnd,59,8,"GenFlags: [ ]");
- wprompt(wnd,1,9,"Graph: [ ]");
- wprompt(wnd,13,9,"Full: [ ]");
- wprompt(wnd,24,9,"Spec: [ ]");
- wprompt(wnd,35,9,"Exp: [ ]");
- wprompt(wnd,45,9,"Twit: [ ]");
- wprompt(wnd,57,9,"AMnu: [ ]");
- wprompt(wnd,68,9,"Del: [ ]");
- wprompt(wnd,1,10,"IgnHrs: [ ]");
- wprompt(wnd,14,10,"IgnRat: [ ]");
- wprompt(wnd,27,10,"NoKill: [ ]");
- wprompt(wnd,40,10,"Arq: [ ]");
- wprompt(wnd,50,10,"Length:");
- wprompt(wnd,64,10,"Width:");
- wprompt(wnd,1,11,"PointID:");
- wprompt(wnd,16,11,"Password:");
- wprompt(wnd,38,11,"Credit:");
- wprompt(wnd,52,11,"HiOK: [ ]");
- wprompt(wnd,63,11,"CompType:");
- wprompt(wnd,1,12,"UpK:");
- wprompt(wnd,18,12,"DownK:");
- wprompt(wnd,38,12,"Up#:");
- wprompt(wnd,53,12,"Down#:");
- wprompt(wnd,1,13,"Posts:");
- wprompt(wnd,18,13,"Times:");
- wprompt(wnd,37,13,"Violations:");
- wprompt(wnd,54,13,"UKtoday:");
- wprompt(wnd,1,14,"DKtoday:");
- wprompt(wnd,16,14,"Time/Call:");
- wprompt(wnd,35,14,"Calls/Day:");
- wprompt(wnd,54,14,"TotalTime:");
- wprompt(wnd,1,15,"TimeToday:");
- wprompt(wnd,20,15,"CallsToday:");
- wprompt(wnd,40,15,"TimeLeft:");
- wprompt(wnd,1,17,"You in? [ ]");
- wprompt(wnd,14,17,"Debug? [ ]");
- wprompt(wnd,26,17,"Trace? [ ]");
- wprompt(wnd,38,17,"Swap? [ ]");
- wprompt(wnd,49,17,"Swapdisk:");
-
- init_template(wnd);
-
- fld=establish_field(wnd,11,1,msk35,user.name,'a');
- fld=establish_field(wnd,11,2,msk35,user.handle,'a');
- if(!conf.genphone) {
- fld=establish_field(wnd,11,3,mskphone,user.phone1,'N');
- fld=establish_field(wnd,46,3,mskphone,user.phone2,'N');
- }
- else {
- fld=establish_field(wnd,11,3,msk10,user.phone1,'A');
- fld=establish_field(wnd,46,3,msk10,user.phone2,'A');
- }
- fld=establish_field(wnd,11,4,mskcit,user.city,'a');
- fld=establish_field(wnd,47,4,mskflags,flags,'O');
- for(x=0;x<10;x++) {
- if(x<5) {
- fld=establish_field(wnd,(x*14)+8,5,msk5,seclvls[x],'N');
- }
- else {
- fld=establish_field(wnd,((x-5)*14)+8,6,msk5,seclvls[x],'N');
- }
- }
- fld=establish_field(wnd,9,7,mskdate,bdate,'D');
- fld=establish_field(wnd,39,7,mskdate,ldate,'D');
- if(!conf.genstatezip) {
- fld=establish_field(wnd,9,8,mskst,user.state,'A');
- fld=establish_field(wnd,19,8,mskzip,user.zip,'N');
- }
- else {
- fld=establish_field(wnd,9,8,msk8,user.state,'a');
- }
- fld=establish_field(wnd,34,8,msk1,cold,'O');
- fld=establish_field(wnd,44,8,msk1,clr,'O');
- fld=establish_field(wnd,55,8,msk1,more,'O');
- fld=establish_field(wnd,70,8,msk3,genflags,'O');
- fld=establish_field(wnd,9,9,msk1,graph,'O');
- fld=establish_field(wnd,20,9,msk1,fse,'O');
- fld=establish_field(wnd,31,9,msk1,spec,'O');
- fld=establish_field(wnd,41,9,msk1,expert,'O');
- fld=establish_field(wnd,52,9,msk1,twit,'O');
- fld=establish_field(wnd,64,9,msk1,amnu,'O');
- fld=establish_field(wnd,74,9,msk1,del,'O');
- fld=establish_field(wnd,10,10,msk1,ignhr,'O');
- fld=establish_field(wnd,23,10,msk1,ignrat,'O');
- fld=establish_field(wnd,36,10,msk1,nokill,'O');
- fld=establish_field(wnd,46,10,msk1,arq,'O');
- fld=establish_field(wnd,58,10,msk3,length,'N');
- fld=establish_field(wnd,71,10,msk3,width,'N');
- fld=establish_field(wnd,10,11,msk5,pointid,'N');
- fld=establish_field(wnd,26,11,msk11,user.password,'a');
- fld=establish_field(wnd,46,11,msk5,credit,'N');
- fld=establish_field(wnd,59,11,msk1,hiok,'O');
- fld=establish_field(wnd,73,11,msk3,comptype,'N');
- fld=establish_field(wnd,6,12,msk10,upk,'N');
- fld=establish_field(wnd,25,12,msk10,downk,'N');
- fld=establish_field(wnd,43,12,msk5,upno,'N');
- fld=establish_field(wnd,60,12,msk5,downno,'N');
- fld=establish_field(wnd,9,13,msk5,posts,'N');
- fld=establish_field(wnd,25,13,msk10,times,'N');
- fld=establish_field(wnd,49,13,msk3,viol,'N');
- fld=establish_field(wnd,63,13,msk5,uktoday,'N');
- fld=establish_field(wnd,10,14,msk5,dktoday,'N');
- fld=establish_field(wnd,28,14,msk5,timepercall,'N');
- fld=establish_field(wnd,46,14,msk5,callsperday,'N');
- fld=establish_field(wnd,66,14,msk5,totaltime,'N');
- fld=establish_field(wnd,12,15,msk5,timetoday,'N');
- fld=establish_field(wnd,33,15,msk5,callstoday,'N');
- fld=establish_field(wnd,51,15,msk5,timeleft,'N');
- fld=establish_field(wnd,10,17,msk1,inout,'O');
- fld=establish_field(wnd,22,17,msk1,debug,'O');
- fld=establish_field(wnd,34,17,msk1,trace,'O');
- fld=establish_field(wnd,45,17,msk1,swap,'O');
- fld=establish_field(wnd,59,17,msk1,swapdisk,'A');
-
- prep_template(wnd);
- data_entry(wnd);
-
- delete_window(wnd);
- rstrip(user.name);
- rstrip(user.handle);
- rstrip(user.phone1);
- rstrip(user.phone2);
- rstrip(user.city);
- rstrip(user.password);
- rstrip(user.state);
- for(x=0;x<10;x++) {
- user.stat[x]=(word)atol(seclvls[x]);
- }
- for(x=0;x<16;x++) {
- if(flags[x]!='X') {
- user.attr2 &= (~(1<<x));
- }
- else {
- user.attr2 |= (1<<x);
- }
- }
- if(*inout=='X') conf.sysopin=1;
- else conf.sysopin=0;
- if(*debug=='X') conf.debug=1;
- else conf.debug=0;
- if(*trace=='X') conf.trace=1;
- else conf.trace=0;
- if(*swap=='X') conf.swap=1;
- else conf.swap=0;
- user.timepercall=(word)atol(timepercall);
- user.callsperday=(word)atol(callsperday);
- user.totaltime=(word)atol(totaltime);
- user.timetoday=(word)atol(timetoday);
- user.callstoday=(word)atol(callstoday);
- gettime(&starter);
- timelimit=(word)atol(timeleft);
- if(isalpha(*swapdisk)) conf.useswapdisk=*swapdisk;
- user.uktoday=(word)atol(uktoday);
- user.dktoday=(word)atol(dktoday);
- user.violations=(char)atoi(viol);
- user.times=(ulong)atol(times);
- user.posts=(word)atol(posts);
- user.pointid=(word)atol(pointid);
- user.credit=atoi(credit);
- user.comptype=(char)atoi(comptype);
- user.upk=(ulong)atol(upk);
- user.downk=(ulong)atol(downk);
- user.upno=(word)atol(upno);
- user.downno=(word)atol(downno);
- if(*hiok=='X') user.hiok=1;
- else user.hiok=0;
- if(*genflags=='X') user.gen1=1;
- else user.gen1=0;
- if(genflags[1]=='X') user.gen2=1;
- else user.gen2=0;
- if(genflags[2]=='X') user.gen3=1;
- else user.gen3=0;
- if(*cold=='X') user.cold=1;
- else user.cold=0;
- if(*more=='X') user.more=0;
- else user.more=1;
- if(*clr=='X') user.scrnclr=0;
- else user.scrnclr=1;
- if(*graph=='X') user.graphics=1;
- else user.graphics=0;
- if(*fse=='X') user.fullscreen=1;
- else user.fullscreen=0;
- if(*spec=='X') user.commodore=1;
- user.commodore=0;
- if(*expert=='X') user.expert=1;
- else user.expert=0;
- if(*twit=='X') user.twit=1;
- else user.twit=0;
- if(*amnu=='X') user.ansimenus=0;
- else user.ansimenus=1;
- if(*del=='X') user.deleted=1;
- else user.deleted=0;
- if(*ignhr=='X') user.ignorehrs=1;
- else user.ignorehrs=0;
- if(*ignrat=='X') user.ignorerat=1;
- else user.ignorerat=0;
- if(*nokill=='X') user.nokill=1;
- else user.nokill=0;
- if(*arq=='X') user.arq=1;
- else user.arq=0;
- user.width=(char)atoi(width);
- user.length=(char)atoi(length);
-
- left(s,bdate,2);
- user.birthdate.da_mon=atoi(s);
- mid(s,bdate,3,2);
- user.birthdate.da_day=atoi(s);
- right(s,bdate,4);
- user.birthdate.da_year=atoi(s);
-
- { /* Recalc age */
-
- struct date dos_date;
-
- getdate(&dos_date);
- age=((dos_date.da_year-user.birthdate.da_year)-1);
- if (dos_date.da_mon>user.birthdate.da_mon) age++;
- else if ((dos_date.da_mon==user.birthdate.da_mon) && (dos_date.da_day>=user.birthdate.da_day)) age++;
- }
-
- left(s,ldate,2);
- user.lastdate.da_mon=atoi(s);
- mid(s,ldate,3,2);
- user.lastdate.da_day=atoi(s);
- right(s,ldate,4);
- user.lastdate.da_year=atoi(s);
- baud=tempbaud;
- safe=tempsafe;
- cursor(oldx,oldy);
- inwindow &= (~USEREDITOR);
- redraw_stat(NULL);
- chatted=1;
- timer_off=oldtimer;
- }
-
-
-
- void pascal other_options (char type) {
-
- WINDOW *wnd;
- word tempbaud;
- char tempsafe,oldtimer;
- int oldx,oldy;
- int returncode,handle;
-
- if(inwindow & OPTIONS) {
- fputs("\07",stdout);
- return;
- }
- tempbaud=baud;
- tempsafe=safe;
- if(!type) baud=0; /* Allow remote use */
- safe=0;
- oldtimer=timer_off;
- timer_off=1;
- curr_cursor(&oldx,&oldy);
- if(inwindow & OPTIONS) {
- }
- wnd=establish_window(30,7,11,24);
- if(!wnd) {
- error_message(" Can't make window ");
- Outtahere:
- while(!inkey());
- clear_message();
- baud=tempbaud;
- safe=tempsafe;
- cursor(oldx,oldy);
- timer_off=oldtimer;
- return;
- }
- inwindow |= OPTIONS;
- set_title(wnd," [Enter] or [ESCape] ");
- set_colors(wnd,ALL,GREEN,BLACK,BRIGHT);
- set_colors(wnd,ACCENT,WHITE,BLACK,DIM);
- set_border(wnd,2);
- display_window(wnd);
- wcursor(wnd,0,0);
- wprintf(wnd," Shell to DOS\n Chat toggle\n Lockout user\n Hangup\n Toggle SysOp\n");
- wprintf(wnd," Phone # to Phonecan\n Vanish\n Name to Trashcan\n User Editor");
- returncode=get_selection(wnd,1,"SCLHTPVNU");
- switch(returncode) {
- case 1: if(baud) {
- error_message(" Not remote, bud. ");
- break;
- }
- delete_window(wnd);
- wnd=NULL;
- sysop_shell();
- curr_cursor(&oldx,&oldy);
- break;
- case 2: if (!chatting) {
- chatting=1;
- delete_window(wnd);
- wnd=NULL;
- cursor(oldx,oldy);
- baud=tempbaud;
- chat();
- if(!type)baud=0;
- curr_cursor(&oldx,&oldy);
- }
- else chatting=0;
- break;
- case 3: baud=tempbaud;
- user.stat[0]=0;
- delete_window(wnd);
- if (readfile("lockout.xbs",0,0,1)==2) say_prompt(6);
- say_prompt(7);
- fossil(FLUSHOUT,0);
- fossil(DTR,DOWN);
- leaving=1;
- logoff();
- userno=0;
- exit(254);
- case 4: delete_window(wnd);
- baud=tempbaud;
- fossil(DTR,DOWN);
- leaving++;
- logoff();
- baud=0;
- userno=0;
- exit(254);
- case 5: conf.sysopin=1-conf.sysopin;
- (conf.sysopin) ? any_message(" IN ") : any_message(" OUT ");
- sleep(1);
- clear_message();
- break;
- case 6: if ((handle=oopen(searchpath("Phonecan.CTL"),O_RDWR | O_BINARY | O_DENYNONE))==-1)
- if((handle=ccreat("phonecan.ctl",S_IWRITE))>0) {
- lseek(handle,0L,SEEK_END);
- write(handle,user.phone1,strlen(user.phone1));
- write(handle,"\r\n",2);
- if (strcmp(user.phone1,user.phone2)) {
- write(handle,user.phone2,strlen(user.phone2));
- write(handle,"\r\n",2);
- }
- cclose(handle);
- }
- break;
- case 7: delete_window(wnd);
- say_prompt(2);
- exit(254);
- case 8: if ((handle=oopen(searchpath("Trashcan.CTL"),O_RDWR | O_BINARY | O_DENYNONE))==-1)
- if((handle=ccreat("Trashcan.ctl",S_IWRITE))>0) {
- lseek(handle,0L,SEEK_END);
- write(handle,user.name,strlen(user.name));
- write(handle,"\r\n",2);
- if (strcmp(user.name,user.handle)) {
- write(handle,user.handle,strlen(user.handle));
- write(handle,"\r\n",2);
- }
- cclose(handle);
- }
- break;
- case 9: delete_window(wnd);
- wnd=NULL;
- edit_user(type);
- break;
- }
- if(wnd)delete_window(wnd);
- baud=tempbaud;
- safe=tempsafe;
- cursor(oldx,oldy);
- inwindow &= (~OPTIONS);
- redraw_stat(NULL);
- chatted=1;
- timer_off=oldtimer;
- }
-
-