コード例 #1
0
ファイル: NiKFuncs3.c プロジェクト: dblarsson/NiKom
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);
}
コード例 #2
0
ファイル: MenyBrev.c プロジェクト: dblarsson/NiKom
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 */
                }
        }
}
コード例 #3
0
ファイル: NiKFuncs3.c プロジェクト: dblarsson/NiKom
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);
}
コード例 #4
0
ファイル: MenyBrev.c プロジェクト: dblarsson/NiKom
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);
}
コード例 #5
0
ファイル: NiKFuncs3.c プロジェクト: dblarsson/NiKom
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();
}
コード例 #6
0
ファイル: MenyBrev.c プロジェクト: dblarsson/NiKom
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);
}
コード例 #7
0
ファイル: NiKFuncs3.c プロジェクト: dblarsson/NiKom
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;
	}
}
コード例 #8
0
ファイル: NiKRexx.c プロジェクト: dblarsson/NiKom
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;
                }
        }
}
コード例 #9
0
ファイル: NiKFuncs3.c プロジェクト: dblarsson/NiKom
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);
}
コード例 #10
0
ファイル: NiKRexx.c プロジェクト: dblarsson/NiKom
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);
        }
}
コード例 #11
0
ファイル: NiKRexx.c プロジェクト: dblarsson/NiKom
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);
        }
}
コード例 #12
0
ファイル: MenyBrev.c プロジェクト: dblarsson/NiKom
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;
}
コード例 #13
0
ファイル: MenyBrev.c プロジェクト: dblarsson/NiKom
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);
}
コード例 #14
0
ファイル: NiKRexx.c プロジェクト: dblarsson/NiKom
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);
        }
}
コード例 #15
0
ファイル: MenyBrev.c プロジェクト: dblarsson/NiKom
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);
}
コード例 #16
0
ファイル: NiKRexx.c プロジェクト: dblarsson/NiKom
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);
        }
}
コード例 #17
0
ファイル: NiKRexx.c プロジェクト: dblarsson/NiKom
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;
}
コード例 #18
0
ファイル: NiKFuncs3.c プロジェクト: dblarsson/NiKom
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);
}
コード例 #19
0
ファイル: NiKFuncs3.c プロジェクト: dblarsson/NiKom
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));
}
コード例 #20
0
ファイル: NiKFuncs.c プロジェクト: punktniklas/NiKom
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);
}
コード例 #21
0
ファイル: MenyBrev.c プロジェクト: dblarsson/NiKom
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);
}
コード例 #22
0
ファイル: NiKTransfer.c プロジェクト: jayminer81/NiKom
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);
}
コード例 #23
0
ファイル: NiKRexx.c プロジェクト: dblarsson/NiKom
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);
        }
}
コード例 #24
0
ファイル: NiKFuncs3.c プロジェクト: dblarsson/NiKom
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;
	}
}
コード例 #25
0
ファイル: NiKFuncs.c プロジェクト: punktniklas/NiKom
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);
}
コード例 #26
0
ファイル: NiKRexx.c プロジェクト: dblarsson/NiKom
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);
        }
}
コード例 #27
0
ファイル: NiKFuncs3.c プロジェクト: dblarsson/NiKom
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);
}
コード例 #28
0
ファイル: MenyBrev.c プロジェクト: dblarsson/NiKom
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);
        }
}
コード例 #29
0
ファイル: NiKFuncs3.c プロジェクト: dblarsson/NiKom
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);
}
コード例 #30
0
ファイル: NiKFuncs.c プロジェクト: punktniklas/NiKom
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);
}