home *** CD-ROM | disk | FTP | other *** search
/ Micro R&D 1 / MicroRD-CD-ROM-Vol1-1994.iso / os20 / cli / cxkiller12.lha / CxKiller / CxKiller.c < prev    next >
C/C++ Source or Header  |  1993-12-21  |  2KB  |  109 lines

  1. /*
  2. **  CxKiller.c : Gael Marziou
  3. **
  4. **  A simple program to kill Commodties safely.
  5. **  Without any argument it kills all commodities.
  6. **  Arguments must be a list of Commodities.names
  7. **  Names are case sensitive.
  8. **
  9. **  29 Nov. 93
  10. */
  11.  
  12. #include <exec/libraries.h>
  13. #include <exec/memory.h>
  14. #include <libraries/commodities.h>
  15. #include <dos/dos.h>
  16. #include <clib/exec_protos.h>
  17. #include <clib/alib_protos.h>
  18. #include <clib/commodities_protos.h>
  19.  
  20. UBYTE *version = "$VER: CxKiller 1.2";
  21.  
  22. #ifdef __SASC
  23. int CXBRK(void) { return(0); }  /* Disable SAS_C CTRL/C handling */
  24. int chkabort(void) { return(0); } 
  25. #include <pragmas/commodities_pragmas.h>
  26. #include <pragmas/exec_pragmas.h>
  27. #include <pragmas/dos_pragmas.h>
  28. #endif
  29.  
  30. /*** private functions of "commodities.library" ***/
  31.  
  32. #pragma libcall CxBase FindBroker 6c 801
  33. #pragma libcall CxBase CopyBrokerList ba 801
  34. #pragma libcall CxBase FreeBrokerList c0 801
  35. #pragma libcall CxBase BrokerCommand c6 802
  36.  
  37. CxObj *FindBroker(char *);
  38. LONG CopyBrokerList(struct List *);
  39. LONG FreeBrokerList(struct List *);
  40. LONG BrokerCommand(char *, LONG id);
  41.  
  42. struct Library *CxBase;
  43.  
  44. /*** private structures & defines ***/
  45.  
  46. struct BrokerCopy    {
  47.     struct Node    bc_Node;
  48.     char    bc_Name[CBD_NAMELEN];
  49.     char    bc_Title[CBD_TITLELEN];
  50.     char    bc_Descr[CBD_DESCRLEN];
  51.     LONG    bc_Task;
  52.     LONG    bc_Dummy1;
  53.     LONG    bc_Dummy2;
  54.     UWORD    bc_Flags;
  55. };
  56.  
  57. #define COF_ACTIVE 2
  58.  
  59.  
  60. __inline void 
  61. KillAllBrokers (void)
  62. {
  63.     struct List *l;
  64.     struct Node *n, *nn;
  65.  
  66.     if (l = AllocVec(sizeof(struct List),MEMF_PUBLIC)) {
  67.         NewList(l);
  68.         CopyBrokerList(l);
  69.         for (n = l->lh_Head; n && (nn = n->ln_Succ); n = nn)
  70.             BrokerCommand((char *)((struct BrokerCopy *)n)->bc_Name,CXCMD_KILL);
  71.         FreeBrokerList(l);
  72.         FreeVec(l);
  73.     }
  74. }
  75.  
  76. __inline void 
  77. KillOneBroker (char *BrokerName)
  78. {
  79.     BrokerCommand(BrokerName, CXCMD_KILL);
  80. }
  81.  
  82.  
  83.  
  84. void 
  85. main(int argc, char *argv[])
  86. {
  87.     unsigned char i;
  88.  
  89.     /* Before bothering with anything else, open the library */
  90.     if (CxBase = OpenLibrary("commodities.library", 37L))
  91.     {
  92.         if (argc < 2) 
  93.         {    /* no argument given */
  94.             KillAllBrokers();
  95.         }
  96.         else
  97.         {
  98.             for (i=1; i<argc ; i++)
  99.             {
  100.                 KillOneBroker((char *)argv[i]);
  101.             }
  102.         }
  103.     }
  104.     CloseLibrary(CxBase);
  105. }
  106.  
  107.  
  108.  
  109.