home *** CD-ROM | disk | FTP | other *** search
- (* ----------------------------------------------------------------------- *)
- (* FORMAT.PAS *)
- (* Aufruf des nach FORMATX umbenannten MS-DOS Programms FORMAT. Wurde als *)
- (* zu formatierendes Medium die Festplatte spezifiziert (C:, D:, usw.), *)
- (* wird eine Warnung ausgegeben und eine Bestaetigung verlangt. *)
- (* Der Aufruf: >FORMAT x:/Option aktiviert dieses Pascal-Programm und *)
- (* bei erfolgreicher Pruefung schliesslich das umbenannte MS-DOS-Programm *)
- (* FORMATX. Bei der Ubersetzung muss die Option "COM-File" gesetzt werden *)
- (* System: Turbo Pascal 3.0 & MS-DOS *)
-
- PROGRAM Format;
-
- CONST
- Stack_size = $40; (* Groesse des HEAP und Stack *)
- pgm_name = 'FORMATX ';
-
- VAR
- param: STRING[128];
- i, j : INTEGER;
- antw : CHAR;
-
- (*$I EXEC4BH.INC *)
- (*$I SETBLOCK.INC *)
- (*$I ENVIRON.INC *)
-
- PROCEDURE error (n: INTEGER);
- BEGIN
- Write(' *** FEHLER: ');
- CASE n OF
- 1: WriteLn('FORMATX konnte nicht gestartet werden !');
- 2: WriteLn('Laufwerkangabe fehlt !');
- 3: WriteLn('ungültige Parameter !');
- 4: WriteLn('bei Speicherplatzfreigabe !');
- END;
- END;
-
- BEGIN
- WriteLn; WriteLn('Sicheres Format (C) 1987 ',
- ' B.Born, M.Ceol & PASCAL INT.');
- (* Da den COM-Files beim Laden der gesamte verfuegbare Speicher zuge-
- ordnet wird, muss der unbenutzte Speicher an MS-DOS zurueckgegeben
- werden, ehe ein Tochterprozess gestartet werden kann. *)
- IF SetBlock(MaxAvail-Stack_size) = 0 THEN BEGIN
- (* Werte nun die Benutzereingaben aus und pruefe, ob eine Festplatte
- formatiert werden soll. In diesem Fall ist die Warnung auszugeben.
- Das Programm bricht bei Verwendung von impliziten Laufwerksangaben
- aus Sicherheitsgruenden ab. *)
- IF ParamCount = 1 THEN BEGIN
- param := ParamStr(1);
- IF param[2] = ':' THEN BEGIN
- FOR i := 1 TO Length(param) DO param[i] := UpCase(param[i]);
- antw := 'J'; (* wenn nicht C: oder D: wird formatiert !! *)
- IF param[1] >= 'C' THEN BEGIN
- WriteLn;
- Write('Wollen Sie wirklich Ihre Festplatte formatieren (j/n) ? ');
- ReadLn (antw);
- END;
- IF UpCase(antw) = 'J' THEN
- (* Den im Environment mit COMSPEC= spezifizierten Kommandopro-
- zessor COMMAND.COM starten. Die Kommandozeile fuer COMMAND
- muss mit /C beginnen, damit nur dieses eine Kommando ausge-
- fuehrt wird: *)
- IF exec(EnvironStr('COMSPEC'),
- Concat('/C',pgm_name,param)) <> 0 THEN error(1);
- END
- ELSE error(2);
- END
- ELSE error(3);
- END
- ELSE error(4);
- WriteLn;
- END.