int writetextmot(int nummer,short variabel) { BPTR fh; Servermem->texts[nummer%MAXTEXTS]=variabel; NiKForbid(); if(!(fh=Open("NiKom:DatoCfg/Textmot.dat",MODE_OLDFILE))) { puttekn("Kunde inte öppna Textmot.dat\n",-1); NiKPermit(); return(1); } if(Seek(fh,(nummer%MAXTEXTS)*2,OFFSET_BEGINNING)==-1) { puttekn("Kunde inte söka i Textmot.dat\n",-1); Close(fh); NiKPermit(); return(1); } if(Write(fh,(void *)&variabel,2)==-1) { puttekn("Fel vid skrivandet av Textmot.dat\n",-1); Close(fh); NiKPermit(); return(1); } Close(fh); NiKPermit(); return(0); }
int mail(void) { BPTR lock; int promret; char filnamn[40]; /* MENYNOD */ if(activemenu->ret!=READBREV) return(-5); /* END MENYNOD */ for(;;) { sprintf(filnamn,"NiKom:Users/%d/%d/%d.letter",inloggad/100,inloggad,Servermem->inne[nodnr].brevpek); if(lock=Lock(filnamn,ACCESS_READ)) UnLock(lock); else return(-5); for(;;) { if((promret=prompt(210))==-1) return(-1); else if(promret==-3) return(-3); else if(promret==-4) puttekn("\r\n\nFinns ingen nästa kommentar!\r\n\n",-1); else if(promret==-8) return(-8); else if(promret==-9) puttekn("\r\n\nDu är redan i brevlådan!\r\n\n",-1); else if(promret>=0) return(promret); /* MENYNOD tillagt: && activemenu->ret==READBREV */ else if(promret==-2 || promret==-6 && activemenu->ret==READBREV) { visabrev(Servermem->inne[nodnr].brevpek++,inloggad); break; } else if(promret==-11) return(-11); /* MENYNOD */ if(activemenu->ret!=READBREV) return(-5); /* END MENYNOD */ } } }
int writetexthead(int nummer,struct Header *head) { BPTR fh; int fil,pos; char filnamn[40]; fil=nummer/512; pos=nummer%512; sprintf(filnamn,"NiKom:Moten/Head%d.dat",fil); NiKForbid(); if(!(fh=Open(filnamn,MODE_OLDFILE))) { puttekn("\r\n\nKunde inte öppna Head.dat!\r\n\n",-1); NiKPermit(); return(1); } if(Seek(fh,pos*sizeof(struct Header),OFFSET_BEGINNING)==-1) { puttekn("\r\n\nKunde inte söka i Head.dat!\r\n\n",-1); Close(fh); NiKPermit(); return(1); } if(Write(fh,(void *)head,sizeof(struct Header))==-1) { puttekn("\r\n\nKunde inte skriva Head.dat!\r\n\n",-1); Close(fh); NiKPermit(); return(1); } Close(fh); NiKPermit(); return(0); }
int updatenextletter(int user) { BPTR fh; long nr; char nrstr[20],filnamn[50]; sprintf(filnamn,"NiKom:Users/%d/%d/.nextletter",user/100,user); if(!(fh=Open(filnamn,MODE_OLDFILE))) { puttekn("\n\n\rKunde inte öppna .nextfile\n\r",-1); return(-1); } memset(nrstr,0,20); if(Read(fh,nrstr,19)==-1) { puttekn("\n\n\rKunde inte läsa .nextfile\n\r",-1); Close(fh); return(-1); } nr=atoi(nrstr); sprintf(nrstr,"%d",nr+1); if(Seek(fh,0,OFFSET_BEGINNING)==-1) { puttekn("\n\n\rKunde inte söka i .nextfile\n\r",-1); Close(fh); return(-1); } if(Write(fh,nrstr,strlen(nrstr))==-1) { puttekn("\n\n\rKunde inte skriva .nextfile\n\r",-1); Close(fh); return(-1); } Close(fh); return(nr); }
int skrivlapp(void) { int editret; struct EditLine *el; FILE *fp; char filnamn[100]; sprintf(filnamn,"NiKom:Users/%d/%d/Lapp",inloggad/100,inloggad); puttekn("\r\n\nGår in i editorn.\r\n",-1); if((editret=edittext(filnamn))==1) return(1); else if(editret==2) return(0); if(!(fp=fopen(filnamn,"w"))) { puttekn("\r\nKunde inte spara lappen\r\n\n",-1); return(0); } for(el=(struct EditLine *)edit_list.mlh_Head;el->line_node.mln_Succ;el=(struct EditLine *)el->line_node.mln_Succ) { if(fputs(el->text,fp)) { sprintf(outbuffer,"\r\n\nFel vid skrivandet av %s!\r\n",filnamn); puttekn(outbuffer,-1); fclose(fp); return(0); } fputc('\n',fp); } fclose(fp); freeeditlist(); }
int skickabrev(void) { int pers,editret; char *adr; if(!(adr=strchr(argument,'@'))) { if((pers=parsenamn(argument))==-1) { puttekn("\r\n\nFinns ingen som heter så eller har det numret\r\n\n",-1); return(0); } else if(pers==-3) { puttekn("\r\n\nSkriv: Brev <användare>\r\n\n",-1); return(0); } nu_skrivs=BREV; } else { nu_skrivs=BREV_FIDO; *adr='\0'; adr++; if(!getzone(adr) || !getnet(adr)) { puttekn("\n\n\rSkriv: Brev <användare>@<zon>:<nät>/<nod>[.<point>]\n\r",-1); return(0); } } if(nu_skrivs==BREV) editret=initbrevheader(pers); else if(nu_skrivs==BREV_FIDO) return(fido_brev(argument,adr,NULL)); else return(0); if(editret==1) return(1); if(editret==2) return(0); if((editret=edittext(NULL))==1) return(1); if(!editret) sparabrev(); return(0); }
void listasenaste(void) { int x,nummer,alla=TRUE,cnt=0,antal=MAXSENASTE; struct tm *ts; if(argument[0]=='-') { antal=atoi(&argument[1]); argument=hittaefter(argument); } if((nummer=parsenamn(argument))==-1) { puttekn("\r\n\nFinns ingen som heter så eller har det numret!\r\n",-1); return; } else if(nummer==-3) alla=TRUE; else alla=FALSE; puttekn("\r\n\n Namn Utloggad Tid Läst Skr Ul Dl\r\n\n",-1); for(x=0;x<MAXSENASTE;x++) { if(!Servermem->senaste[x].utloggtid || (!alla && nummer!=Servermem->senaste[x].anv)) continue; if(!userexists(Servermem->senaste[x].anv)) continue; cnt++; ts=localtime(&Servermem->senaste[x].utloggtid); sprintf(outbuffer,"%-35s %02d/%02d %02d:%02d %3dmin %4d %3d %2d %2d\r\n", getusername(Servermem->senaste[x].anv),ts->tm_mday,ts->tm_mon+1,ts->tm_hour,ts->tm_min, Servermem->senaste[x].tid_inloggad,Servermem->senaste[x].read, Servermem->senaste[x].write,Servermem->senaste[x].ul, Servermem->senaste[x].dl); if(puttekn(outbuffer,-1)) return; if(cnt>=antal) return; } }
void kommando(struct RexxMsg *tempmess) { int parseret; if((parseret=parse(hittaefter(tempmess->rm_Args[0])))==-1) { sprintf(outbuffer,"\r\nFelaktigt kommando: %s\r\n",hittaefter(tempmess->rm_Args[0])); puttekn(outbuffer,-1); tempmess->rm_Result1=0; tempmess->rm_Result2=NULL; } else if(parseret==-3) { tempmess->rm_Result1=0; tempmess->rm_Result2=NULL; } else if(parseret==-4) { sprintf(outbuffer,"Du har ingen rätt att utföra kommandot: %s",hittaefter(tempmess->rm_Args[0])); puttekn(outbuffer,-1); tempmess->rm_Result1=0; tempmess->rm_Result2=NULL; } else { if((sendrexxrc=dokmd(parseret,0))==-8) { tempmess->rm_Result1=100; tempmess->rm_Result2=NULL; } else { tempmess->rm_Result1=0; tempmess->rm_Result2=NULL; } } }
void rensatexter(void) { int antal=0; if(!(antal=atoi(argument))) { puttekn("\r\n\nSkriv : Rensa texter <antal texter>\r\n\n",-1); return; } if(antal%512) { puttekn("\r\n\nAntalet måste vara en jämn multipel av 512!\r\n\n",-1); return; } sendservermess(RADERATEXTER,antal); }
void rxedit(struct RexxMsg *mess) { int editret,cnt,len; char *filnamn,retstr[2]; BPTR fh; struct EditLine *el; nu_skrivs=ANNAT; filnamn=hittaefter(mess->rm_Args[0]); if(!filnamn[0]) { mess->rm_Result1=5; mess->rm_Result2=NULL; return; } /* puttekn("\r\n\n",-1); Detta måste nu fixas i ARexx-programmet istället */ if((editret=edittext(filnamn))==1) { mess->rm_Result1=100; mess->rm_Result2=NULL; return; } else if(editret==0) { if(!(fh=Open(filnamn,MODE_NEWFILE))) { sprintf(outbuffer,"\r\n\nKunde inte öppna %s för skrivning!\r\n"); puttekn(outbuffer,-1); mess->rm_Result1=5; mess->rm_Result2=NULL; return; } cnt=0; for(el=(struct EditLine *)edit_list.mlh_Head;el->line_node.mln_Succ;el=(struct EditLine *)el->line_node.mln_Succ) { len=strlen(el->text); el->text[len]='\n'; if(Write(fh,el->text,len+1)==-1) { sprintf(outbuffer,"\r\n\nFel vid skrivandet av %s!\r\n",filnamn); puttekn(outbuffer,-1); Close(fh); mess->rm_Result1=5; mess->rm_Result2=NULL; return; } cnt++; } Close(fh); freeeditlist(); } mess->rm_Result1=0; retstr[0]= editret ? '0' : '1'; retstr[1]=0; if(mess->rm_Action & 1L<<RXFB_RESULT) { if(!(mess->rm_Result2=(long)CreateArgstring(retstr,1))) puttekn("\r\n\nKunde inte allokera en Argstring!\r\n\n",-1); } }
void rexxsendstring(struct RexxMsg *mess) { char *str,ret,retstr[2]; str=hittaefter(mess->rm_Args[0]); ret=puttekn(str,-1); if(ret) retstr[0]='1'; else retstr[0]='0'; retstr[1]=0; mess->rm_Result1=0; if(mess->rm_Action & 1L<<RXFB_RESULT) { if(!(mess->rm_Result2=(long)CreateArgstring(retstr,1))) puttekn("\r\n\nKunde inte allokera en Argstring!\r\n\n",-1); } }
void rensabrev(void) { BPTR fh; int first,next,antal,x; char filnamn[50],nrbuf[20]; first=getfirstletter(inloggad); next=getnextletter(inloggad); if(!argument[0]) { puttekn("\n\n\rSkriv: Rensa Brev <antal brev att radera>\n\r",-1); return; } antal=atoi(argument); if(antal <= 0) { puttekn("\n\n\rDu kan bara rensa ett positivt antal brev.\n\r",-1); return; } if(first+antal>next) { sprintf(outbuffer,"\n\n\rDu har bara %d brev!\n\r",next-first); puttekn(outbuffer,-1); return; } sprintf(outbuffer,"\n\n\rLägsta brev: %d Högsta brev: %d Antal att radera: %d\n\r",first,next-1,antal); puttekn(outbuffer,-1); puttekn("Rensar...\n\r",-1); for(x=first;x<first+antal;x++) { if(!(x%10)) { sprintf(outbuffer,"%d\r",x); puttekn(outbuffer,-1); } sprintf(filnamn,"NiKom:Users/%d/%d/%d.letter",inloggad/100,inloggad,x); if(!DeleteFile(filnamn)) { sprintf(outbuffer,"\n\rKunde inte radera %s\n\r",filnamn); puttekn(outbuffer,-1); } } sprintf(filnamn,"NiKom:Users/%d/%d/.firstletter",inloggad/100,inloggad); if(!(fh=Open(filnamn,MODE_NEWFILE))) { sprintf(outbuffer,"\n\rKunde inte öppna %s\n\r",filnamn); puttekn(outbuffer,-1); return; } sprintf(nrbuf,"%d",first+antal); if(Write(fh,nrbuf,strlen(nrbuf))==-1) { sprintf(outbuffer,"\n\rKunde inte skriva %s\n\r",filnamn); puttekn(outbuffer,-1); } Close(fh); sprintf(outbuffer,"\n\r%d brev raderade.\n\r",antal); puttekn(outbuffer,-1); if((first+antal) > Servermem->inne[nodnr].brevpek) Servermem->inne[nodnr].brevpek=first+antal; }
int brev_kommentera(void) { BPTR fh; int nummer,editret,anv; char *brevpers,filnamn[50]; if(argument[0]) { nummer=atoi(argument); brevpers=hittaefter(argument); if(!brevpers[0]) anv=inloggad; else { anv=parsenamn(brevpers); if(anv==-1) { puttekn("\n\n\rAnvändaren finns inte!\n\r",-1); return(0); } } sprintf(filnamn,"NiKom:Users/%d/%d/%d.letter",anv/100,anv,nummer); if(!(fh=Open(filnamn,MODE_OLDFILE))) { puttekn("\r\n\nBrevet finns inte!\r\n\n",-1); return(0); } readletterheader(fh,&brevread); Close(fh); if(!strncmp(brevread.systemid,"Fido",4)) { if(anv!=inloggad) { puttekn("\n\n\rDu har inte rätt att kommentera det brevet\n\r",-1); return(0); } } else { if(anv!=inloggad && inloggad!=atoi(brevread.from) && Servermem->inne[nodnr].status<Servermem->cfg.st.brev) { puttekn("\r\n\nDu har inte skrivit det brevet!\r\n\n",-1); return(0); } } senast_text_typ=BREV; senast_brev_nr=nummer; senast_brev_anv=anv; } if(!strncmp(brevread.systemid,"Fido",4)) { nu_skrivs=BREV_FIDO; return(fido_brev(NULL,NULL,NULL)); } else { nu_skrivs=BREV; editret=initbrevheader(BREVKOM); } if(editret==1) return(1); if(editret==2) return(0); if((editret=edittext(NULL))==1) return(1); else if(!editret) sparabrev(); return(0); }
void rexxyesno(struct RexxMsg *mess) { char foo[2],ja,nej,def,*pek; pek=hittaefter(mess->rm_Args[0]); if(!pek[0]) { ja='j'; nej='n'; def=1; } else { ja=pek[0]; pek=hittaefter(pek); if(!pek[0]) { nej='n'; def=1; } else { nej=pek[0]; pek=hittaefter(pek); if(!pek[0]) def=1; else def=pek[0]-'0'; } } foo[0]=jaellernej(ja,nej,def)+'0'; foo[1]=0; if(carrierdropped()) { mess->rm_Result1=100; return; } mess->rm_Result1=0; if(mess->rm_Action & 1L<<RXFB_RESULT) { if(!(mess->rm_Result2=(long)CreateArgstring(foo,1))) puttekn("\r\n\nKunde inte allokera en Argstring!\r\n\n",-1); } }
void savefidocopy(struct FidoText *ft,int anv) { struct FidoLine *fl; BPTR fh; int nummer; char *foo,buffer[100]; nummer=updatenextletter(anv); if(nummer==-1) { return; } sprintf(buffer,"NiKom:Users/%d/%d/%d.letter",anv/100,anv,nummer); if(!(fh=Open(buffer,MODE_NEWFILE))) { return; } FPuts(fh,"System-ID: Fido\n"); sprintf(buffer,"From: %s (%d:%d/%d.%d)\n",ft->fromuser,ft->fromzone,ft->fromnet,ft->fromnode,ft->frompoint); FPuts(fh,buffer); sprintf(buffer,"To: %s (%d:%d/%d.%d)\n",ft->touser,ft->tozone,ft->tonet,ft->tonode,ft->topoint); FPuts(fh,buffer); sprintf(buffer,"Date: %s\n",ft->date); FPuts(fh,buffer); foo = hittaefter(ft->subject); if(ft->subject[0] == 0 || (ft->subject[0] == ' ' && foo[0] == 0)) strcpy(buffer,"Subject: -\n"); else sprintf(buffer,"Subject: %s\n",ft->subject); FPuts(fh,buffer); for(fl=(struct FidoLine *)ft->text.mlh_Head;fl->line_node.mln_Succ;fl=(struct FidoLine *)fl->line_node.mln_Succ) { FPuts(fh,fl->text); FPutC(fh,'\n'); } Close(fh); sprintf(outbuffer,"\n\n\rBrevet fick nummer %d i din brevlåda\r\n\n",nummer); puttekn(outbuffer,-1); }
void rexxrecbinfile(struct RexxMsg *mess) { char buf[1024]; struct TransferFiles *tf; Servermem->action[nodnr] = UPLOAD; Servermem->varmote[nodnr] = 0; Servermem->vilkastr[nodnr] = NULL; if(recbinfile(hittaefter(mess->rm_Args[0]))) strcpy(buf,"0"); else { buf[0] = NULL; for(tf=(struct TransferFiles *)tf_list.mlh_Head;tf->node.mln_Succ;tf=(struct TransferFiles *)tf->node.mln_Succ) { strcat(buf,FilePart(tf->Filnamn)); strcat(buf,(char *)" "); } buf[strlen(buf)-1] = NULL; } while(tf=(struct TransferFiles *)RemHead((struct List *)&tf_list)) FreeMem(tf,sizeof(struct TransferFiles)); if(mess->rm_Action & 1L<<RXFB_RESULT) { if(!(mess->rm_Result2=(long)CreateArgstring(buf,strlen(buf)))) puttekn("\r\n\nKunde inte allokera en Argstring!\r\n\n",-1); } }
void rxchglatestinfo(struct RexxMsg *mess) { char *what,retstr[15]; int ammount,retval; what = hittaefter(mess->rm_Args[0]); ammount = atoi(hittaefter(what)); switch(what[0]) { case 'r' : case 'R' : retval = Statstr.read += ammount; break; case 'w' : case 'W' : retval = Statstr.write += ammount; break; case 'd' : case 'D' : retval = Statstr.dl += ammount; break; case 'u' : case 'U' : retval = Statstr.ul += ammount; break; default: retval = -1; } sprintf(retstr,"%d",retval); if(mess->rm_Action & 1L<<RXFB_RESULT) { if(!(mess->rm_Result2=(long)CreateArgstring(retstr,strlen(retstr)))) puttekn("\r\n\nKunde inte allokera en Argstring!\r\n\n",-1); } mess->rm_Result1=0; }
int endast(void) { int antal,foo=TRUE; int motnr, nyttmote = 1; struct Mote *motpek = NULL; if(!isdigit(argument[0])) { puttekn("\r\n\nSkriv: Endast <antal texter> [mötesnamn]\r\n",-1); return(-5); } antal=atoi(argument); argument=hittaefter(argument); if(argument[0]) { if(matchar(argument,Servermem->cfg.brevnamn)) motnr = -1; else { motnr=parsemot(argument); if(motnr==-3) { puttekn("\r\n\nSkriv: Endast <antal texter> [mötesnamn]\r\n\n",-1); return(-5); } if(motnr==-1) { puttekn("\r\n\nFinns inget sådant möte!\r\n\n", -1); return(-5); } } nyttmote = 0; } else motnr = mote2; if(motnr==-1) { Servermem->inne[nodnr].brevpek=getnextletter(inloggad)-antal; foo=getfirstletter(inloggad); if(foo>Servermem->inne[nodnr].brevpek) Servermem->inne[nodnr].brevpek=foo; } else { motpek = getmotpek(motnr); if(motpek->type==MOTE_ORGINAL) org_endast(motnr,antal); else if(motpek->type==MOTE_FIDO) fido_endast(motpek,antal); } if(nyttmote) return(-11); else return(-5); }
int getfirstletter(int user) { BPTR fh; char nrstr[20],filnamn[50]; sprintf(filnamn,"NiKom:Users/%d/%d/.firstletter",user/100,user); if(!(fh=Open(filnamn,MODE_OLDFILE))) { puttekn("\n\n\rKunde inte öppna .firstfile\n\r",-1); return(-1); } memset(nrstr,0,20); if(Read(fh,nrstr,19)==-1) { puttekn("\n\n\rKunde inte läsa .firstfile\n\r",-1); Close(fh); return(-1); } Close(fh); return(atoi(nrstr)); }
void atersekom(void) { struct Mote *motpek; if(senast_text_typ==BREV) { if(!brevread.reply[0]) puttekn("\r\n\nTexten är inte någon kommentar!\r\n\n",-1); else visabrev(atoi(hittaefter(brevread.reply)),atoi(brevread.reply)); } else if(senast_text_typ==TEXT) { motpek=getmotpek(senast_text_mote); if(motpek->type==MOTE_ORGINAL) { if(readhead.kom_till_nr==-1) puttekn("\r\n\nTexten är inte någon kommentar!\r\n\n",-1); else if(readhead.kom_till_nr<Servermem->info.lowtext) puttekn("\r\n\nTexten finns inte!\r\n\n",-1); else org_visatext(readhead.kom_till_nr, FALSE); } else if(motpek->type==MOTE_FIDO) puttekn("\n\n\rÅterse Kommenterade kan inte användas på Fido-texter\n\r",-1); } else puttekn("\r\n\nDu har inte läst någon text ännu!\r\n\n",-1); }
void brev_lasa(int tnr) { int brevanv; char *arg2; arg2=hittaefter(argument); if(arg2[0]) { brevanv=parsenamn(arg2); if(brevanv==-1) { puttekn("\n\n\rFinns ingen sådan användare!\n\r",-1); return; } } else brevanv=inloggad; if(tnr<getfirstletter(brevanv) || tnr>=getnextletter(brevanv)) { puttekn("\r\n\nBrevet finns inte!\r\n",-1); return; } visabrev(tnr,brevanv); }
long __saveds __regargs nik_update(struct XPR_UPDATE *update) { struct TransferFiles *tf, *tmptf; int equalulfiles = 0; if(update->xpru_updatemask & XPRU_FILENAME) { sprintf(outbuffer,"\r\nFör över %s\r\n",update->xpru_filename); conputtekn(outbuffer,-1); strcpy(xprfilnamn,update->xpru_filename); if(Servermem->action[nodnr]==UPLOAD || Servermem->action[nodnr]==DOWNLOAD) Servermem->vilkastr[nodnr] = FilePart(xprfilnamn); } if(update->xpru_updatemask & XPRU_FILESIZE) { sprintf(outbuffer,"Filens längd %d\r\n",update->xpru_filesize); conputtekn(outbuffer,-1); filesize=update->xpru_filesize; } if(update->xpru_updatemask & XPRU_MSG) { conputtekn(update->xpru_msg,-1); conputtekn("\r\n",-1); } if(update->xpru_updatemask & XPRU_ERRORMSG) { conputtekn(update->xpru_errormsg,-1); conputtekn("\r\n",-1); } if(update->xpru_updatemask & XPRU_DATARATE) cps=update->xpru_datarate; if(update->xpru_updatemask & XPRU_BYTES) { sprintf(outbuffer,"\rBytes: %d (%d cps)",update->xpru_bytes,update->xpru_datarate); conputtekn(outbuffer,-1); countbytes=update->xpru_bytes; if(countbytes == filesize && Servermem->action[nodnr]==UPLOAD) { tmptf = (struct TransferFiles *)tf_list.mlh_Head; while(tmptf) { if(!stricmp(tmptf->Filnamn,xprfilnamn)) equalulfiles = 1; tmptf = (struct TransferFiles *)tmptf->node.mln_Succ; } if(!equalulfiles) { if(!(tf=(struct TransferFiles *)AllocMem(sizeof(struct TransferFiles),MEMF_CLEAR))) { puttekn("Kunde inte allokera en TransferFiles-struktur\n\r",-1); } else { if(Servermem->cfg.logmask & LOG_RECFILE) { LogEvent(USAGE_LOG, INFO, "Tog emot filen %s från %s", xprfilnamn, getusername(inloggad)); } strcpy(tf->Filnamn,xprfilnamn); tf->cps = cps; AddTail((struct List *)&tf_list,(struct Node *)tf); ulfiles++; } } } } return(0L); }
void whichmeet(struct RexxMsg *mess) { char buf[5]; sprintf(buf,"%d",mote2); mess->rm_Result1=0; if(mess->rm_Action & 1L<<RXFB_RESULT) { if(!(mess->rm_Result2=(long)CreateArgstring(buf,strlen(buf)))) puttekn("\r\n\nKunde inte allokera en Argstring!\r\n\n",-1); } }
void listaarende(void) { char *nextarg=argument,namn[50],kom[10]; int x,dir=-1,from=-1,baratexter=FALSE; struct Mote *motpek; struct Header lahead; struct tm *ts; if(mote2==-1) { sprintf(outbuffer,"\n\n\rAnvänd 'Lista Brev' i %s\n\r",Servermem->cfg.brevnamn); puttekn(outbuffer,-1); return; } while(nextarg[0]) { if(nextarg[0]=='-') { if(nextarg[1]=='t' || nextarg[1]=='T') baratexter=TRUE; else if(nextarg[1]=='f' || nextarg[1]=='F') { dir=1; if(from<0) from=-2; } } else if(isdigit(nextarg[0])) from=atoi(nextarg); nextarg=hittaefter(nextarg); } motpek=getmotpek(mote2); if(motpek->type==MOTE_FIDO) { fidolistaarende(motpek,dir); return; } puttekn("\r\n\nNamn Text Kom Datum Ärende",-1); puttekn("\r\n-------------------------------------------------------------------------\r\n",-1); if(from==-1) from=Servermem->info.hightext; else if(from==-2) from=Servermem->info.lowtext; for(x=from;x>=Servermem->info.lowtext && x<=Servermem->info.hightext;x+=dir) { if(Servermem->texts[x%MAXTEXTS]!=mote2) continue; if(readtexthead(x,&lahead)) return; if(lahead.kom_till_nr!=-1 && baratexter) continue; strcpy(namn,getusername(lahead.person)); lahead.arende[22]=0; ts=localtime(&lahead.tid); if(lahead.kom_till_nr==-1) strcpy(kom," -"); else sprintf(kom,"%d",lahead.kom_till_nr); sprintf(outbuffer,"%-34s%6d %6s %02d%02d%02d %s\r\n",namn,lahead.nummer,kom,ts->tm_year,ts->tm_mon+1,ts->tm_mday,lahead.arende); if(puttekn(outbuffer,-1)) return; } }
void igen(void) { struct Mote *motpek; if(senast_text_typ==BREV) visabrev(senast_brev_nr,senast_brev_anv); else if(senast_text_typ==TEXT) { motpek=getmotpek(senast_text_mote); if(motpek->type==MOTE_ORGINAL) org_visatext(senast_text_nr, FALSE); else if(motpek->type==MOTE_FIDO) fido_visatext(senast_text_nr,motpek); } else puttekn("\r\n\nDu har inte läst någon text ännu!\r\n\n",-1); }
void rexxchkbuffer(struct RexxMsg *mess) { char foo[5]; sprintf(foo,"%d",checkcharbuffer()); mess->rm_Result1=0; if(mess->rm_Action & 1L<<RXFB_RESULT) { if(!(mess->rm_Result2=(long)CreateArgstring(foo,strlen(foo)))) puttekn("\r\n\nKunde inte allokera en Argstring!\r\n\n",-1); } }
void visainfo(void) { struct AnchorPath *anchor; char filnamn[100],pattern[100]; if(!argument[0]) { sendfile("NiKom:Texter/Info.txt"); return; } if(anchor = AllocMem(sizeof(struct AnchorPath),MEMF_CLEAR)) { sprintf(pattern,"NiKom:Texter/%s#?.txt",argument); if(MatchFirst(pattern,anchor)) { puttekn("\r\n\nFinns ingen sådan fil!\r\n",-1); return; } sprintf(filnamn,"NiKom:Texter/%s",anchor->ap_Info.fib_FileName); MatchEnd(anchor); FreeMem(anchor,sizeof(struct AnchorPath)); sendfile(filnamn); } else puttekn("\n\n\rKunde inte allokera en Anchorpath\n\r",-1); }
void varmail(void) { int antal; /* MENYNOD */ varmailstatus=TRUE; if(activemenu->ret!=READBREV) return; /* END MENYNOD */ antal=countmail(inloggad,Servermem->inne[nodnr].brevpek); sprintf(outbuffer,"\r\n\nDu befinner dig i %s.\r\n",Servermem->cfg.brevnamn); puttekn(outbuffer,-1); if(!antal) puttekn("Du har inga olästa brev.\r\n\n",-1); else if(antal==1) puttekn("Du har 1 oläst brev.\r\n\n",-1); else { sprintf(outbuffer,"Du har %d olästa brev.\r\n\n",antal); puttekn(outbuffer,-1); } }
int writeuser(int nummer,struct User *user) { BPTR fh; char filnamn[40]; sprintf(filnamn,"NiKom:Users/%d/%d/Data",nummer/100,nummer); NiKForbid(); if(!(fh=Open(filnamn,MODE_OLDFILE))) { puttekn("\r\n\nKunde inte öppna Users.dat!\r\n\n",-1); NiKPermit(); return(1); } if(Write(fh,(void *)user,sizeof(struct User))==-1) { puttekn("\r\n\nKunde inte skriva Users.dat!\r\n\n",-1); Close(fh); NiKPermit(); return(1); } Close(fh); NiKPermit(); return(0); }
int skriv(void) { struct Mote *motpek; if(mote2==-1) { sprintf(outbuffer,"\r\n\nAnvänd kommandot 'Brev' i %s.\r\n",Servermem->cfg.brevnamn); puttekn(outbuffer,-1); return(0); } motpek=getmotpek(mote2); if(!motpek) { puttekn("\n\n\rHmm.. Mötet du befinner dig i finns inte.\n\r",-1); return(0); } if(!MayWriteConf(motpek->nummer, inloggad, &Servermem->inne[nodnr])) { puttekn("\r\n\nDu får inte skriva i det här mötet!\r\n\n",-1); return(0); } if(motpek->type==MOTE_ORGINAL) return(org_skriv()); else if(motpek->type==MOTE_FIDO) return(fido_skriv(EJKOM,0)); return(0); }