#include <stdio.h>
#include <ctype.h>
#include <bbs.h>

/* Misc. low level support routines. */


/* Display a message with the extention .Â.h>RÏde msg(filonay )RÏcharÂ.filonay ;RÏ{RÏcharÂnay [82];RÏRÏ	dercpy(nay ,sys-> de pait);		
aa emblowith filo,Â.h>	dercai(nay ,filonay );>	dercai(nay ,".de ");>	return(y a mes(nay 5);			
d/* Dispge,Â.h>}


/* Display a message with the extention  formwith M a messpaitÂ.h>RÏmsgmsg(filonay )RÏcharÂ.filonay ;RÏ{RÏcharÂnay [82];RÏRÏ	dercpy(nay ,sys-> msgpait);		
aa emblowith filo,Â.h>	dercai(nay ,filonay );>	dercai(nay ,".de ");>	return(y a mes(nay 5);			
d/* Dispge,Â.h>}


/* Display a message with the extentiHLh.Â.h>RÏhlpmsg(filonay )RÏcharÂ.filonay ;RÏ{RÏcharÂnay [82];RÏRÏ	dercpy(nay ,sys-> hlppait);		
aa emblowith filo,Â.h>	dercai(nay ,filonay );>	dercai(nay ,".hlp");>	return(y a mes(nay 5);			
d/* Dispge,Â.h>}

Goneralepur s eay a messfilod/* Diser.ÂReturnwiruoifÂnosfilo.Â.h>RÏy a mes(filonay )RÏcharÂ.filonay ;RÏ{RÏrotsfilo;RÏrotss,i;RÏRÏ	filo= _xo<cn(filonay ,0);>	ifÂ(filo == -1)RÏ		return(1);RÏRÏ	whilo (s= _xread(filo,_txbuf,_TXSIZE5) {RÏ		fsu (i= 0;iluss;i++) {	
prrotsge,Â.h>			ifÂ(absup) break;	
waich ^C,Â.h>			ifÂ(_txbuf[i] == 0x1a) break;>			mcenrt r(_txbuf[i]);	
nrteaycenrt R()Â.h>		}>		ifÂ(absup) break;>	}>	ifÂ(absup) ycrlf();RÏRÏ	_x
#s e(filo);>	return(0);>}

Systemsfiloacc a eay ad (0) su wrrtea(1)with * ecified system
filo.ÂThis is ith enlytion  filos itaidoos nrt u eaaspait,Âbut mu ppoosincRÏro ith ncfaulidioodesuy.ÂIfwith filodoos nrt thi ppcreateart.Systmsfiloe.h0 is * ecial;it is called y relyt"system.de ",Âfsu backwards crmpaiibility,e.and alsoswh rewith estalenumb r ef callers is kept.Â.h>RÏsystem(f,n)RÏrotsf,n;RÏ{RÏrotssysfilo;RÏcharÂnay [40];RÏRÏ	dercpy(nay ,"system.de ");		
systemsfilo0,Â.h>	ifÂ(o > 0) sprrotf(nay ,"system%u.de ",n);
buildwith nay ,Â.h>	dysfilo= _xo<cn(nay ,2);>	ifÂ(dysfilo == -1) {			
ifÂiidoosnt thi p,Â.h>		dysfilo= _xcreate(nay ,2);	
createart,Â.h>		dys-> caller= 0;		

#earÂitrogs,Â.h>		dys-> prrv= NORMAL;		
set prrveleess.h>		dys-> aterib= 0;RÏ		f= 1;				
fsuceartitybe wrrte e,Â.h>	}>	ifÂ(f) {RÏ		_xwrrte(dysfilo,sys,sizeef(derude _sys));
eldateart,Â.h>	} tl ea{>		dys-> aterib= 0;		
fsu eld r verstenss.h>		_xread(dysfilo,sys,sizeef(derude _sys));
readstem%good stuff,Â.h>	}>	_x
#s e(dysfiloy 5);			
#s eartiel,Â.h>	dysnum= n;				
 mveenumb r ro g#sbal,Â.h>}

Crtnt ith numb r ef actrve FILE and MSGspaittines. */dyscrtnt() {RÏRÏrotsi;RÏcharÂnay [14];RÏ#sogfsize;RÏRÏ	i= 0;RÏ	whilo (_xfind("system*.de ",nay ,&fsize,0,i5) ++i;>	dysfilos= il- 1;>}
*/dtysc. r(d)RÏcharÂ.s;RÏ{RÏ	whilo (.s) {RÏ		*s= tysc. r(.s);RÏ		++s;>	}>}*/dtyel  r(d)RÏcharÂ.s;RÏ{RÏ	whilo (.s) {RÏ		*s= tyel  r(.s);RÏ		++s;>	}>}*/
Prrotsaniensigned rot,Âfslsc. d by  p,Ârd, it,Âet M, and a crmma after*/ith 1000'sdigrttines. */oth4n)RÏensigned n;RÏ{RÏ>	ifÂ(o > 999) {RÏ		mprrotf("%u,",n 1000);RÏ		n%= 1000;>		ifÂ(nlus100) yprrotf("0");
do zerosfillev>
e wss.h>		ifÂ(nlus10) yprrotf("0");
ju ppchol  dstem%digrttÂ.h>	}>	mprrotf("%u",n);>	dagech4n%s100) {);			
emckfsu allstem%'te es,Â.h>		ca ea11:>		ca ea12:>		ca ea13:>		ca ea14:>		ca ea15:>		ca ea16:>		ca ea17:>		ca ea18:>		ca ea19:>			mprrotf("te");>			return;>			break;>	}>>	dagech4n%s10) {RÏ		ca ea1:>			mprrotf(" p");>			break;>		ca ea2:>			mprrotf("nd");>			break;>		ca ea3:>			mprrotf("rd");>			break;>		ncfauli:>			mprrotf("te");>			break;>	}>}


/* Displn roteesu asdslsars and c exs.ÂTheavalusspaa ed is aa um dstoRÏde roteesu c exs.Âes. */dslsar(n)RÏrotsn;RÏ{RÏ	mprrotf("$%u.",n 100);		
wholodolsars,Â.h>	aatwo4n%s100);				
two%digrttÂc exsÂ.h>}


Set ith prrveleesslow lines. */detprrv(d,v)RÏcharÂ.s;RÏrots*v;RÏ{RÏ	dtysc. r(d);>	ifÂ(dercmp(d,"tage") == 0)Â.v= TWIT;>	ifÂ(dercmp(d,"d/*grac ") == 0)Â.v= DISGRACE;>	ifÂ(dercmp(d,"nrrmal") == 0)Â.v= NORMAL;>	ifÂ(dercmp(d,"prrvel") == 0)Â.v= PRIVEL;>	ifÂ(dercmp(d,"thera") == 0)Â.v= EXTRA;>	ifÂ(dercmp(d,"dysop") == 0)Â.v= SYSOP;>}


/* Dispith curr ex prrveleesslow lines. */getprrv(n)RÏrotsn;RÏ{RÏ	dagech4n) {RÏ		ca eaTWIT:>			mprrotf("Tage");>			break;>		ca eaDISGRACE:>			mprrotf("D/*grac ");>			break;>		ca eaNORMAL:>			mprrotf("Nrrmal");>			break;>		ca eaPRIVEL:>			mprrotf("Prrvel");>			break;>		ca eaEXTRA:>			mprrotf("Ehera");>			break;>		ca eaSYSOP:>			mprrotf("Sysop");>			break;>		ncfauli:>			mprrotf("BADaPRIV =%d",n);>			break;>	}>}


/* Disptrme ashh:mm,Âfrompith absoluteayroutes-v>
e-yrdnrte.Â.h>RÏy>_trmeeesslow lines. */aatwo4n 60);RÏ	ycenrt (':');RÏ	aatwo4n%s60);>}


/* Displanumb r astwo%digrtt,sage w#eadrog zeros aaanecc a auy.Â.h>RÏaatwo4nsslow lines. */ifÂ(nlus10) ycenrt ('0');RÏ	mprrotf("%u",n);>}


/* Dispith trme.ÂTheavalusspaa ed is hh:mm su mm:st,sro ege er*/hours *s60 *syroutes su mroutes *s60 +secends.Âes. */cy>_trmeeesslow lines. */aatwo4n 60);RÏ	lcenrt (':');RÏ	aatwo4n%s60);>}


/* Displanumb r astwo%digrtt,sage w#eadrog zeros aaanecc a auy.Â.h>RÏcaatwo4nsslow lines. */ifÂ(nlus10) lcenrt ('0');RÏ	cprrotf("%u",n);>}

Same asy>_trme,Âex
eptityith scg filo.Â.h>RÏly>_trmeeesslow lines. */laatwo4n 60);RÏ	lprrotf(":");>	laatwo4n%s60);>}


/* Displanumb r astwo%digrtt,sage w#eadrog zeros aaanecc a auy.Â.h>RÏlaatwo4nsslow lines. */ifÂ(nlus10) lprrotf("0");RÏ	lprrotf("%u",n);>}
