home *** CD-ROM | disk | FTP | other *** search
- {
- BP> Is there some way I can use interrupts or whatever to detect whether
- BP> the "file name" contained in the S string variable is a device name
- BP> (such as "CON", "LPT1", "AUX", etc) or not?
-
- Yes: use the ubiquitious INT $21. }
-
- FUNCTION IsDevice(CONST Fname: PathStr): boolean;
- { -- Returns TRUE if named file is actually a device.
- -- Example: IsDevice('CON') = TRUE, IsDevice(paramstr(0)) = FALSE.
- -- N.B.: returns FALSE if FName is a non-existent file. }
- VAR Regs: Registers;
- F : FILE;
- FH : word ABSOLUTE F;
- BEGIN IsDevice := FALSE;
- assign(F, Fname);
- reset(F, 1);
- IF IOresult <> 0 THEN exit;
- WITH Regs
- DO BEGIN { -- Get information about file: }
- AX := $4400;
- BX := FH;
- MsDos(Regs);
- IF NOT odd(Flags) AND (DL AND $80 <> 0)
- THEN IsDevice := TRUE
- END;
- close(F);
- IF IOresult <> 0 THEN ;
- END;
-