home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / GWINDOWS / lfmaker.lzh / aif.c < prev    next >
Text File  |  1996-04-13  |  2KB  |  85 lines

  1. /*********************************************************************
  2. aif.c - recognizer to give G-Windows some of the functions that
  3.     AIF files gave to Multi-View
  4. File structure:
  5.     line 1 AIF
  6.     line 2 command line to pass to G-Windows
  7.     line 3 File type to pass to gwindows
  8.     line 4 icon
  9.  
  10. compile with:
  11.  cc -i -td=/r0 -s=0 -t=10 -eas -v=/dd/GWINDOWS/DEFS -tp=68kc  aif.c 
  12.  
  13. link:
  14.  l68 /dd/GWINDOWS/LIB/substart.r aif.r -l=/dd/MWOS/OS9/68000/LIB/clib.l 
  15.  -l=/dd/MWOS/OS9/68000/LIB/os_lib.l -o=/dd/GWINDOWS/CMDS/aif_recognizer
  16.  
  17. set attributes:
  18.  attr /dd/GWINDOWS/CMDS/aif_recognizer -eperprw
  19.  
  20. *********************************************************************/
  21. #include <desktop.h>    /* MATCHTEST */
  22. #include <types.h>      /* special data types */
  23. #include <string.h>     /* strcpy() */
  24.  
  25. /*  change this when new icons added -  this must be one less that the number
  26.     of icons defined in aif_icons */
  27. #define LASTICON 12
  28.  
  29. /* nothing from here down should need to be changed. */
  30.  
  31. #define COMPVALUE 0x4149460D
  32.  
  33. unsigned short black_icon();
  34. extern char *GetLine(char**);
  35.  
  36. int dt_hook(MATCHTEST *mt)
  37. {
  38. unsigned long hashvalue;
  39. unsigned short value;
  40. char *data;
  41.  
  42. data = mt->data;
  43.  
  44. hashvalue = (data[0] << 24) | (data[1] << 16) | (data[2] <<8) | (data[3]);
  45.  
  46. if(hashvalue != COMPVALUE)
  47.     return 0;
  48.  
  49. data+=4;
  50.  
  51. strcpy(mt->command,GetLine(&data));
  52. strcpy(mt->filetype,GetLine(&data));
  53.  
  54. value = 0;
  55. while(*data >= '0' && *data <='9')
  56.     {
  57.     value *= 10;
  58.     value += *(data++) - '0';
  59.     }
  60. if(value > LASTICON)
  61.     value = 0;
  62. value <<= 7;
  63.  
  64. mt->icon = (unsigned short*)black_icon;
  65. mt->icon += value;
  66.  
  67. mt->matchflag = LASTICON;   /* desktop only checks for non zero */
  68. return 1;
  69. }
  70.  
  71. char *GetLine(char **data)
  72. {
  73. char *s = *data;
  74. char *rtn = *data;          /* save original pointer */
  75.  
  76. while(*s != 0x0d)           /* find carriage return */
  77.     s++;
  78. *s++ = 0;                   /* null terminate */
  79. *data = s;                  /* update data pointer */
  80. return rtn;
  81. }
  82.  
  83. #include "aif_icons"
  84.  
  85.