Initial Commit
[packages] / xemacs-packages / mew / mew / OS2 / mew-mime.cmd
1 /* ----------------------------------------------------------------- *\r
2  *      mew-mime.cmd  --- external method for OS/2 Mew\r
3  *\r
4  *        Copyright (C) 1996,1997,1998  OKUNISHI Fujikazu\r
5  *        Copyright (C) 1997,1998       KONDO Hiroyasu\r
6  *\r
7  * Author: OKUNISHI Fujikazu <fuji0924@mbox.kyoto-inet.or.jp>\r
8  *         KONDO Hiroyasu    <hirokon@homi.toyota.aichi.jp>\r
9  *\r
10  * Version:\r
11  *     $Id: mew-mime.cmd,v 1.1.1.1 1998-10-07 12:01:05 jareth Exp $\r
12  * Requirement:\r
13  *     VREXX2.ZIP : Visual REXX for Presentation Manager(IBMEWS,Freeware)\r
14  * ----------------------------------------------------------------- */\r
15 \r
16   Trace Off; '@echo off'; vrexx=1\r
17   If RxFuncQuery('SysLoadFuncs') Then Do\r
18         Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'\r
19         Call SysLoadFuncs\r
20   End\r
21   If RxFuncQuery('VInit') Then rb=RxFuncAdd('VInit', 'VREXX', 'VINIT')\r
22   If VInit()=='ERROR' Then Do; Call VExit; vrexx=0; End\r
23 \r
24   Signal on failure name QUIT\r
25   Signal on halt name QUIT\r
26   Signal on syntax name QUIT\r
27 \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
32 \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
40    End\r
41    ct=Translate(ct)\r
42    target=Translate(target,'\','/')\r
43    If Pos('\',target) ==0 Then target='.\' || target\r
44 \r
45 /* ----------------------------------------------------------------- *\r
46  *  initialize\r
47  * ----------------------------------------------------------------- */\r
48   env = 'OS2ENVIRONMENT'\r
49   home = Translate(Value('HOME',,env),'\','/')\r
50 \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
63     Signal SAVE\r
64   End\r
65 \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
75      End\r
76    End\r
77 \r
78 /* ----------------------------------------------------------------- *\r
79  *  undefined C-T: ==> treated as `Application/Octet-stream'\r
80  * ----------------------------------------------------------------- */\r
81 SAVE:\r
82         Call EMSG(0 'undefined C-T: in' initfile)\r
83         save_fn = savedir || tmp_fn || '.bin'\r
84         If vrexx Then Do\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
92           End\r
93           Else Call VMSG(1 'Aborted!!')\r
94         End\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
99         End\r
100 Signal QUIT\r
101 \r
102 \r
103 /* ----------------------------------------------------------------- *\r
104  *  exec extprog\r
105  * ----------------------------------------------------------------- */\r
106 EXEC:\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
118         End\r
119         Else Do\r
120           tmp_fn = tmpdir ||tmp_fn || '.' || suffix\r
121           'copy' target tmp_fn '>nul'\r
122 /*\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
128  *        End\r
129  *        Else 'copy' target tmp_fn '>nul'\r
130  */\r
131         End\r
132 \r
133         args = Space(args)\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
144 Signal QUIT\r
145 \r
146 /* ----------------------------------------------------------------- *\r
147  *  error messages\r
148  * ----------------------------------------------------------------- */\r
149 EMSG: Procedure\r
150         Parse Arg bye msg\r
151         Call LineOut STDERR,msg\r
152         If bye Then Exit 999\r
153 Return\r
154 \r
155 /* ----------------------------------------------------------------- *\r
156  *  error dialog  (with VREXX.DLL)\r
157  * ----------------------------------------------------------------- */\r
158 VMSG: Procedure  Expose this vrexx\r
159         Parse Arg bye msg\r
160         If vrexx Then Do\r
161           mbox.0=1; mbox.1=msg\r
162           Call VmsgBox this, mbox, 1\r
163         End\r
164         If bye Then Signal QUIT\r
165 Return\r
166 \r
167 /* ----------------------------------------------------------------- *\r
168  *  error log  (without VREXX support)\r
169  * ----------------------------------------------------------------- */\r
170 FMSG: Procedure  Expose logfile\r
171         Parse Arg bye msg\r
172         Call Lineout logfile, Date() Time() '09'x msg\r
173         If bye Then Exit 999\r
174 Return\r
175 \r
176 /* ----------------------------------------------------------------- *\r
177  *  exit\r
178  * ----------------------------------------------------------------- */\r
179 QUIT:\r
180         If vrexx Then Call VExit\r
181 Exit\r
182 \r
183 /* end of mew-mime.cmd */\r