From 7e0f021a9aec35fd8e6725e87e3313b101d26f5e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 27 Jan 2008 11:37:44 +0100 Subject: Initial import (2.0.2-6) --- reference/C/CONTRIB/SNIP/isnetdr.c | 45 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 reference/C/CONTRIB/SNIP/isnetdr.c (limited to 'reference/C/CONTRIB/SNIP/isnetdr.c') diff --git a/reference/C/CONTRIB/SNIP/isnetdr.c b/reference/C/CONTRIB/SNIP/isnetdr.c new file mode 100755 index 0000000..0e90e57 --- /dev/null +++ b/reference/C/CONTRIB/SNIP/isnetdr.c @@ -0,0 +1,45 @@ +/*----------------------------------------------------------------------*/ +/* determine_drive_type -- Public Domain code from Bob Dolan */ +/* */ +/* INPUT: the drive number ( 0=current, 1=A:, 2=B:, etc. ) */ +/* OUTPUT: drive type ( 0=physical drive, 1=Network drive, 2=RamDisk ) */ +/*----------------------------------------------------------------------*/ + +#include + +drive_type(int dr) +{ + union REGS regs; + + regs.x.ax = 0x4409; /* IOCTL func 9 */ + regs.h.bl = (unsigned char)dr; + int86(0x21, ®s, ®s); + if (!regs.x.cflag) + { + if (regs.x.dx & 0x1000) + return 1; /* Network drive */ + + else if (regs.x.dx == 0x0800) + return 2; /* RAMdisk */ + } + + return 0; /* physical drive */ +} + +#ifdef TEST + +#include +#include +#include + +int main(int argc, char *argv[]) +{ + int dr = 0; + + if (1 < argc) + dr = toupper(*argv[1]) - '@'; + printf ("drive_type(%d) = %d\n", dr, drive_type(dr)); + return 0; +} + +#endif /* TEST */ -- cgit v1.2.3-54-g00ecf