home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Fax / AVMA&GPFax-V1,33Sources.LHA / icon_support.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-25  |  2.1 KB  |  87 lines

  1. #include <workbench/workbench.h>
  2. #include <workbench/startup.h>
  3. #include <clib/dos_protos.h>
  4. #include <clib/icon_protos.h>
  5. #include <clib/exec_protos.h>
  6.  
  7. struct Library        * WorkbenchBase    = NULL;
  8. static BPTR                tmplock;
  9.  
  10. /* ---------------------------------------------------------------------- */
  11. /* --- DiskObject support functions ------------------------------------- */
  12. /* ---------------------------------------------------------------------- */
  13.  
  14. struct DiskObject * getdiskobject(char * programname)
  15. {
  16.     struct DiskObject        * dobj    = NULL;
  17.  
  18.     if (WorkbenchBase = OpenLibrary("workbench.library", 36))
  19.     {
  20.         dobj = GetDiskObject(programname) ;
  21.  
  22.         CloseLibrary(WorkbenchBase);
  23.     }
  24.  
  25.     return(dobj);
  26. }
  27.  
  28. void remdiskobject(struct DiskObject * dobj)
  29. {
  30.     if (dobj)
  31.     {
  32.         if (WorkbenchBase = OpenLibrary("workbench.library", 36))
  33.         {
  34.             FreeDiskObject(dobj);
  35.  
  36.             CloseLibrary(WorkbenchBase);
  37.         }
  38.     }
  39. }
  40.  
  41. struct DiskObject    * AVM_DiskObject    = NULL;
  42. struct WBStartup    * WBenchMsg            = NULL;
  43.  
  44. static char* programname;
  45. static char    programpath[256];
  46. static char    actualprogramname[50];
  47.  
  48. void shell_startup(void) {
  49.   GetProgramName(programpath, 256);
  50.  
  51.   /* --- Get real program name ---------------------------------------- */
  52.  
  53.   programname = FilePart(programpath);
  54.   strcpy(actualprogramname, programname);
  55.  
  56.   /* --- Try to get disk object --------------------------------------- */
  57.  
  58. //  AVM_DiskObject = getdiskobject(programpath);
  59.   strcpy(programpath, "avm:icons/");
  60.   strcat(programpath, actualprogramname);
  61.   AVM_DiskObject = getdiskobject(programpath);
  62. }
  63.  
  64. void workbench_startup(char* argv[]) {
  65.   /* --- Workbench startup ---------------------------------------- */
  66.   WBenchMsg    = (struct WBStartup *) argv;
  67.   
  68.   programname    = WBenchMsg->sm_ArgList->wa_Name;
  69.   
  70.   tmplock    = Lock ( programname, ACCESS_READ );
  71.   NameFromLock ( tmplock, programpath, 256 );
  72.   UnLock ( tmplock);
  73.  
  74.   /* --- Get real program name ---------------------------------------- */
  75.  
  76.   programname = FilePart(programpath);
  77.   
  78.   /* --- Try to get disk object --------------------------------------- */
  79.  
  80.   AVM_DiskObject = getdiskobject(programpath);
  81. }
  82.  
  83. void shutdown_icon(void) {
  84.   remdiskobject ( AVM_DiskObject );
  85. }
  86.  
  87.