home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 18 REXX
/
18-REXX.zip
/
rexxface.zip
/
cXFace.cmd.in
< prev
next >
Wrap
Text File
|
1998-03-02
|
4KB
|
131 lines
/*
* cXFace.cmd -- decode & view method for RGB colored X-Face
*
* Copyright (C) 1997-1998 OKUNISHI Fujikazu
*
* Author: OKUNISHI Fujikazu <fuji0924@mbox.kyoto-inet.or.jp>
* Created: Aug 05, 1997
* Revised: Mar 2, 1998
*
* Requirements:
* netpbm for OS/2 emx
* GIF viewer like `PMView 1.x'
*/
Call Time('R')
/* ----------------------------------------------------------------- *
* site-dependencies (relative path from $HOME)
* ----------------------------------------------------------------- */
MAILDIR = '@MAIL@' /* Mail directory */
NEWSSPOOL= '@NEWS@' /* saved News spool */
viewer = Translate('@VIEWER@','\','/') /* GIF viewer */
wait = '@WAIT@' /* sleep time (second) */
dbg = '@DEBUG@' /* 1: debug mode */
/* ----------------------------------------------------------------- */
'@echo off'
If RxFuncQuery('SysLoadFuncs') Then Do
Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
Call SysLoadFuncs
End
Parse Arg file .
pgmFiles = '' /*initialize*/
env ='OS2ENVIRONMENT'
HOME=Value('HOME',,env)
TMP=Value('TMP',,env)
If TMP='' Then TMP=Value('TEMP',,env)
If TMP='' Then TMP='.'
TMP=Translate(TMP,'\','/')
If Left(Reverse(TMP),1) ='\' Then TMP=Reverse(Delstr(Reverse(TMP),1,1))
TMP=TMP'\'
gifFile = TMP || SysTempFileName(')RGB???(.gif')
file = Translate(file,'\','/')
Select
When file='' Then Do
If Lines()==0 Then Exit 255
src='STDIN'
End
When Left(file,1)='~' Then src= HOME||Delstr(file,1,1)
When Left(file,1)='+' Then src= HOME'/'MAIL'/'Delstr(file,1,1)
When Left(file,1)='=' Then Do /* fj.editor.mule ==> fj/editor/mule */
src.rev=Reverse(file)
Parse Var src.rev fn.rev '\' dir.rev
src=Translate(Delstr(Reverse(dir.rev),1,1),'\','.') ||'\'|| Reverse(fn.rev)
src= HOME'\'NEWSSPOOL'\'src
End
Otherwise NOP
End
If src<>'STDIN' & Stream(src,'C','Query Exist') ='' Then Exit
Call READ_HEADER(src)
Do i= h.0 To 1 By -1
j=i-1
If Left(h.i,1) == '20'x
Then Do
h.j= h.j||Delstr(h.i,1,1)
h.i=''
End
End
Do j=1 To h.0
If Translate(Left(h.j,7)) = 'X-FACE:' Then Do
Parse Var h.j 'X-Face:' str.j
xf.j = TMP || SysTempFileName('xf???.'j)
pgm.j = TMP || SysTempFileName('pgm???.'j)
Call LineOut xf.j , Space(str.j,0); Call LineOut xf.j
'uncompface' xf.j '| icon2xbm | xbmtopbm |ppmtopgm >' pgm.j
Call DMSG(rc) /*debug*/
If dbg<>1 Then rc= SysFileDelete(xf.j)
pgmFiles=pgmFiles pgm.j
End
/* Else say j*/
End
'rgb3toppm' pgmFiles '|ppmtogif >' gifFile '2>nul'
Call DMSG(rc) /*debug*/
Call DMSG(TIME('E'))
If rc<>0 Then Do; err=1; Signal CLEAN; End
'detach' viewer gifFile
CLEAN:
Do n=1 By 1 While Words(pgmFiles) > 0
Parse Var pgmFiles pgm.n pgmFiles
If dbg<>1 Then rc=SysFileDelete(pgm.n)
End
If err <>1 Then Call SysSleep wait /* wait: sleep time */
If dbg<>1 Then rc=SysFileDelete(gifFile)
Exit
/* ----------------------------------------------------------------- *
* generate stem variables from header
* ----------------------------------------------------------------- */
READ_HEADER: Procedure Expose h.
Parse Arg src .
Do i=1 By 1 While Lines(src)
h.i = Translate(Linein(src),'',D2C(9))
If h.i='' Then Leave
End
h.0=i-1
Return
/* ----------------------------------------------------------------- *
* debug message
* ----------------------------------------------------------------- */
DMSG:
If dbg=1 Then Call LineOut STDERR,Arg(1)
Return
/* end of procedure */