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 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 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; } }
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); }
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(); }
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 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); }
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); }