home *** CD-ROM | disk | FTP | other *** search
- PROGRAM convert;
- { primitives CLI-Tool, das VT.config/VT2.config in das neue System }
- { aus ".stations" und vielen Einzeldateien zerlegt }
-
- TYPE str80 = String[80];
- VAR cfgfile,stnfile,prsfile: Text;
- zeile,s: str80;
- i,lauf: Integer;
- is_header,copying: Boolean;
-
- PROCEDURE civilize(s: str80; VAR s2: str80;);
- { String als DOS-Namen tauglich machen }
- VAR i,k,l: Integer;
- sonder: String[8];
- uebers: String[15];
- BEGIN
- sonder := '{|}[\]~'; uebers := 'aeoeueAEOEUEss';
- i := 1; k := 1;
- REPEAT
- CASE s[i] OF
- ' ': s2[k] := '_'; { Leerzeichen }
- '/',':': s2[k] := '-'; { Verzeichnis-Begrenzer }
- OTHERWISE s2[k] := s[i];
- END;
- l := Pos(s[i],sonder);
- IF l>0 THEN BEGIN
- s2[k] := uebers[2*l-1]; Inc(k); s2[k] := uebers[2*l];
- END;
- Inc(i); Inc(k);
- UNTIL s[i] = #0;
- s2[k] := #0;
- END;
-
- PROCEDURE name2dosname(s: str80; VAR s2: str80;);
- { ähnlich civilize, benutzt aber die ".stations"-Liste }
- VAR zeile: str80;
- i,l: Integer;
- BEGIN
- Seek(stnfile,0); s2 := '';
- WHILE NOT EoF(stnfile) DO BEGIN
- ReadLn(stnfile,zeile); i := Pos('=',zeile);
- IF i>1 THEN IF Copy(zeile,1,i-1)=s THEN BEGIN
- l := Length(zeile); WHILE l>0 DO BEGIN
- IF zeile[l]=' ' THEN zeile[l] := #0 ELSE l := 1;
- Dec(l);
- END;
- l := Length(zeile);
- s2 := Copy(zeile,i+1,l-i);
- END;
- END;
- END;
-
- BEGIN
- Reset(cfgfile,'VT.config');
- IF IOResult<>0 THEN BEGIN
- WriteLn('"VT.config" nicht gefunden');
- Exit;
- END;
- Reset(stnfile,'.stations');
- IF IOResult<>0 THEN BEGIN
- Write('Erster Durchgang: erstelle ".stations"-Datei ... ');
- ReWrite(stnfile,'.stations');
- is_header := True;
- WHILE NOT EoF(cfgfile) DO BEGIN
- ReadLn(cfgfile,zeile);
- IF zeile='' THEN
- is_header := True { auf eine Leerzeile folgt ein Titel }
- ELSE IF is_header THEN BEGIN
- civilize(zeile, s);
- WriteLn(stnfile,zeile,'=',s);
- is_header := False;
- END;
- END;
- Close(cfgfile); Close(stnfile);
- WriteLn('fertig.'); WriteLn;
- WriteLn('Sie sollten die ".stations"-Datei jetzt manuell überarbeiten (und z. B.');
- WriteLn('Eintraege wie "PRO SIEBEN=PRO_SIEBEN" in "PRO SIEBEN=Pro7" abändern, s.');
- WriteLn('Anleitung) und können "convert" danach für den zweiten Durchgang starten.');
- END ELSE BEGIN
- WriteLn('Zweiter Durchgang: erstelle Sender-Dateien ...');
- FOR lauf := 1 TO 2 DO BEGIN
- IF lauf=1 THEN
- WriteLn('VT.config ...')
- ELSE BEGIN
- Reset(cfgfile,'VT2.config');
- IF IOResult<>0 THEN BEGIN
- WriteLn('Hm, "VT2.config" nicht gefunden.');
- Exit;
- END ELSE
- WriteLn('VT2.config ...');
- END;
- is_header := True; copying := False;
- WHILE NOT EoF(cfgfile) DO BEGIN
- ReadLn(cfgfile,zeile);
- i := Length(zeile); WHILE i>0 DO BEGIN
- IF zeile[i]=' ' THEN zeile[i] := #0 ELSE i := 1;
- Dec(i);
- END;
- IF zeile='' THEN BEGIN
- is_header := True { auf eine Leerzeile folgt ein Titel }
- IF copying THEN Close(prsfile);
- copying := False;
- END ELSE IF is_header THEN BEGIN
- name2dosname(zeile, s);
- IF s='' THEN
- WriteLn('Warnung: kein ".stations"-Eintrag für "',zeile,'"')
- ELSE BEGIN
- copying := True;
- IF lauf=1 THEN
- ReWrite(prsfile,s)
- ELSE BEGIN
- Reset(prsfile,s)
- Seek(prsfile,FileSize(prsfile));
- WriteLn(prsfile);
- END;
- END;
- is_header := False;
- END ELSE IF copying THEN
- WriteLn(prsfile,zeile);
- END;
- Close(cfgfile);
- END;
- Close(stnfile);
- WriteLn; WriteLn('Fertig. Das war''s.');
- END;
- END.
-
-