1 /* ----------------------------------------------------------------- *
\r
2 * mew-mime.cmd --- external method for OS/2 Mew
\r
4 * Copyright (C) 1996,1997,1998 OKUNISHI Fujikazu
\r
5 * Copyright (C) 1997,1998 KONDO Hiroyasu
\r
7 * Author: OKUNISHI Fujikazu <fuji0924@mbox.kyoto-inet.or.jp>
\r
8 * KONDO Hiroyasu <hirokon@homi.toyota.aichi.jp>
\r
11 * $Id: mew-mime.cmd,v 1.1.1.1 1998-10-07 12:01:05 jareth Exp $
\r
13 * VREXX2.ZIP : Visual REXX for Presentation Manager(IBMEWS,Freeware)
\r
14 * ----------------------------------------------------------------- */
\r
16 Trace Off; '@echo off'; vrexx=1
\r
17 If RxFuncQuery('SysLoadFuncs') Then Do
\r
18 Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
\r
21 If RxFuncQuery('VInit') Then rb=RxFuncAdd('VInit', 'VREXX', 'VINIT')
\r
22 If VInit()=='ERROR' Then Do; Call VExit; vrexx=0; End
\r
24 Signal on failure name QUIT
\r
25 Signal on halt name QUIT
\r
26 Signal on syntax name QUIT
\r
28 Parse Source . . this .
\r
29 cmdPath = Left(this, Lastpos('\',this) -1)
\r
30 this = Filespec('Name',this)
\r
31 this = Left(this, Length(this) -4)
\r
33 /* ----------------------------------------------------------------- *
\r
34 * parameter check "mew-mime {C-T:} {target}"
\r
35 * ----------------------------------------------------------------- */
\r
36 Parse Arg ct target opt .
\r
37 If target=='' Then Do
\r
38 Call EMSG(0 'no parameters.')
\r
39 Call VMSG(1 'usage:' this '{C-T:} {targetfile}')
\r
42 target=Translate(target,'\','/')
\r
43 If Pos('\',target) ==0 Then target='.\' || target
\r
45 /* ----------------------------------------------------------------- *
\r
47 * ----------------------------------------------------------------- */
\r
48 env = 'OS2ENVIRONMENT'
\r
49 home = Translate(Value('HOME',,env),'\','/')
\r
51 tmpdir = Left(target, Lastpos('\',target) -1)
\r
52 savedir=Value('MEW_SAVE_DIR',,env)
\r
53 If savedir=='' Then savedir=Value('TMP',,env)
\r
54 If savedir=='' Then savedir=Value('TEMP',,env)
\r
55 If savedir=='' Then savedir='.'
\r
56 tmp_fn = SysTempFileName('\mew-????')
\r
57 initfile = home'\.'this'rc'
\r
58 logfile = home'\'this'.log'
\r
59 If Stream(initfile,'C','Query Exist')=''
\r
60 Then initfile=cmdPath||inifspec
\r
61 If Stream(initfile,'C','Query Exist')='' Then Do
\r
62 Call VMSG(0 initfile 'not exists.')
\r
66 /* ----------------------------------------------------------------- *
\r
67 * get progname from initfile
\r
68 * ----------------------------------------------------------------- */
\r
69 /* SysFileSearch cannot understand EOL=LF (T_T) */
\r
70 Do While Lines(initfile)
\r
71 def = Translate(Linein(initfile),'',D2C(9)) /*TAB=>[white space]*/
\r
72 If Translate(Word(def,1)) = ct Then Do
\r
73 Parse Var def mtype suffix progname args
\r
74 If ct == Translate(mtype) Then Signal EXEC
\r
78 /* ----------------------------------------------------------------- *
\r
79 * undefined C-T: ==> treated as `Application/Octet-stream'
\r
80 * ----------------------------------------------------------------- */
\r
82 Call EMSG(0 'undefined C-T: in' initfile)
\r
83 save_fn = savedir || tmp_fn || '.bin'
\r
85 Call VDialogPos 10, 50
\r
86 button = VFileBox(this': Save as', save_fn, 'file')
\r
87 If button=='OK' Then Do
\r
88 save_fn = file.vstring
\r
89 'copy' target save_fn '1>nul'
\r
90 If rc<>0 Then Call VMSG(1 'cannot save as' save_fn)
\r
91 Else Call VMSG(1 'saved as' save_fn)
\r
93 Else Call VMSG(1 'Aborted!!')
\r
95 Else Do /*w/o VREXX support*/
\r
96 'copy' target save_fn '1>nul'
\r
97 If rc<>0 Then Call FMSG(1 'cannot save as' save_fn)
\r
98 Else Call FMSG(1 'saved as' save_fn)
\r
103 /* ----------------------------------------------------------------- *
\r
105 * ----------------------------------------------------------------- */
\r
107 Call LineOut(initfile) /*close*/
\r
108 /* -------------------------------------------------------- *
\r
109 * CTE: x-uue `begin 644 foo.gif'
\r
110 * -------------------------------------------------------- */
\r
111 head = Linein(target)
\r
112 Call Lineout target /*close*/
\r
113 If Translate(Word(head,1))='BEGIN' & Datatype(Word(head,2),'W')=1 Then Do
\r
114 uufname = Word(head,3)
\r
115 'call uumerge -d' savedir target
\r
116 If rc<>0 Then Call VMSG(1 'uumerge error!')
\r
117 Else fname=savedir'\'uufname
\r
120 tmp_fn = tmpdir ||tmp_fn || '.' || suffix
\r
121 'copy' target tmp_fn '>nul'
\r
123 * If Pos('TEXT/',ct)>0 Then Do
\r
124 * cocoexe = SysSearchPath('PATH','coco.exe')
\r
125 * If Pos('ROT13',ct)>0
\r
126 * Then cocoexe '*sjis* <' target '|nkf -rs>' tmp_fn '2>nul'
\r
127 * Else cocoexe '*sjis* <' target '>' tmp_fn '2>nul'
\r
129 * Else 'copy' target tmp_fn '>nul'
\r
134 progname = Translate(progname,'\','/')
\r
135 /* ----------------------------------------- *
\r
136 * Netscape/nsclient
\r
137 * "d:" => "/d^|" or "/d%7C"
\r
138 * ----------------------------------------- */
\r
139 prog=Translate(progname)
\r
140 If Pos('NETSCAPE',prog)>0|Pos('NSCLIENT',prog)>0 Then
\r
141 tmp_fn='file:///'|| Left(tmp_fn,1) ||"^|"|| Delstr(tmp_fn,1,2)
\r
142 'start' progname args tmp_fn
\r
143 /*'detach' progname args tmp_fn*/
\r
146 /* ----------------------------------------------------------------- *
\r
148 * ----------------------------------------------------------------- */
\r
151 Call LineOut STDERR,msg
\r
152 If bye Then Exit 999
\r
155 /* ----------------------------------------------------------------- *
\r
156 * error dialog (with VREXX.DLL)
\r
157 * ----------------------------------------------------------------- */
\r
158 VMSG: Procedure Expose this vrexx
\r
161 mbox.0=1; mbox.1=msg
\r
162 Call VmsgBox this, mbox, 1
\r
164 If bye Then Signal QUIT
\r
167 /* ----------------------------------------------------------------- *
\r
168 * error log (without VREXX support)
\r
169 * ----------------------------------------------------------------- */
\r
170 FMSG: Procedure Expose logfile
\r
172 Call Lineout logfile, Date() Time() '09'x msg
\r
173 If bye Then Exit 999
\r
176 /* ----------------------------------------------------------------- *
\r
178 * ----------------------------------------------------------------- */
\r
180 If vrexx Then Call VExit
\r
183 /* end of mew-mime.cmd */
\r