コード例 #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
ファイル: 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);
}
コード例 #3
0
ファイル: Cmd_Conf.c プロジェクト: punktniklas/NiKom
int saveFootNoteLines(int textId, struct Header *textHeader) {
  int len, lineCnt = 0;
  BPTR fh;
  char filename[30];
  struct EditLine *line;

  NiKForbid();
  sprintf(filename, "NiKom:Moten/Text%d.dat", textId/512);
  if(!(fh = Open(filename, MODE_OLDFILE))) {
    LogEvent(SYSTEM_LOG, ERROR, "Could not open %s to add footnote.", filename);
    DisplayInternalError();
    NiKPermit();
    return 0;
  }
  Seek(fh, 0, OFFSET_END);
  textHeader->footNote = Seek(fh, 0, OFFSET_CURRENT);
  ITER_EL(line, edit_list, line_node, struct EditLine *) {
    len = strlen(line->text);
    line->text[len] = '\n';
    if(Write(fh, line->text, len + 1) != len + 1) {
      LogEvent(SYSTEM_LOG, ERROR, "Error writing to %s when adding footnote.",
               filename);
      DisplayInternalError();
      Close(fh);
      NiKPermit();
      return 0;
    }
    if(++lineCnt >= 255) {
      break;
    }
  }
コード例 #4
0
ファイル: NiKFuncs3.c プロジェクト: dblarsson/NiKom
int radmot(void) {
	int motnr,x,words;
	char lappfile[40];
	BPTR fh;
	struct Mote *motpek;
	if((motnr=parsemot(argument))==-1) {
		puttekn("\r\n\nFinns inget möte som heter så!\r\n\n",-1);
		return(-5);
	}
	if(motnr==-3) {
		puttekn("\r\n\nSkriv: Radera Möte <mötesnamn>\r\n\n",-1);
		return(-5);
	}
	motpek=getmotpek(motnr);
	if(!motpek) printf("ARRRRGH!! Fel på motpek!\n");
	if(!MayAdminConf(motnr, inloggad, &Servermem->inne[nodnr])) {
	   	puttekn("\n\n\rDu har ingen rätt att radera det mötet!\n\r",-1);
	   	return(-5);
	}
	sprintf(outbuffer,"\r\n\nÄr du säker på att du vill radera mötet %s? ",motpek->namn);
	puttekn(outbuffer,-1);
	if(!jaellernej('j','n',2)) {
		puttekn("Nej\n\n\r",-1);
		return(-5);
	}
	puttekn("Ja\r\n\n",-1);
	Remove((struct Node *)motpek);
	motpek->namn[0]=0;
	writemeet(motpek);
	FreeMem(motpek,sizeof(struct Mote));
	sprintf(lappfile,"NiKom:Lappar/%d.motlapp",motnr);
	DeleteFile(lappfile);
	for(x=Servermem->info.lowtext;x<=Servermem->info.hightext;x++) {
		if(Servermem->texts[x%MAXTEXTS]==motnr) Servermem->texts[x%MAXTEXTS]=-1;
	}
	NiKForbid();
	if(!(fh=Open("NiKom:DatoCfg/Textmot.dat",MODE_OLDFILE))) {
		puttekn("\r\n\nKunde inte öppna NiKom:DatoCfg/Textmot.dat\r\n\n",-1);
		NiKPermit();
		return(-5);
	}
	words=Write(fh,(void *)Servermem->texts,2*MAXTEXTS);
	if(words==-1) puttekn("\r\n\nFel vid skrivandet av Textmot.dat\r\n\n",-1);
	Close(fh);
	NiKPermit();
	return(mote2==motnr ? -9 : -5);
}
コード例 #5
0
ファイル: NiKFuncs3.c プロジェクト: dblarsson/NiKom
void writesenaste(void) {
	BPTR fh;
	long tiden;
	time(&tiden);
	Statstr.tid_inloggad=(tiden-logintime)/60;
	Statstr.utloggtid=tiden;
	NiKForbid();
	movmem(&Servermem->senaste,&Servermem->senaste[1],sizeof(struct Inloggning)*(MAXSENASTE-1));
	memcpy(Servermem->senaste,&Statstr,sizeof(struct Inloggning));
	if(!(fh=Open("NiKom:DatoCfg/Senaste.dat",MODE_NEWFILE))) {
		printf("Kunde inte öppna Senaste.dat\n");
		NiKPermit();
		return;
	}
	if(Write(fh,(void *)Servermem->senaste,sizeof(struct Inloggning)*MAXSENASTE)==-1)
		printf("Fel under skrivandet av Senaste.dat\n");
	Close(fh);
	NiKPermit();
}
コード例 #6
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);
}
コード例 #7
0
ファイル: NiKFiles.c プロジェクト: jayminer81/NiKom
int skaparea(void) {
	BPTR fh;
	long tid;
	char tempdir[101];
	int going=TRUE,x,old=Servermem->info.areor,ret=0,y;
	for(x=0;x<MAXAREA;x++) {
		if(!Servermem->areor[x].namn[0]) break;
	}
	if(x==MAXAREA) {
		puttekn("\r\n\nFinns ej plats för fler areor!!\r\n",-1);
		return(0);
	}
	if(x==Servermem->info.areor) Servermem->info.areor++;
	memset(&Servermem->areor[x],0,sizeof(struct Area));
	if(argument[0]==0) {
		puttekn("\r\n\nNamn på arean: ",-1);
		if(getstring(EKO,40,NULL)) { Servermem->info.areor=old; return(1); }
		if(parsearea(inmat)!=-1) { Servermem->info.areor=old; return(0); }
		strcpy(Servermem->areor[x].namn,inmat);
	} else strcpy(Servermem->areor[x].namn,argument);
	time(&tid);
	Servermem->areor[x].skapad_tid=tid;
	Servermem->areor[x].skapad_av=inloggad;
	Servermem->areor[x].filer=0;
	Servermem->areor[x].status=0;
	NewList((struct List *)&Servermem->areor[x].ar_list);
	while(going) {
		puttekn("\r\nTill vilket möte ska arean höra? (<RETURN> för inget) ",-1);
		if(getstring(EKO,40,NULL)) { Servermem->info.areor=old; Servermem->areor[x].namn[0]=0; return(1); }
		if((ret=parsemot(inmat))>=0) {
			Servermem->areor[x].mote=ret;
			sprintf(outbuffer,"\r\nKopplar arean till mötet %s",getmotnamn(ret));
			puttekn(outbuffer,-1);
			going=FALSE;
		} else if(ret==-3) {
			Servermem->areor[x].mote=-1;
			going=FALSE;
		} else puttekn("\r\nFinns inget sådant möte!",-1);
	}
	puttekn("\n\rSka uploads till arean tillåtas? ",-1);
	if(!jaellernej('j','n',1)) {
		Servermem->areor[x].flaggor |= AREA_NOUPLOAD;
		puttekn("Nej",-1);
	} else puttekn("Ja",-1);
	puttekn("\n\rSka downloads från arean tillåtas? ",-1);
	if(!jaellernej('j','n',1)) {
		Servermem->areor[x].flaggor |= AREA_NODOWNLOAD;
		puttekn("Nej",-1);
	} else puttekn("Ja",-1);
	puttekn("\r\nVilka grupper ska ha tillgång till arean? (? för lista)\r\n",-1);
	Servermem->areor[x].grupper=0L;
	if(editgrupp((char *)&Servermem->areor[x].grupper)) { Servermem->info.areor=old; Servermem->areor[x].namn[0]=0; return(1); }
	puttekn("\r\nTill vilka directoryn ska arean höra?",-1);
	for(y=0;y<16;y++) Servermem->areor[x].dir[y][0]=0;
	for(y=0;y<16;y++)
	{
		while(!Servermem->areor[x].dir[y][0])
		{
			sprintf(outbuffer,"\r\nDirectory %d: ",y+1);
			puttekn(outbuffer,-1);
			inmat[0] = 0;
			if(getstring(EKO,39,NULL)) { Servermem->info.areor=old; return(1); }
			if(!inmat[0]) break;
			ret=strlen(inmat);
			if(inmat[ret-1]!='/' && inmat[ret-1]!=':') {
				inmat[ret]='/';
				inmat[ret+1]=0;
			}
			strcpy(Servermem->areor[x].dir[y],inmat);
			strcpy(tempdir, inmat);
			tempdir[strlen(tempdir)-1] = 0;
			if(mkdir(tempdir))
			{
				Servermem->areor[x].dir[y][0] = 0;
				puttekn("\r\nKunde inte skapa biblioteket!", -1);
			}
		}
		if(!inmat[0]) break;
		sprintf(tempdir,"%slongdesc",Servermem->areor[x].dir[y]);
		mkdir(tempdir);
		puttekn("\r\nNycklar till directoryt.\r\n",-1);
		editkey(Servermem->areor[x].nycklar[y]);
	}
	NiKForbid();
	if(!(fh=Open("NiKom:DatoCfg/Areor.dat",MODE_OLDFILE))) {
		puttekn("\r\n\nKunde inte öppna Areor.dat\r\n",-1);
		Servermem->info.areor=old;
		Servermem->areor[x].namn[0]=0;
		NiKPermit();
		return(0);
	}
	if(Write(fh,(void *)Servermem->areor,sizeof(struct Area)*Servermem->info.areor)==-1) {
		puttekn("\r\n\nFel vid skrivandet av Möten.dat\r\n",-1);
		Servermem->info.areor=old;
		Servermem->areor[x].namn[0]=0;
	}
	Close(fh);
	NiKPermit();
	return(0);
}
コード例 #8
0
ファイル: NiKFuncs3.c プロジェクト: dblarsson/NiKom
int dumpatext(void) {
	int tnr,x;
	struct Header dumphead;
	FILE *fpr,*fpd;
	char *dumpfil,foostr[82],filnamn[40];
	if(!isdigit(argument[0])) {
		puttekn("\r\n\nSkriv: Dumpa Text <textnr> [filnamn]\r\n\n",-1);
		return(0);
	}
	tnr=atoi(argument);
	if(tnr<Servermem->info.lowtext || tnr>Servermem->info.hightext) {
		puttekn("\r\n\nTexten finns inte!\r\n",-1);
		return(0);
	}
	if(!MayReadConf(Servermem->texts[tnr%MAXTEXTS], inloggad, &Servermem->inne[nodnr])) {
		puttekn("\r\n\nDu har inte rätt att dumpa den texten!\r\n",-1);
		return(0);
	}
	dumpfil=hittaefter(argument);
	if(!dumpfil[0]) {
		puttekn("\r\n\nTill vilken fil? : ",-1);
		if(getstring(EKO,50,NULL)) return(1);
		if(!inmat[0]) return(0);
		dumpfil=inmat;
	}
	if(readtexthead(tnr,&dumphead)) return(0);
	sprintf(filnamn,"NiKom:Moten/Text%d.dat",dumphead.nummer/512);
	NiKForbid();
	if(!(fpr=fopen(filnamn,"r"))) {
		puttekn("\r\n\nKunde inte öppna Text.dat!\r\n\n",-1);
		NiKPermit();
		return(0);
	}
	if(fseek(fpr,dumphead.textoffset,0)) {
		puttekn("\r\n\nKunde inte söka i Text.dat!\r\n\n",-1);
		fclose(fpr);
		NiKPermit();
		return(0);
	}
	if(!(fpd=fopen(dumpfil,"w"))) {
		sprintf(outbuffer,"\r\n\nKunde inte öppna %s!\r\n",dumpfil);
		puttekn(outbuffer,-1);
		fclose(fpr);
		NiKPermit();
		return(0);
	}
	for(x=0;x<dumphead.rader;x++) {
		if(!(fgets(foostr,81,fpr))) {
			puttekn("\r\n\nFel vid läsandet av Text.dat!\r\n\n",-1);
			break;
		}
		if(fputs(foostr,fpd)) {
			sprintf(outbuffer,"\r\n\nFel vid skrivandet av %s!\r\n",dumpfil);
			puttekn(outbuffer,-1);
			break;
		}
	}
	fclose(fpr);
	fclose(fpd);
	NiKPermit();
	return(0);
}