int personlig(void) { int nummer,editret; struct Mote *motpek; if(argument[0]) { if(mote2==-1) { puttekn("\r\n\nBrev kommenterar du som vanligt med 'kommentera'.\r\n\n",-1); return(0); } nummer=atoi(argument); motpek=getmotpek(mote2); if(motpek->type == MOTE_ORGINAL) { if(nummer<Servermem->info.lowtext || nummer>Servermem->info.hightext) { puttekn("\r\n\nTexten finns inte!\r\n\n",-1); return(0); } if(!MayBeMemberConf(Servermem->texts[nummer%MAXTEXTS], inloggad, &Servermem->inne[nodnr])) { puttekn("\r\n\nDu har inte rätt att kommentera den texten!\r\n\n",-1); return(0); } if(readtexthead(nummer,&readhead)) return(0); senast_text_mote = Servermem->texts[nummer%MAXTEXTS]; } else if(motpek->type == MOTE_FIDO) { if(nummer<motpek->lowtext || nummer>motpek->texter) { puttekn("\r\n\nTexten finns inte!\r\n\n",-1); return(0); } senast_text_mote = motpek->nummer; } senast_text_typ=TEXT; senast_text_nr = nummer; } else { if(senast_text_typ==BREV) { puttekn("\r\n\nBrev kommenterar du som vanligt med 'kommentera'.\r\n\n",-1); return(0); } if(!(motpek=getmotpek(senast_text_mote))) { puttekn("\n\n\rHmm.. Mötet där texten finns existerar inte..\n\r",-1); return(0); } } if(motpek->type == MOTE_FIDO) { nu_skrivs = BREV_FIDO; return(fido_brev(NULL,NULL,motpek)); } nu_skrivs=BREV; initpersheader(); if((editret=edittext(NULL))==1) return(1); if(!editret) sparabrev(); return(0); }
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 radtext(void) { int nummer; struct Header radhead; struct Mote *motpek; nummer = atoi(argument); motpek=getmotpek(Servermem->texts[nummer%MAXTEXTS]); if(motpek->type != MOTE_ORGINAL) { puttekn("\n\n\rDu kan bara radera texter i interna möten.\n\n\r",-1); return; } if(nummer < Servermem->info.lowtext || nummer > Servermem->info.hightext) { puttekn("\r\n\nTexten finns inte!\r\n\n",-1); return; } if(readtexthead(nummer,&radhead)) return; if(radhead.person!=inloggad && !MayAdminConf(motpek->nummer, inloggad, &Servermem->inne[nodnr])) { puttekn("\r\n\nDu kan bara radera texter av dig själv!\r\n\n",-1); return; } writetextmot(nummer,-1); }
void Cmd_FootNote(void) { int textId, confId, editRet; struct Header textHeader; if(argument[0] == '\0') { SendString("\n\n\rSkriv: Fotnot <text nummer>\n\r"); return; } textId = atoi(argument); confId = GetConferenceForText(textId); if(confId == -1) { SendString("\n\n\rFinns ingen sådan text.\n\r"); return; } if(readtexthead(textId,&textHeader)) { return; } if(textHeader.person != inloggad && !MayAdminConf(confId, inloggad, &Servermem->inne[nodnr])) { SendString("\r\n\nDu kan bara lägga till fotnoter på dina egna texter.\r\n\n"); return; } if(textHeader.footNote != 0) { SendString("\n\n\rTexten har redan en fotnot.\n\r"); return; } SendString("\n\n\rFotnot till text %d av %s\n\r", textId, getusername(textHeader.person)); if((editRet = edittext(NULL)) != 0) { return; } if(saveFootNoteLines(textId, &textHeader)) { writetexthead(textId, &textHeader); } freeeditlist(); }
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); }