home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / dev / gcc / libnixV0_8.lha / gnu / libnix-sources.lha / sources / amiga / misc / ArgArray.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-12  |  1.7 KB  |  101 lines

  1. #include <exec/memory.h>
  2. #include <workbench/startup.h>
  3. #include <workbench/workbench.h>
  4. #include <libraries/commodities.h>
  5. #ifdef __GNUC__
  6. #include <inline/dos.h>
  7. #include <inline/exec.h>
  8. #include <inline/icon.h>
  9. #include <inline/commodities.h>
  10. #else
  11. #include <clib/dos_protos.h>
  12. #include <clib/exec_protos.h>
  13. #include <clib/icon_protos.h>
  14. #include <clib/commodities_protos.h>
  15. #endif
  16.  
  17. #ifdef NEW_ARGARRAY
  18. static UBYTE **argArray;
  19. #endif
  20. static struct DiskObject *dObj;
  21.  
  22. UBYTE **ArgArrayInit(long argc, UBYTE **argv)
  23. {
  24.   if (argc)
  25.   {
  26.     if (argc>1)
  27. #ifdef NEW_ARGARRAY
  28.       if ((argArray=AllocVec(argc*sizeof(char *),MEMF_ANY)))
  29.       {
  30.         UBYTE **p,**p1;
  31.  
  32.         p=p1=argArray;
  33.         argv++;
  34.         do
  35.         {
  36.          *p1++=*argv++;
  37.         }
  38.         while(--argc);
  39.         return p;
  40.       }
  41. #else
  42.     {
  43.       argv++; return argv;
  44.     }
  45. #endif
  46.   }
  47.   else
  48.     if ((dObj=GetDiskObjectNew(((struct WBStartup *)argv)->sm_ArgList->wa_Name)))
  49.       return (UBYTE **)dObj->do_ToolTypes;
  50.   return NULL;
  51.     
  52. }
  53.  
  54. STRPTR ArgString(UBYTE **tt, STRPTR entry, STRPTR defstr)
  55. {
  56.   STRPTR str;
  57.  
  58.   if (!entry || !(str=FindToolType(tt,entry)))
  59.     str=defstr;
  60.   return str;
  61. }
  62.  
  63. LONG ArgInt(UBYTE **tt, STRPTR entry, long defval)
  64. {
  65.   STRPTR str;
  66.  
  67.   if (entry && (str=FindToolType(tt,entry)))
  68.     StrToLong(str,&defval);
  69.   return defval;
  70. }
  71.  
  72. #ifdef 0 /* only a example ??? */
  73.  
  74. CxObj *UserFilter(UBYTE **tt, STRPTR entry, STRPTR defstr)
  75. {
  76.   STRPTR str;
  77.  
  78.   if (!entry || !(str=FindToolType(tt,entry)))
  79.     str=defstr;
  80.   return (CreateCxObj(CX_FILTER,(long)str,NULL));
  81. }
  82.  
  83. #endif
  84.  
  85. void ArgArrayDone(void)
  86. {
  87.   struct DiskObject **d;
  88. #ifdef NEW_ARGARRAY
  89.   UBYTE ***a;
  90.  
  91.   if (*(a=&argArray))
  92.   {
  93.     FreeVec(*a); *a=NULL;
  94.   }
  95. #endif
  96.   if (*(d=&dObj))
  97.   {
  98.     FreeDiskObject(*d); *d=NULL;
  99.   }
  100. }
  101.