home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / compress / lhd100.lha / LHD.rexx < prev   
OS/2 REXX Batch file  |  1993-02-14  |  5KB  |  116 lines

  1. /*
  2.  
  3.                         $VER: LHD 1.00 (13-FEB-93)
  4.  
  5.                            © 1993 Robert Hofmann
  6.  
  7.                            2:2400/24@fidonet.org
  8.                           39:171/100@amiganet.ftn
  9.  
  10. */
  11.  
  12.  
  13.  
  14. LHA     = 'c:lha'              /* path & name of LHA             */
  15.  La_Opt = '-I2xrYe a'          /* LHA-options for arcing         */
  16.  Lx_Opt = '-Ia e'              /* LHA-options for unarcing       */
  17.  
  18. Assign  = 'c:assign'           /* path & name of ASSIGN -command */
  19. Format  = 'Sys:system/format'  /* path & name of FORMAT -command */
  20.  F_Opt  = 'Quick Noicons FFS'  /* format-options                 */
  21. Info    = 'c:info'             /* path & name of INFO   -command */
  22. Install = 'c:install'          /* path & name of INSTALL-command */
  23. Relabel = 'c:relabel'          /* path & name of RELABEL-command */
  24.  
  25. TmpDir  = 'T:'                 /* temporary directory            */
  26.  
  27.  
  28. parse arg mode in out DiskName .; mode = upper(mode); DiskName = strip(strip(DiskName),'b','"')
  29.  
  30. call Init; call Header; if mode = '?' then call Usage
  31.  
  32. if ~show(l, "rexxsupport.library") then; if ~addlib("rexxsupport.library", 0, -30, 0) then do
  33.  say LF" *** Break: Couldn't access rexxsupport.library!"LF; exit; end
  34.  
  35. if right(TmpDir,1) ~= ':' & right(TmpDir,1) ~= '/' then TmpDir = TmpDir'/'
  36. call delete(TmpFile); call delete(NTP)
  37.  
  38. address command; select
  39.  
  40.  when mode = 'READ' then do; if ~exists(in) then do; say LF' *** Break: No valide device or path' upper('"'in'"')LF; exit; end
  41.   if DiskName = '' then do; info '>'TmpFile in; call open(tmp, TmpFile, 'R')
  42.    do until eof(tmp); line = readln(tmp); parse var line left . . . . . . right
  43.     left = strip(left); right = strip(right)
  44.     if upper(left) = upper(in) then do; DiskName = right
  45.      if upper(word(DiskName,1)) = 'ONLY' then DiskName = subword(DiskName,2)
  46.      leave; end; end; call close(tmp)
  47.    if DiskName = '' then do; temp = translate(translate(out,' ',':'),' ','/'); temp = word(temp, words(temp))
  48.     parse var temp DiskName '.' .; say LF' *** Info: Can not find DiskName.'LF
  49.     options prompt '  Shall I use' upper('"'DiskName'"')' (Y/N)?' ); pull ask; say
  50.     if ask ~= 'Y' & ask ~= '' then do; options prompt '  Enter name to be used: '; parse pull DiskName; say
  51.      if DiskName = '' then exit; end; end; end
  52.   if ~open(tmp, NTP, 'W') then do; say LF' *** Break: Can not open TempFile' upper(NTP)LF; exit; end
  53.   call writeln(tmp, DiskName); call close(tmp)
  54.   if index(out,'.') = 0 then out = out'.LHD'
  55.   if exists(out) then do; say ' 'upper(out) 'already exists.'LF
  56.    options prompt '  Shall I overwrite it (Y/N)? '; pull ask; say
  57.    if ask = 'Y' then call delete(out); else exit; end
  58.   say ' Archiving datas from' upper('"'in'"') 'to' upper('"'out'"')'...'LF
  59.   if right(in,1) ~= ':' & right(in,1) ~= '/' then in = in'/'; if exists('c:filenote') then 'c:filenote >nil:' NTP '"'LHD'"'
  60.   lha '>nil: -2Ia a' out NTP; lha con La_Opt out in; length = word(statef(out),2)
  61.   say ' New archive successfully created. Length:' length 'Bytes.'LF LF
  62.   end
  63.  
  64.  when mode = 'WRITE' then do; if index(in,'.') = 0 then in = in'.LHD'
  65.   if right(out,1) ~= ':' & right(out,1) ~= '/' then out = out'/'
  66.   if word(statef(in),2) ~> 0 then do; say ' *** Break: Can not open input-file' upper(in)LF; exit; end
  67.   if DiskName = '' then do; lha '>nil: -I e' in NT TmpDir
  68.    if ~open(tmp, NTP, 'R') | word(statef(NTP),2) = 0 then do; parse var in DiskName '.' .
  69.     say ' *** Info: No diskname found in' upper(in)'!!!'LF'           => Using archivename: "'upper(DiskName)'".'LF; end
  70.    else do; DiskName = readln(tmp); call close(tmp); end; end
  71.   if upper(left(out,2)) = 'DF' then
  72.    if format = '' then do; relabel out '"'DiskName'"'; install out; end
  73.    else do; format con 'drive' out 'name' '"'DiskName'"' F_Opt; install out; end
  74.   else do; assign '"'DiskName':"' out; say ' Assigned' upper('"'DiskName':"') 'to' upper('"'out'"')LF; end
  75.   say ' Extracting datas from' upper('"'in'"') 'to' upper('"'out'"')'...'LF
  76.   lha con Lx_Opt in '~('NT')' out; say LF' All done!'LF
  77.   end
  78.  
  79.  when mode = 'TEST' then do; if index(in,'.') = 0 then in = in'.LHD'; lha 't' in; end
  80.  
  81.  when mode = 'VIEW' then do; if index(in,'.') = 0 then in = in'.LHD'; lha 'v' in '~('NT')'; end
  82.  
  83.  otherwise do; say ' *** Break: Unknown mode' mode'!!!'LF LF; call Usage; end
  84.  
  85. end
  86.  
  87. call delete(TmpFile); call delete(NTP)
  88.  
  89. exit
  90.  
  91.  
  92. Header:
  93.  
  94.  say LF LF LHD; say ' ~~~~~~~~~'LF
  95.  return
  96.  
  97.  
  98. Init:
  99.  
  100.  interpret 'LHD = "'reverse("7627F6E24756E6F6469666044323F203034323A32302E6E616D666F6840247275626F6250233939313029A02C20303E21367024484C4")'"x'
  101.  Con     = '<>Con:///100/DiskLHA'
  102.  LF      = 'a'x
  103.  NT      = 'DISKNAME.TXT'
  104.  NTP     = TmpDir || NT
  105.  TmpFile = TmpDir'DiskLHA.tmp'
  106.  return
  107.  
  108.  
  109. Usage:
  110.  
  111.  say ' RX LHD READ  <DFx:|{inpath}> <{outfile}[.LHD]> [DiskName]'LF
  112.  say '        WRITE <{infile}[.LHD]> <DFx:|{outpath}> [DiskName]'LF
  113.  say '        TEST  <{file}[.LHD]>'LF
  114.  say '        VIEW  <{file}[.LHD]>'LF LF; exit
  115.  
  116.