#include <exec/exec.h>
#include <libraries/commodities.h>
#include <string.h>
#include <proto/exec.h>
#include <proto/commodities.h>
#include <proto/dos.h>

#pragma libcall CxBase commoditiesPrivate2 ba \
                       801 /* CopyBrokerList */
#pragma libcall CxBase commoditiesPrivate3 c0 \
                       801 /* FreeBrokerList */
#pragma libcall CxBase commoditiesPrivate4 c6 802 \
                       /* BrokerCommand  */

LONG commoditiesPrivate2(struct List *);
LONG commoditiesPrivate3(struct List *);
LONG commoditiesPrivate4(char *, LONG id);

struct Library *CxBase;

struct BrokerCopy
 {
  struct Node  bc_Node;
  char   bc_Name[CBD_NAMELEN];
  char   bc_Title[CBD_TITLELEN];
  char   bc_Descr[CBD_DESCRLEN];
  LONG   bc_Task;
  LONG   bc_Dummy1;
  LONG   bc_Dummy2;
  UWORD  bc_Flags;
 };

/* Diese Funktion schickt an alle Commodities
 * das CXCMD_KILL-Kommando.
 */
void SendToAllBrokers(void)
{
 struct List *BrokerList;
 struct Node *Node, *NextNode;

 if (BrokerList = AllocVec(sizeof(struct List),
                                  MEMF_PUBLIC))
 {
   NewList(BrokerList);
   commoditiesPrivate2(BrokerList);
   for (Node=BrokerList->lh_Head;
        Node&&(NextNode=Node->ln_Succ);Node=NextNode)
   {
    commoditiesPrivate4((char *)
     ((struct BrokerCopy *)Node)->bc_Name,CXCMD_KILL);
   }
   commoditiesPrivate3(BrokerList);
   FreeVec(BrokerList);
 }
}

main()
{
 /* Commodities-Library öffnen */
 if (CxBase = OpenLibrary("commodities.library", 37))
 {
  SendToAllBrokers();
  CloseLibrary(CxBase);
 }
}

