/* * * Rename file(s) on 1541 and Amiga from DOpus. * * (c) 1995 by Christer Bjarnemo mr.bjarnemo@mn.medstroms.se * * Based on Twin-Dopus by Patrick Van Beem (patrick.van.beem@aobh.xs4all.nl), * which based he's script on the DOpusLhaARexx package by Geoff Seeley. * */ dircmd = "Work:Emulators/A64/Utils/" /* Note. If the file ENVARC:1541.PREFS */ rxdir = "Rexx:Dopus/1541/" /* exists, that one will override the */ tmpdir = "t:" /* settings here... */ DOpusPort = 'DOPUS.1' snuff = '22'x if open(1,'env:1541.prefs','Read') then do dircmd = readln(1) rxdir = readln(1) tmpdir = readln(1) end close(1) dircmd = slashpath(dircmd) rxdir = slashpath(rxdir) tmpdir = slashpath(tmpdir) if ~show(l,"rexxsupport.library") then call addlib("rexxsupport.library",0,-30,0) if showlist('Ports', DOpusPort) = 0 then do say 'Directory Opus Arexx port not found. Aborting.' call CleanUp end address(DOpusPort) options results /* setup DOpus window and tell user what's happening */ Busy on TopText "Renaming selected files..." /* Get the destination path */ 'Status 6 -1' GetEntry Result ToPath = Result if left(ToPath,1) = '*' then do ToPath = SubStr(ToPath,2) DoReread='TRUE' end else do 'Status 13 -1' ToPath = result if ToPath = '' then do TopText "No destination directory selected." call CleanUp end DoReread='FALSE' end ToPath=Quote(ToPath) /* Get the current path and do file-copy, depending on the */ /* type of path (1541/normal path) */ 'Status 6 -1' GetEntry Result FilePath = Result /* 1541-way */ if left(FilePath,1) = '*' then do FilePath = SubStr(FilePath,2) GetSelectedAll SelectedEntries = result if SelectedEntries = 'RESULT' then do TopText "No files selected." call CleanUp end NumberOfEntries = words(SelectedEntries) do EntryNumber = 1 to NumberOfEntries Index = word(SelectedEntries, EntryNumber) GetEntry Index+1 Entry = result File = strip(left(Entry,25)) if right(FilePath,1) = ':' then File = FilePath || File else File = FilePath || '' || File Getstring '"Rename this file?" "'file'"' newname = result if newname ~= file then do address command dircmd'64Cmd >'tmpdir'1541.tmp "r:'newname'='File'" 8' if open(1,tmpdir'1541.tmp','Read') then do Do for 8 ; tmp = readln(1) ; End say tmp Toptext tmp close(1) end end selection = Index||' 0 0' SelectEntry selection end end /* Normal way */ else do rename end 'DisplayDir -1' if DoReread='TRUE' then do address arexx rxdir'1541Dir.rexx' end call CleanUp exit /*---------------------------------------------------------------------------*/ CleanUp: /* Remove any files and exit */ Busy off exit return /*--------------------------------------------------------------------------*/ Quote: procedure /* add quotes to string */ parse arg string return '"'||string||'"' /*--------------------------------------------------------------------------*/ GetWord: procedure /* get word from '|' separated string */ parse arg number,words if(left(words,1) ~= '|') then words = '|'||words do i=1 to number idx = index(words, '|'); words = substr(words, idx+1) end end = index(words, '|') - 1 if words = "" then return "" ret_str = substr(words, 1, end) return ret_str /*--------------------------------------------------------------------------*/ CountWords: procedure /* count words from '|' separated string */ parse arg words count = 0 idx = index(words, '|') do while idx ~= 0 count = count + 1 words = substr(words, idx+1) idx = index(words, '|') end return count /*---------------------------------------------------------------------------*/ Slashpath: procedure /* Put a (/) or (:) at the end of filenames (if neccessary) */ parse arg string if right(string,1) ~= ':' & right(string,1) ~= '/' then do string = string'/' end return string