Invoking UNZIP.IMG from external applications The main enhancement in version 1.4 is that it allows the destination directory (where the extracted files will be placed) to be specified on the command line. This is useful where Unzip is being spawned by a parent process, rather than run interactively using the RUN.APP utility. The syntax for specifying the destination directory is as follows: m:\run\unzip.img [options] -@ m:\destin\dir\ zipfilename The -@ switch (chosen so as to be unlikely to conflict with switches for other platforms) must be used as follows: 1) It must be the *last* of any options on the command line. 2) It must be followed by (at least one) space, then the full path name of the destination directory. 3) The destination directory must exist already. 4) The destination directory name must be terminated with a backslash (EPOC requires this). Example command line: -qq -@ m:\tmp\ a:\zipfile.zip unzips quietly the zip file on drive A to the \tmp directory of the internal drive. Invoking UNZIP.IMG from C or C++ #include /* This assumes PLIB is in use, change as required for CLIB */ int pid; char name[64]; char cmdl[128]; p_scpy(name, "m:\\run\\unzip.img"); /* Or wherever Unzip is located */ p_scpy(cmdl, "command line to be passed"); pid = p_execc(name, cmdl, p_slen(cmdl)); if (pid<0) p_notifyerr(pid, "Unzip launch failed", NULL, NULL, NULL); else p_presume(pid); Invoking UNZIP.IMG from OPL #ifdef S3A #define UADD(x,y) uadd(x,y) #else #define UADD(x,y) (x+y) #endif local pid%, ret% local name$(64), cmdl$(128) name$="m:\run\unzip.img"+chr$(0) REM Or wherever Unzip is located cmdl$="command line to be passed"+chr$(0) ret%=call($0187,UADD(addr(name$),1),addr(cmdl$),0,0,addr(pid%)) if ret%<0 alert("Unzip launch failed",err$(ret%)) else call($0688,pid%,0,0,0,0) REM Resume process endif ------------- David Palmer Edinburgh Scotland September, 1995