home *** CD-ROM | disk | FTP | other *** search
- /************************************************/
- /***/
- #define REVISION "1.2" /***/
- #define REVDATE "21.Jul.1996" /***/
- #define PROGNAME "Conference Editor" /***/
- #define AUTHOR "Joe Cool" /***/
- /***/
- /************************************************/
-
- #include <exec/types.h>
- #include <exec/ports.h>
- #include <exec/memory.h>
- #include <dos/dos.h>
- #include <clib/exec_protos.h>
- #include <clib/dos_protos.h>
- #include <clib/alib_protos.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include "aedoor.h"
- static const char VersionTag[] = "\0$VER: "PROGNAME" "REVISION" ("REVDATE")";
- #define ws WriteStr
-
-
- #define CLEAR 0
- #define PROCESSING 1
- #define FAILED 2
- #define PASSED 3
- #define NOTPROCESSED 4
- #define CONFDAT "bbs:Conferences.dat"
-
-
- void Start(int node);
- void lowerstring(char *s);
- void upperstring(char *s);
- void createpath(char *s);
- void editpaths(char *filename,char **paths);
- void editarea(void);
- BOOL getconfigbool(char **main_search,char *lookfor,BOOL std);
- char *getconfig(char **main_search,char *lookfor);
-
- struct ConfCfg
- {
- int ConfNum;
- char ConfName[100];
- char ConfLoc[255];
- char MsgLoc[255];
- char Password[30];
- BOOL SentBy;
- BOOL MsgShared;
- };
-
-
-
-
-
- void main(int argc, char *argv[])
- {
-
- int Node=0;
- if(argc<2)
- {
- printf("Sorry, %s must be called from S!X or /X\n",argv[0]);
- exit(0);
- }
- Node=atoi(argv[1]);
- Register(Node);
-
- XIM_Msg->Command=140;
- CheckMessage();
- SetTaskPri(FindTask(0),atol(XIM_Msg->String));
-
- Start(Node);
- ShutDown();
-
- }
-
-
-
- void Start(Node)
- {
- struct ConfCfg *conf;
- char buffer[255],selectstr[10]="",selectstr2[10]="",delselectstr[10]="",
- **paths=NULL,ch='\0',**main_config=NULL;
- ULONG pos=0,max=0,select=0,select2=0,delselect=0,ndirs=0,len=0;
- BPTR fh=NULL,writefh=NULL,lock=NULL;
- BOOL quit=FALSE,extra=FALSE,donotread=FALSE,success=FALSE,freedown=FALSE,
- twocol;
-
- SendStrDataCmd(177,"Conference Edit",0);
- conf=(struct ConfCfg *) malloc (sizeof(struct ConfCfg));
-
-
- lock = GetProgramDir();
- NameFromLock(lock, buffer, 220);
- if (buffer[strlen(buffer)-1]==':') strcat(buffer,"confed.config");
- else strcat(buffer,"/confed.config");
-
- fh=Open(buffer,MODE_OLDFILE);
- if (fh)
- {
- for (pos=0;FGets(fh,buffer,254);pos++)
- {
- main_config=(char **) realloc(main_config,(pos+1)*sizeof(char *));
- main_config[pos]=NULL;
- len=strlen(buffer);
- if (buffer[len-1]=='\n') buffer[len-1]='\0';
- upperstring(buffer);
- main_config[pos]=(char *) malloc (len+1);
- if (main_config[pos]!=NULL)
- strcpy(main_config[pos],buffer);
- }
- Close(fh);
- main_config=(char **) realloc(main_config,(pos+1)*sizeof(char *));
- main_config[pos]=NULL;
- }
-
- twocol =getconfigbool(main_config,"TWO_COLOUMNS", FALSE);
-
- do
- {
-
- ws("c",1);
- ws("ConfEd V1.2 ©1996 by Joe Cool",1);
- ws("",1);
-
- fh=Open(CONFDAT,MODE_OLDFILE);
- if (!fh) fh=Open(buffer,MODE_NEWFILE);
- pos=0;
- while (Read(fh,conf,sizeof(struct ConfCfg)))
- {
- pos++;
- if (conf->ConfName[0]!=0)
- sprintf(buffer," [%2d] %-30.30s",pos,conf->ConfName);
- else
- sprintf(buffer," [%2d] %-30.30s",pos,"<not defined!>");
- if (twocol)
- {
- if ( (pos+1)/2 != pos/2)
- {
- ws(buffer,0);
- }
- else
- {
- ws(buffer,1);
- }
- }
- else
- {
- ws(buffer,1);
- }
- }
- if ( (pos+1)/2 != pos/2) ws("",1);
-
- ws("",1);
- ws(" [ A] AreaNames",1);
- ws(" [ N] New Conference",1);
- ws(" [ D] Del Conference",1);
- if (fh) Close(fh);
- max=pos;
-
- sprintf(buffer,"%d",max);
- ws("",1);
- SendStrDataCmd(JH_PM,"Conference: ",strlen(buffer));
- if (XIM_Msg->Data==-1) return;
- strcpy(selectstr,XIM_Msg->String);
- lowerstring(selectstr);
- select=atoi(selectstr);
- donotread=FALSE;
-
-
- if (select==0)
- {
- switch (selectstr[0])
- {
- case 'n' :
- {
- if (max<25)
- {
- select=max+1;
- donotread=TRUE;
- strcpy(conf->ConfName,"");
- strcpy(conf->ConfLoc,"");
- strcpy(conf->MsgLoc,"");
- strcpy(conf->Password,"");
- conf->SentBy=FALSE;
- conf->MsgShared=FALSE;
- extra=TRUE;
- }
- else
- {
- select=max+1;
- Hotkey("Not more than 25 Confs Possible!");
- }
- }
- break;
- case 'd' :
- {
- SendStrDataCmd(JH_PM,"Deleting Conference: ",strlen(buffer));
- if (XIM_Msg->Data==-1) return;
- delselect=atoi(XIM_Msg->String);
- if (delselect<=max && delselect>0)
- {
- SendStrDataCmd(JH_PM,"Are U sure (y/N): ",3);
- strcpy(delselectstr,XIM_Msg->String);
- lowerstring(delselectstr);
- if (delselectstr[0]=='y')
- {
- fh=Open(CONFDAT,MODE_OLDFILE);
- writefh=Open(CONFDAT".temp",MODE_NEWFILE);
- if (fh && writefh)
- {
- ws("Deleting Conference!!!",1);
- success=FALSE;
- for (pos=0;pos<max;pos++)
- {
- Read(fh,conf,sizeof(struct ConfCfg));
- if (pos!=delselect-1) Write(writefh,conf,sizeof(struct ConfCfg));
- success=TRUE;
- }
- }
- if (fh) Close(fh);
- if (writefh) Close(writefh);
- if (success)
- {
- DeleteFile(CONFDAT);
- Rename(CONFDAT".temp",CONFDAT);
- }
- }
- }
- select=max+1;
-
- }
- break;
- case 'a' : {
- editarea();
-
- select=max+1;
- }
- }
- }
-
-
- if ((select>0) && (select<=max) || extra)
- {
- extra=FALSE;
- ndirs=0;
- freedown=FALSE;
-
-
-
-
-
- if (!donotread)
- {
- fh=Open(CONFDAT,MODE_OLDFILE);
- if (fh)
- {
- Seek(fh,(select-1)*sizeof(struct ConfCfg) , OFFSET_BEGINNING );
- Read(fh,conf,sizeof(struct ConfCfg));
- Close(fh);
- sprintf(buffer,"%sNdirs",conf->ConfLoc);
- fh=Open(buffer,MODE_OLDFILE);
- if (fh)
- {
- FGets(fh,buffer,20);
- Close(fh);
- ndirs=atoi(buffer);
- }
- sprintf(buffer,"%sFreedownloads",conf->ConfLoc);
- fh=Open(buffer,MODE_OLDFILE);
- if (fh)
- {
- Close(fh);
- freedown=TRUE;
- }
-
- }
- }
- quit=FALSE;
- do
- {
- ws("c",1);
- sprintf(buffer,"Conference Number: %d",select);
- ws(buffer,1);
- ws("",1);
- if (conf->ConfName[0]!=0)
- sprintf(buffer," [ 1] Conf Name : %s",conf->ConfName);
- else
- sprintf(buffer," [ 1] Conf Name : <Please Edit>");
- ws(buffer,1);
-
- if (conf->ConfLoc[0]!=0)
- sprintf(buffer," [ 2] Conf Locatio: %s",conf->ConfLoc);
- else
- sprintf(buffer," [ 2] Conf Locatio: <Please Edit>");
- ws(buffer,1);
-
- if (conf->MsgLoc[0]!=0)
- sprintf(buffer," [ 3] Conf MsgLoca: %s",conf->MsgLoc);
- else
- sprintf(buffer," [ 3] Conf MsgLoca: <Default>");
-
- ws(buffer,1);
- if (conf->Password[0]!=0)
- sprintf(buffer," [ 4] Conf Passwor: %s",conf->Password);
- else
- sprintf(buffer," [ 4] Conf Passwor: <None>");
- ws(buffer,1);
- if (conf->SentBy) ws(" [ 5] Conf Sentby : Yes",1); else ws(" [ 5] Conf Sentby : No",1);
- if (conf->MsgShared) ws(" [ 6] Shared Msgb : Yes",1); else ws(" [ 6] Shared Msgb : No",1);
-
- ws("",1);
- sprintf(buffer," [ 7] NDirs : %d",ndirs);
- ws(buffer,1);
- ws(" [ 8] Ulpaths",1);
- ws(" [ 9] Paths",1);
-
- if (freedown) ws(" [10] Free Down : Yes",1); else ws(" [10] Free Down : No",1);
-
-
- ws("",1);
- ws(" [ C] Create Paths&Files",1);
- ws(" [ S] Save & Quit",1);
- ws(" [ Q] Quit without saving",1);
- ws("",1);
- SendStrDataCmd(JH_PM,"Select: ",strlen(buffer));
- if (XIM_Msg->Data==-1) return;
- strcpy(selectstr2,XIM_Msg->String);
- lowerstring(selectstr2);
- select2=atoi(selectstr2);
- switch (select2)
- {
- case 0 :
- {
- switch (selectstr2[0])
- {
- case 'q' : {
- quit=TRUE;
- }
- break;
- case 's' : {
- fh=Open(CONFDAT,MODE_READWRITE);
- if (fh)
- {
-
- Seek(fh,(select-1)*sizeof(struct ConfCfg) , OFFSET_BEGINNING );
- Write(fh,conf,sizeof(struct ConfCfg));
- Close(fh);
- }
-
-
-
- quit=TRUE;
- }
- break;
- case 'c' : {
- ws ("Create all Paths (y/N) ?",0);
- ch=Hotkey("");
- ch=tolower(ch);
- sprintf(buffer,"%c",ch);
- ws(buffer,1);
- if (conf->ConfLoc[0]==0)
- ws("Please edit the Conference Location!",1);
- else
- if (ch=='y')
- {
- sprintf(buffer,"%s",conf->ConfLoc);
- if (buffer[strlen(buffer)-1]=='/') buffer[strlen(buffer)-1]=0;
- createpath(buffer);
-
- sprintf(buffer,"%sHold",conf->ConfLoc);
- createpath(buffer);
-
- sprintf(buffer,"%sLCFiles",conf->ConfLoc);
- createpath(buffer);
-
- if (conf->MsgLoc[0]==0)
- {
- sprintf(buffer,"%sMsgBase",conf->ConfLoc);
- createpath(buffer);
- }
- else
- {
- sprintf(buffer,"%s",conf->MsgLoc);
- createpath(buffer);
- }
-
- sprintf(buffer,"%sPartUpload",conf->ConfLoc);
- createpath(buffer);
-
- for (pos=1;pos<=ndirs;pos++)
- {
- sprintf(buffer,"%sdir%d",conf->ConfLoc,pos);
- fh=Open(buffer,MODE_OLDFILE);
- if (fh)
- {
- Close(fh);
- ws("Exists : ",0);
- ws(buffer,1);
- }
- else
- {
- fh=Open(buffer,MODE_NEWFILE);
- Close(fh);
- ws("Creating: ",0);
- ws(buffer,1);
- }
- }
- Hotkey("<Press any key!>");
- }
- }
- break;
- }
- }
- break;
-
-
- case 1 : {
- ws("Conf Name: ",0);
- GetStr(99,conf->ConfName);
- strcpy(conf->ConfName,XIM_Msg->String);
- }
- break;
- case 2 : {
- ws("Conf Location: ",0);
- GetStr(254,conf->ConfLoc);
- strcpy(conf->ConfLoc,XIM_Msg->String);
- }
- break;
- case 3 : {
- ws("Conf MsgLocation: ",0);
- GetStr(254,conf->MsgLoc);
- strcpy(conf->MsgLoc,XIM_Msg->String);
- }
- break;
- case 4 : {
- ws("Conf Password: ",0);
- GetStr(29,conf->Password);
- strcpy(conf->Password,XIM_Msg->String);
- }
- break;
- case 5 : {
- if (conf->SentBy) conf->SentBy=FALSE; else conf->SentBy=TRUE;
- }
- break;
- case 6 : {
- if (conf->MsgShared) conf->MsgShared=FALSE; else conf->MsgShared=TRUE;
- }
- break;
- case 7 : {
- if (conf->ConfLoc[0]==0)
- {
- ws("Please edit the Conference Location!",1);
- Hotkey("<Press any key!>");
- }
- else
- {
- sprintf(buffer,"%s",conf->ConfLoc);
- fh=Lock(buffer,ACCESS_READ);
- if (fh)
- {
- UnLock(fh);
- sprintf(buffer,"%sNdirs",conf->ConfLoc);
- fh=Open(buffer,MODE_NEWFILE);
- if (fh)
- {
- sprintf(buffer,"%d",ndirs);
- ws("NDirs: ",0);
- GetStr(2,buffer);
- ndirs=atoi(XIM_Msg->String);
- sprintf(buffer,"%d\n",ndirs);
- FPuts(fh,buffer);
- Close(fh);
- }
- }
- else
- {
- ws("Please create Paths first!",1);
- Hotkey("<Press any key!>");
- }
- }
- }
- break;
- case 8 : {
- if (conf->ConfLoc[0]==0)
- {
- ws("Please edit the Conference Location!",1);
- Hotkey("<Press any key!>");
- }
- else
- {
- sprintf(buffer,"%s",conf->ConfLoc);
- fh=Lock(buffer,ACCESS_READ);
- if (fh)
- {
- UnLock(fh);
- if (conf->ConfLoc[0]!=0)
- {
- paths=(char **) realloc(paths,sizeof(char *));
- paths[0]=NULL;
- sprintf(buffer,"%sUlpaths",conf->ConfLoc);
- fh=Open(buffer,MODE_OLDFILE);
- if (fh)
- {
-
- for (pos=0;FGets(fh,buffer,255);pos++)
- {
- paths=(char **) realloc(paths,(pos+1)*sizeof(char *));
- paths[pos]=NULL;
- if(buffer[strlen(buffer)-1]=='\n') buffer[strlen(buffer)-1]='\0';
- len=strlen(buffer);
- paths[pos]=(char *) malloc (len+1);
- if (paths[pos]!=NULL)
- strcpy(paths[pos],buffer);
- }
- Close(fh);
- paths=(char **) realloc(paths,(pos+1)*sizeof(char *));
- paths[pos]=NULL;
- }
- sprintf(buffer,"%sUlPaths",conf->ConfLoc);
- editpaths(buffer,paths);
- for (pos=0;paths[pos]!=NULL;pos++)
- free(paths[pos]);
- free (paths);
- paths=NULL;
- }
- }
- else
- {
- ws("Please create Paths first!",1);
- Hotkey("<Press any key!>");
- }
- }
- }
- break;
- case 9 : {
- if (conf->ConfLoc[0]==0)
- {
- ws("Please edit the Conference Location!",1);
- Hotkey("<Press any key!>");
- }
- else
- {
- sprintf(buffer,"%s",conf->ConfLoc);
- fh=Lock(buffer,ACCESS_READ);
- if (fh)
- {
- UnLock(fh);
- if (conf->ConfLoc[0]!=0)
- {
- paths=(char **) realloc(paths,sizeof(char *));
- paths[0]=NULL;
- sprintf(buffer,"%sPaths",conf->ConfLoc);
- fh=Open(buffer,MODE_OLDFILE);
- if (fh)
- {
-
- for (pos=0;FGets(fh,buffer,255);pos++)
- {
- paths=(char **) realloc(paths,(pos+1)*sizeof(char *));
- paths[pos]=NULL;
- if(buffer[strlen(buffer)-1]=='\n') buffer[strlen(buffer)-1]='\0';
- len=strlen(buffer);
- paths[pos]=(char *) malloc (len+1);
- if (paths[pos]!=NULL)
- strcpy(paths[pos],buffer);
- }
- Close(fh);
- paths=(char **) realloc(paths,(pos+1)*sizeof(char *));
- paths[pos]=NULL;
- }
-
- sprintf(buffer,"%sPaths",conf->ConfLoc);
- editpaths(buffer,paths);
- for (pos=0;paths[pos]!=NULL;pos++)
- free(paths[pos]);
- free (paths);
- paths=NULL;
- }
- }
- else
- {
- ws("Please create Paths first!",1);
- Hotkey("<Press any key!>");
- }
- }
- }
- break;
- case 10 : {
- if (conf->ConfLoc[0]==0)
- {
- ws("Please edit the Conference Location!",1);
- Hotkey("<Press any key!>");
- }
- else
- {
- sprintf(buffer,"%s",conf->ConfLoc);
- fh=Lock(buffer,ACCESS_READ);
- if (fh)
- {
- UnLock(fh);
- if (freedown) freedown=FALSE; else freedown=TRUE;
- if (freedown)
- {
- sprintf(buffer,"%sFreedownloads",conf->ConfLoc);
- fh=Open(buffer,MODE_NEWFILE);
- if (fh) Close(fh);
- }
- else
- {
- sprintf(buffer,"%sFreedownloads",conf->ConfLoc);
- DeleteFile(buffer);
- }
- }
- else
- {
- ws("Please create Paths first!",1);
- Hotkey("<Press any key!>");
- }
- }
- }
- break;
-
-
- }
-
- } while (!quit);
-
- }
- } while (select!=0);
-
- free(conf);
- }
-
- void lowerstring(char *s)
- {
- while((*s=tolower(*s)) != '\0') s++;
- }
- void upperstring(char *s)
- {
- while((*s=toupper(*s)) != '\0') s++;
- }
- void createpath(char *s)
- {
- BPTR fh=NULL;
-
- fh=Lock(s,ACCESS_READ);
- if (fh)
- {
- ws("Exists : ",0);
- UnLock(fh);
- }
- else
- {
- ws("Creating: ",0);
- fh=CreateDir(s);
- UnLock(fh);
- }
- ws (s,1);
- }
-
- void editpaths(char *filename,char **paths)
- {
- ULONG pos=0,pos2=0,select=0,select2=0,select3=0,max=0;
- char buffer[255],selectstr[3]="",**paths2=NULL,*p=NULL;
- BOOL quit=FALSE;
- BPTR fh=NULL;
-
- do
- {
- sprintf(buffer,"cEditing: %s",filename);
- ws(buffer,1);
- ws("",1);
-
- for (pos=1;paths[pos-1]!=NULL;pos++)
- {
- sprintf(buffer," [%2d] %s",pos,paths[pos-1]);
- ws(buffer,1);
- }
- max=pos;
-
- ws("",1);
- ws(" [ A] Add path",1);
- ws(" [ C] Change paths",1);
- ws(" [ D] Delete path",1);
- ws(" [ #] Edit path",1);
- ws(" [ S] Save paths and quit",1);
- ws(" [ Q] Quit without save",1);
- ws("",1);
- SendStrDataCmd(JH_PM,"Choose: ",2);
- if (XIM_Msg->Data==-1) return;
- strcpy(selectstr,XIM_Msg->String);
- lowerstring(selectstr);
- select=atoi(selectstr);
- switch (select)
- {
- case 0 : {
-
-
- switch (selectstr[0])
- {
- case 'a' : {
- strcpy(buffer,"");
- ws("Path: ",0);
- GetStr(200,buffer);
- strcpy(buffer,XIM_Msg->String);
- if (strlen(buffer)!=0)
- {
- paths=(char **) realloc(paths,(max+3)*sizeof(char *));
- paths[max-1]=NULL;
- paths[max-1]=(char *) realloc(paths[max-1],(strlen(buffer)+1)*sizeof(char));
- strcpy(paths[max-1],buffer);
- paths[max]=NULL;
- max++;
- }
- select=max+1;
- }
- break;
- case 'c' : {
- select2=select3=0;
- ws("Change: ",0);
- strcpy(buffer,"");
- GetStr(3,buffer);
- select2=atoi(XIM_Msg->String);
- strcpy(buffer,"");
- ws("With : ",0);
- GetStr(3,buffer);
- select3=atoi(XIM_Msg->String);
- if(select2>0 && select3>0 && select2<max && select3<max && select2!=select3)
- {
- p=paths[select2-1];
- paths[select2-1]=paths[select3-1];
- paths[select3-1]=p;
- p=NULL;
- }
- select=max+1;
- }
- break;
- case 'd' : {
- SendStrDataCmd(JH_PM,"Delete which path: ",2);
- if (XIM_Msg->Data==-1) return;
- select2=atoi(XIM_Msg->String);
- if ((select2>0) && (select2<max))
- {
-
- SendStrDataCmd(JH_PM,"Are U sure (y/N): ",3);
- lowerstring(XIM_Msg->String);
- if (XIM_Msg->String[0]=='y')
- {
-
-
- paths2=(char **) realloc(paths2,max*sizeof(char *));
- if (paths2)
- {
- for (pos=0;paths[pos]!=NULL;pos++)
- {
- if (pos!=(select2-1))
- {
- paths2[pos2++]=paths[pos];
- }
- }
- paths2[pos2]=NULL;
- pos2=0;
- free(paths);
- paths=paths2;
- paths2=NULL;
- max--;
- }
- }
- }
-
- select=max+1;
- }
- break;
- case 's' : {
- fh=Open(filename,MODE_NEWFILE);
- if (fh)
- {
- for (pos=0;paths[pos]!=NULL;pos++)
- {
- sprintf(buffer,"%s\n",paths[pos]);
- FPuts(fh,buffer);
- }
- Close(fh);
- }
- select=max+1;
- quit=TRUE;
- }
- break;
- case 'q' : {
- quit=TRUE;
- }
- break;
-
- }
- }
- break;
- default : {
- if ((select>0) && (select<max))
- {
- strcpy(buffer,paths[select-1]);
- ws("Path: ",0);
- GetStr(200,buffer);
- strcpy(buffer,XIM_Msg->String);
- if (strlen(buffer)==0)
- {
- paths2=(char **) realloc(paths2,max*sizeof(char *));
- if (paths2)
- {
- for (pos=0;paths[pos]!=NULL;pos++)
- {
- if (pos!=(select-1))
- {
- paths2[pos2++]=paths[pos];
- }
- }
- paths2[pos2]=NULL;
- pos2=0;
- free(paths);
- paths=paths2;
- paths2=NULL;
- max--;
- }
- }
- else
- {
- if (strcmp(buffer,paths[select-1]))
- {
- paths[select-1]=(char *) realloc(paths[select-1],(strlen(buffer)+1)*sizeof(char ));
- strcpy(paths[select-1],buffer);
- }
- }
- }
-
-
-
- }
-
-
-
-
-
-
-
-
- }
- } while (!quit);
-
- }
-
- void editarea(void)
- {
- ULONG pos=0,select=0,select2=0,max=0,len=0;
- char selectstr[3]="",buffer[255],buffer2[255],buffer3[30],**area=NULL;
- BPTR fh=NULL;
- struct FileInfoBlock *fib=NULL;
-
-
- do
- {
- area=(char **) realloc(area,sizeof(char *));
- fh=Lock("bbs:AreaNames/",ACCESS_READ);
- if (fh) UnLock(fh);
- else
- {
- fh=CreateDir("bbs:AreaNames");
- UnLock(fh);
- }
- fib = AllocDosObject(DOS_FIB, NULL);
- fh=Lock("bbs:AreaNames",ACCESS_READ);
- if (fh)
- {
- Examine(fh,fib);
- pos=0;
- while (ExNext(fh,fib))
- {
- strcpy(buffer,fib->fib_FileName);
- area=(char **) realloc(area,(pos+1)*sizeof(char *));
- area[pos]=NULL;
- if(buffer[strlen(buffer)-1]=='\n') buffer[strlen(buffer)-1]='\0';
- len=strlen(buffer);
- area[pos]=(char *) malloc (len+1);
- if (area[pos]!=NULL)
- strcpy(area[pos],buffer);
- pos++;
- }
- area=(char **) realloc(area,(pos+1)*sizeof(char *));
- area[pos]=NULL;
- }
- UnLock(fh);
- FreeDosObject(DOS_FIB,fib);
-
- ws ("c",1);
- ws (" Areanames:",1);
- ws ("",1);
-
- for (pos=0;area[pos];pos++)
- {
- sprintf(buffer," [%2d] %s",pos+1,area[pos]);
- ws(buffer,1);
- }
- ws("",1);
- ws(" [ A] Add AreaName",1);
- ws(" [ D] Delete AreaName",1);
- ws(" [ R] Rename AreaName",1);
-
- max=pos;
- ws("",1);
- SendStrDataCmd(JH_PM,"Choose: ",2);
- if (XIM_Msg->Data==-1) return;
- strcpy(selectstr,XIM_Msg->String);
- lowerstring(selectstr);
- select=atoi(selectstr);
- switch (select)
- {
- case 0 : {
-
-
- switch (selectstr[0])
- {
- case 'a' : {
- SendStrDataCmd(JH_PM,"New AreaName: ",9);
- if (XIM_Msg->Data==-1) return;
- strcpy(buffer3,XIM_Msg->String);
- if (buffer3[0]!='\0')
- {
- sprintf(buffer,"bbs:AreaNames/%s",buffer3);
- fh=Open(buffer,MODE_OLDFILE);
- if (fh)
- {
- ws("Already exists!",1);
- }
- else
- {
- ws(" 1111111111222222",1);
- ws(" 1234567890123456789012345",1);
- ws("Conference axx: ",0);
- GetStr(25,"");
- strcpy(buffer2,XIM_Msg->String);
-
- sprintf(buffer,"bbs:AreaNames/%s",buffer3);
- fh=Open(buffer,MODE_NEWFILE);
- if (fh)
- {
- sprintf(buffer,"%s\n",buffer2);
- FPuts(fh,buffer);
- Close(fh);
- }
- }
- }
- select=max+1;
- }
- break;
- case 'd' : {
- SendStrDataCmd(JH_PM,"Delete which AreaName: ",2);
- if (XIM_Msg->Data==-1) return;
- select2=atoi(XIM_Msg->String);
- if ((select2>0) && (select2<=max))
- {
-
- SendStrDataCmd(JH_PM,"Are U sure (y/N): ",3);
- lowerstring(XIM_Msg->String);
- if (XIM_Msg->String[0]=='y')
- {
- sprintf(buffer,"bbs:Areanames/%s",area[select2-1]);
- DeleteFile(buffer);
- }
- }
- select=max+1;
- }
- break;
- case 'r' : {
- SendStrDataCmd(JH_PM,"Rename which AreaName: ",2);
- if (XIM_Msg->Data==-1) return;
- select2=atoi(XIM_Msg->String);
- if ((select2>0) && (select2<=max))
- {
- ws("New name: ",0);
- GetStr(9,area[select2-1]);
- strcpy(buffer2,XIM_Msg->String);
- }
-
- sprintf(buffer3,"bbs:AreaNames/%s",area[select2-1]);
- sprintf(buffer,"bbs:AreaNames/%s",buffer2);
- Rename(buffer3,buffer);
-
- select=max+1;
- }
-
- break;
-
- }
-
-
-
-
-
-
- }
- break;
-
-
- default : {
- if ((select>0) && (select<=max))
- {
- sprintf(buffer,"bbs:AreaNames/%s",area[select-1]);
- fh=Open(buffer,MODE_OLDFILE);
- if (fh)
- {
- FGets(fh,buffer,50);
- Close(fh);
- }
- if (buffer[strlen(buffer)-1]=='\n') buffer[strlen(buffer)-1]='\0';
- ws(" 1111111111222222",1);
- ws(" 1234567890123456789012345",1);
- ws("Conference axx: ",0);
- GetStr(25,buffer);
- strcpy(buffer2,XIM_Msg->String);
-
- sprintf(buffer,"bbs:AreaNames/%s",area[select-1]);
- fh=Open(buffer,MODE_OLDFILE);
- if (fh)
- {
- sprintf(buffer,"%s\n",buffer2);
- FPuts(fh,buffer);
- Close(fh);
- }
- }
- }
- break;
- }
-
- for (pos=0;area[pos];pos++)
- if (area[pos]) free(area[pos]);
- if (area) free (area);
-
- } while (select!=0);
-
-
-
- }
-
-
- BOOL getconfigbool(char **main_search,char *lookfor,BOOL std)
- {
- char *p=NULL;
-
- p=getconfig(main_search,lookfor);
- if (p)
- {
- upperstring(p);
- if (p[0]=='Y')
- return(TRUE);
- else
- return(FALSE);
- }
- else return(std);
- }
-
- char *getconfig(char **main_search,char *lookfor)
- {
- char *p=NULL, *q=NULL;
- ULONG pos=0;
-
- for (pos=0;main_search[pos]!=NULL && (!p);pos++)
- {
- q=main_search[pos];
- for (;!isalpha(*q);q++);
- if (strncmp(q,lookfor,strlen(lookfor))==0)
- {
- p=q+strlen(lookfor);
- for (;!isalpha(*p);p++);
- }
- }
- return p;
-
- }
-