home *** CD-ROM | disk | FTP | other *** search
- PROGRAM Flusher;
-
- { Kleiner Quickhack zum Flushen von
- Commodities
-
- (C) 1995 by Björn Schotte
-
- Weiterentwicklung/Neuschreibung des Programms
- FlushCX von Jan Stötzer!
-
- Grund: Vermisste ein File, in dem Commodities
- eingetragen werden, die NICHT gekillt werden
- sollen.
-
-
- ----------------- Disclaimer ----------------
- This Program is PUBLIC DOMAIN. Do with it
- whatever you want to do...
-
- The Author is not responsible for any damages
- this program makes on your computer!!
- ---------------------------------------------
-
- Address:
-
- (Please include return postage!)
-
- Björn Schotte
- Am Burkardstuhl 45
- D-97267 Himmelstadt
- GERMANY
-
- EMail:
-
- bombersoft@bomber.mayn.sub.de }
-
- {$opt q}
- USES ExecSupport;
-
- {$incl "commodities.lib",
- "dos.lib"}
-
- CONST
- rev = "$VER: Flusher V1.00 (25.05.1995)";
- MAXNAMES = 30;
- ExceptFile = "ENVARC:Flusher.dat";
-
- TYPE p_BrokerCopy = ^BrokerCopy;
- BrokerCopy = RECORD
- bc_Node : Node;
- bc_Name : string[CBD_NAMELEN];
- bc_Title: string[CBD_TITLELEN];
- bc_Descr: string[CBD_DESCRLEN];
- bc_Task,bc_Dummy1,bc_Dummy2 : long;
- bc_Flags: word;
- END;
-
- VAR
- BrokerL : p_List;
- copied,
- anz,i,
- flushed : LONG;
- n : p_Node;
- cop : p_BrokerCopy;
- f : Text;
- names : ARRAY[1..MAXNAMES] OF STRING;
- found : BOOLEAN;
-
- LIBRARY CxBase:
- -186 : FUNCTION CopyBrokerList(A0:p_List):long;
- -192 : FUNCTION FreeBrokerList(A0:p_List):long;
- -198 : PROCEDURE BrokerCommand(A0:str;D0:long);
- END;
-
- PROCEDURE ReadInFile;
- BEGIN
- anz := 0;
- Reset(f,ExceptFile);
- IF IOResult = 0 THEN
- BEGIN
- WHILE NOT EOF(f) DO
- BEGIN
- Inc(anz);
- ReadLn(f, names[anz]);
- END;
- Close(f);
- END;
- END;
-
- { Sauberes Verlassen des Programms. }
- PROCEDURE CleanUp(why:STRING;rc:INTEGER);
- BEGIN
- IF CXBase <> NIL THEN CloseLibrary(CXBase);
- IF why <> "" THEN Writeln(why);
- DosExit(rc);
- END;
-
- { Öffnen der Library }
- PROCEDURE OpenLibs;
- BEGIN
- CXBase := OpenLibrary("commodities.library", 37);
- IF CXBase = NIL THEN CleanUp("Couldn`t open commodities.library!",20);
- END;
-
- PROCEDURE InitBrokerL;
- BEGIN
- BrokerL := PTR(AllocVec(SizeOf(List),MEMF_ANY+MEMF_CLEAR));
- IF BrokerL = NIL THEN CleanUp("Not enough memory free!",20);
- NewList(BrokerL);
- copied := CopyBrokerList(BrokerL);
- END;
-
- PROCEDURE FlushBrokers;
- LABEL weiter;
- BEGIN
- n := BrokerL^.lh_head;
- REPEAT
- cop := p_BrokerCopy(PTR(n));
- IF anz > 0 THEN
- BEGIN
- FOR i := 1 TO anz DO
- BEGIN
- found := FALSE;
- IF cop^.bc_Name = names[i] THEN
- BEGIN
- found := TRUE;
- GOTO weiter;
- END{ ELSE IF names[i] = "" THEN found := TRUE}
- ELSE found := FALSE;
- END;
- weiter:
- IF found = FALSE THEN
- BEGIN
- BrokerCommand(cop^.bc_name,CXCMD_KILL);
- Inc(flushed);
- END;
- END ELSE
- BEGIN
- BrokerCommand(cop^.bc_Name,CXCMD_KILL);
- Inc(flushed);
- END;
- n := n^.ln_succ;
- UNTIL n = NIL;
- copied := FreeBrokerList(BrokerL);
- FreeVec(BrokerL);
- END;
-
- BEGIN
- IF FromWB THEN HALT(20);
- Writeln("Flusher V1.00 (C) 1995 by Björn Schotte -=- PUBLIC DOMAIN");
- Writeln;
- CXBase := NIL;
- BrokerL := NIL;
- flushed := 0;
- OpenLibs;
- InitBrokerL;
- ReadInFile;
- FlushBrokers;
- Writeln(flushed:2," Commodities killed...");
- CleanUp("",0);
- END.
-