home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rexxface.zip / cXFace.cmd.in < prev    next >
Text File  |  1998-03-02  |  4KB  |  131 lines

  1. /*
  2.  *  cXFace.cmd -- decode & view method for RGB colored X-Face
  3.  *
  4.  *         Copyright (C) 1997-1998  OKUNISHI Fujikazu
  5.  *
  6.  * Author:  OKUNISHI Fujikazu <fuji0924@mbox.kyoto-inet.or.jp>
  7.  * Created: Aug 05, 1997
  8.  * Revised: Mar  2, 1998
  9.  *
  10.  * Requirements:
  11.  *  netpbm for OS/2 emx
  12.  *  GIF viewer like `PMView 1.x'
  13.  */
  14. Call Time('R')
  15.  
  16. /* ----------------------------------------------------------------- *
  17.  * site-dependencies (relative path from $HOME)
  18.  * ----------------------------------------------------------------- */
  19. MAILDIR  = '@MAIL@'                        /* Mail directory */
  20. NEWSSPOOL= '@NEWS@'                        /* saved News spool */
  21. viewer   = Translate('@VIEWER@','\','/')   /* GIF viewer */
  22. wait     = '@WAIT@'                        /* sleep time (second) */
  23. dbg      = '@DEBUG@'                       /* 1: debug mode */
  24. /* ----------------------------------------------------------------- */
  25.  
  26.  
  27.   '@echo off'
  28.   If RxFuncQuery('SysLoadFuncs') Then Do
  29.     Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  30.     Call SysLoadFuncs
  31.   End
  32.  
  33.   Parse Arg file .
  34.  
  35.   pgmFiles = '' /*initialize*/
  36.  
  37.   env ='OS2ENVIRONMENT'
  38.   HOME=Value('HOME',,env)
  39.  
  40.   TMP=Value('TMP',,env)
  41.     If TMP='' Then TMP=Value('TEMP',,env)
  42.     If TMP='' Then TMP='.'
  43.   TMP=Translate(TMP,'\','/')
  44.   If Left(Reverse(TMP),1) ='\' Then TMP=Reverse(Delstr(Reverse(TMP),1,1))
  45.   TMP=TMP'\'
  46.  
  47.   gifFile  = TMP || SysTempFileName(')RGB???(.gif')
  48.  
  49.   file = Translate(file,'\','/')
  50.   Select
  51.     When file=''           Then Do
  52.       If Lines()==0 Then Exit 255
  53.       src='STDIN'
  54.     End
  55.     When Left(file,1)='~' Then src= HOME||Delstr(file,1,1)
  56.     When Left(file,1)='+' Then src= HOME'/'MAIL'/'Delstr(file,1,1)
  57.     When Left(file,1)='=' Then Do   /* fj.editor.mule ==> fj/editor/mule */
  58.       src.rev=Reverse(file)
  59.       Parse Var src.rev fn.rev '\' dir.rev
  60.       src=Translate(Delstr(Reverse(dir.rev),1,1),'\','.') ||'\'|| Reverse(fn.rev)
  61.       src= HOME'\'NEWSSPOOL'\'src
  62.     End
  63.     Otherwise NOP
  64.   End
  65.  
  66.   If src<>'STDIN' & Stream(src,'C','Query Exist') ='' Then Exit
  67.  
  68.   Call READ_HEADER(src)
  69.  
  70.   Do i= h.0 To 1 By -1
  71.     j=i-1
  72.     If Left(h.i,1) == '20'x
  73.     Then Do
  74.       h.j= h.j||Delstr(h.i,1,1)
  75.       h.i=''
  76.     End
  77.   End
  78.  
  79.   Do j=1 To h.0
  80.     If Translate(Left(h.j,7)) = 'X-FACE:' Then Do
  81.       Parse Var h.j 'X-Face:' str.j
  82.       xf.j = TMP || SysTempFileName('xf???.'j)
  83.       pgm.j = TMP || SysTempFileName('pgm???.'j)
  84.       Call LineOut xf.j , Space(str.j,0); Call LineOut xf.j
  85.       'uncompface' xf.j '| icon2xbm | xbmtopbm |ppmtopgm >' pgm.j
  86.       Call DMSG(rc)       /*debug*/
  87.       If dbg<>1 Then rc= SysFileDelete(xf.j)
  88.       pgmFiles=pgmFiles pgm.j
  89.     End
  90.    /* Else say j*/
  91.   End
  92.  
  93.   'rgb3toppm' pgmFiles '|ppmtogif >' gifFile '2>nul'
  94.    Call DMSG(rc) /*debug*/
  95.    Call DMSG(TIME('E'))
  96.   If rc<>0 Then Do; err=1; Signal CLEAN; End
  97.   'detach' viewer gifFile
  98.  
  99. CLEAN:
  100.   Do n=1 By 1 While Words(pgmFiles) > 0
  101.     Parse Var pgmFiles pgm.n pgmFiles
  102.     If dbg<>1 Then rc=SysFileDelete(pgm.n)
  103.   End
  104.  
  105.   If err <>1 Then Call SysSleep wait  /* wait: sleep time */
  106.   If dbg<>1 Then rc=SysFileDelete(gifFile)
  107.  
  108. Exit
  109.  
  110.  
  111. /* ----------------------------------------------------------------- *
  112.  *  generate stem variables from header
  113.  * ----------------------------------------------------------------- */
  114. READ_HEADER: Procedure Expose  h.
  115.   Parse Arg src .
  116.   Do i=1 By 1 While Lines(src)
  117.     h.i = Translate(Linein(src),'',D2C(9))
  118.     If h.i='' Then Leave
  119.   End
  120.   h.0=i-1
  121.   Return
  122.  
  123. /* ----------------------------------------------------------------- *
  124.  *  debug message
  125.  * ----------------------------------------------------------------- */
  126. DMSG:
  127.  If dbg=1 Then Call LineOut STDERR,Arg(1)
  128.  Return
  129.  
  130. /* end of procedure */
  131.