home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format 91 / af091a.adf / af91a3.lzx / prgs / Library / entrytype.b next >
Encoding:
Text File  |  1996-09-15  |  1.4 KB  |  66 lines

  1. {*
  2. ** This program demonstrates how the existence of a directory
  3. ** or file can be determined.
  4. **
  5. ** Author: David J Benn
  6. **   Date: 14th March 1995
  7. *}
  8.  
  9. '..Constants.
  10. CONST null = 0&
  11. CONST ACCESS_READ = -2&
  12. CONST NONEXISTENT = 0, ISAFILE = -3, ISADIR = 2
  13.  
  14. '..Structure definitions.
  15. STRUCT FileInfoBlock
  16.   longint fib_DiskKey
  17.   longint fib_DirEntryType
  18.   string  fib_FileName size 108
  19.   longint fib_Protection
  20.   longint fib_EntryType
  21.   longint fib_Size
  22.   longint fib_NumBlocks
  23.   string  fib_Date size 12
  24.   string  fib_Comment size 80
  25.   string  fib_Reserved size 36
  26. END STRUCT
  27.  
  28. '..Shared library function declarations.
  29. DECLARE FUNCTION LONGINT Lock library dos
  30. DECLARE FUNCTION UnLock library dos
  31. DECLARE FUNCTION Examine library dos
  32.  
  33. '..Subprograms.
  34. SUB SHORTINT EntryType(STRING dname)
  35. LONGINT myLock
  36. DECLARE STRUCT FileInfoBlock info
  37.  
  38.   myLock = Lock(dname,ACCESS_READ) 
  39.  
  40.   IF myLock <> null then
  41.     Examine(myLock,info)
  42.     UnLock(mylock)
  43.     EntryType = info->fib_EntryType
  44.   ELSE
  45.     EntryType = NONEXISTENT
  46.   END IF
  47. END SUB
  48.  
  49. SUB Usage
  50.   PRINT
  51.   PRINT "usage: ";ARG$(0);" directory-name"
  52. END SUB
  53.  
  54. '..Main.
  55. IF ARGCOUNT <> 1 THEN
  56.   Usage
  57. ELSE
  58.   theName$ = ARG$(1)
  59.   type = EntryType(ARG$(1))
  60.   CASE
  61.     type = NONEXISTENT : PRINT theName$;" does not exist."
  62.     type = ISAFILE     : PRINT theName$;" is a file."
  63.     type = ISADIR      : PRINT theName$;" is a directory."
  64.   END CASE
  65. END IF
  66.