GETATTR function

Purpose

Return the file-system attribute(s) of a disk file or directory.

Syntax

x& = GETATTR(filespec$)

Remarks

filespec$ specifies a filename or directory (optionally, including a drive letter and directory path).  The attribute code returned in x& is a standard operating system attribute code, or a combination of several codes ORed together:

Attribute

Description

Equate*

0

Normal**

%NORMAL

1

Read-only

%READONLY

2

Hidden

%HIDDEN

4

System

%SYSTEM

8

Volume Label

%VLABEL

16

Directory

%SUBDIR

32

Archived

%ARCHIVE

128

Normal**

(synonym of %NORMAL)

*     These equates can be found in the WIN32API.INC text file

**   Some operating systems may return either 0 or 128 for normal files.

If GETATTR returns an attribute of 0 (or 128), filespec$ is a regular file: not read-only, not hidden, not system, and not archived.

Additional file attributes may be supported on some file systems. See the %FILE_ATTRIBUTE equates in your Win32API.inc file for a full list.

If you want to test for a single attribute, use the bitwise AND operator to strip out any other attributes that might be set.  See the example below.

GETATTR can also be used to verify the existence of a file or directory, taking advantage of the fact that ERR will be set if the file/directory does not exist.  See the example below.

Restrictions

If filespec$ cannot be found, a run-time Error  53 ("File not found") occurs.  You cannot obtain the attributes of the root directory (i.e., "C:\").  Windows prevents this particular operation, triggering an Error 53.

See also

DIR$, FILEATTR, SETATTR

Example

' General GETATTR example

attr& = GETATTR("C:\CONFIG.SYS")

IF (attr& AND 32&) = 32& THEN

  x$ = "CONFIG.SYS has been modified"

ELSE

  x$ = "CONFIG.SYS hasn't been modified"

END IF

 

' Exist() function using GETATTR

FUNCTION Exist(File$) AS LONG

  LOCAL Dummy&

  Dummy& = GETATTR(File$)

  FUNCTION = (ERRCLEAR = 0)

END FUNCTION