/*
 $VER: InfoList_modrename.dopus 2.92 (95.01.04 18:55:58)

 Funktion: Mit Hilfe von Infolist werden alle Einträge auf ihren Dateityp
   getestet. Ist das File ein Musik Modul, wird es nach seinem Internen
   Namen umbenannt. Ist ein File bereits vorhanden, so wird ein Suffix
   "__x" angehangen. "x" steht für die Interation.

 Benötigt werden:
   rexxsupport.library, InfoList
   DOpus 4.0+ runing ( nur bei Möglichkeit 1 )
   temporäres Dir "T:"

 Aufruf 1, von DOpus gestartet: RX InfoList_modrename.dopus
   Outputwindow
   Es wird dann das aktuelle Window modifiziert

 Aufruf 2, vom CLI gestartet: rx InfoList_setcomment.dopus Path
   Als Path muß das zu modifizierende Dir angegeben werden. DOpus wird
   nicht benötigt.

 Programmierer: Lutz Hanke, Dorfstr. 43, 01825 Breitenau, Germany

 Achtung:
 1. MED4-8 ist nicht implementiert, da der internen Namen nicht den des
    Module File Namens entspricht.

*/

OPTIONS RESULTS

if ~show('l','rexxsupport.library') then do
  if ~addlib('rexxsupport.library',0,-30,34) then exit 20
end

parse arg arg.1 temp
if arg.1 = '' then do
  ADDRESS 'DOPUS.1' 'Status 3'
  active = RESULT
  ADDRESS 'DOPUS.1' 'status 13' active
  Quellpath = RESULT
end
else do
  Quellpath = arg.1
end
Quellpath = strip(Quellpath,'b','"')


a = 1
suf.a = '.as'     ; a = a + 1
suf.a = '.nt'     ; a = a + 1
suf.a = '.readme' ; a = a + 1
suf.a = '.readme1'; a = a + 1
suf.a = '.txt'    ; a = a + 1
suf.a = '.txt1'    ; a = a + 1
suf.a = '.txt2'    ; a = a + 1
suf.a = '.txt3'    ; a = a + 1
suf.a = '.txt4'    ; a = a + 1
suf.a = '.lyric'    ; a = a + 1
suf = a - 1


ADDRESS 'COMMAND' 'Infolist "'Quellpath'" >t:il files music decrunch lformat %n/%c/%i'

if open('il','t:il') then do
  do while ~EOF('il')
    string = readln('il')
    parse var string name.old'/'comment'/'name.new
    if (pos(':',name.new) = 0) & (pos('/',name.new) = 0) & (pos('"',name.new) = 0) then do
      if name.new ~= '' then do
        select
          when pos('Chiptracker',comment)      ~=0 then do ; prefix = 'KRIS.'  ; call newname ; end
          when pos('EurekaPacker',comment)     ~=0 then do ; prefix = 'EP.'    ; call newname ; end
          when pos('FTM mod',comment)          ~=0 then do ; prefix = 'FTM.'   ; call newname ; end
          when pos('Icetracker',comment)       ~=0 then do ; prefix = 'ICE.'   ; call newname ; end
          when pos('Multitracker',comment)     ~=0 then do ; prefix = 'MTM.'   ; call newname ; end
          when pos('Powermusic',comment)       ~=0 then do ; prefix = 'mod.'   ; call newname ; end
          when pos('Prorunner 1.0',comment)    ~=0 then do ; prefix = 'PRun1.' ; call newname ; end
          when pos('ProTracker',comment)       ~=0 then do ; prefix = 'mod.'   ; call newname ; end
          when pos('Pumatracker 1.0',comment)  ~=0 then do ; prefix = 'Puma.'  ; call newname ; end
          when pos('Screamtracker',comment)    ~=0 then do ; prefix = 'S3M.'   ; call newname ; end
          when pos('SoundMonitor 2.0',comment) ~=0 then do ; prefix = 'BP.'    ; call newname ; end
          when pos('SoundTracker 2.0',comment) ~=0 then do ; prefix = 'ST20.'  ; call newname ; end
          when pos('SoundTracker old',comment) ~=0 then do ; prefix = 'mod.'   ; call newname ; end
          when pos('StarTrekker',comment)      ~=0 then do ; prefix = 'mod.'   ; call newname ; end
          when pos('Unic1Tracker',comment)     ~=0 then do ; prefix = 'Unic1.' ; call newname ; end
          when pos('Unic2Tracker',comment)     ~=0 then do ; prefix = 'Unic2.' ; call newname ; end
          when pos('Wantonpacker',comment)     ~=0 then do ; prefix = 'WP.'    ; call newname ; end
          otherwise say 'unknown filetype "'string'"'
        end
      end
      else say 'no rename : "'string'"'
    end
    else say 'error for new name : "'string'"'
  end
end

call close('il')

exit 0


newname:
  if compare(name.old,prefix || name.new) > 0 then do
    say 'rename    :' left(name.old,30) prefix || name.new
    if ~rename(Quellpath || name.old,Quellpath || prefix || name.new) then do
      loop = 1
      do while loop ~= 0
        say ' ' loop
        if rename(Quellpath || name.old,Quellpath || prefix || name.new'__'loop) then do
          loop = 0
        end
        else loop = loop + 1
      end
    end
    do a = 1 to suf
      call rename(Quellpath || name.old || suf.a,Quellpath || prefix || name.new || suf.a)
    end
  end
  else say ' equate   :' left(name.old,30) prefix || name.new
return

