FileAttr

Returns information about an open file number

Syntax
	KeyPgDeclareDeclare KeyPgFunctionFunction FileAttr ( KeyPgByvalByVal filenum KeyPgAsAs KeyPgLongLong, KeyPgByvalByVal returntype KeyPgAsAs 
	KeyPgLongLong = 1 ) KeyPgAsAs KeyPgIntegerInteger

Usage
	#include "file.bi"
	result = FileAttr( filenum, [ returntype ] )

or

	#include "vbcompat.bi"
	result = FileAttr( filenum, [ returntype ] )

Parameters
	filenum
		The file number of a file or device opened with KeyPgOpenOpen
	returntype
		An integer value indicating the type of information to return.

Return Value
	A value associated with the return type, otherwise 0 on error.

Description
	Information about the file number is returned based on the supplied 
	returntype
			Ŀ
			ValueDescriptionconstant          
			1    File Mode  fbFileAttrMode    
			2    File HandlefbFileAttrHandle  
			3    Encoding   fbFileAttrEncoding
			

	For File Mode, returntype = 1 (fbFileAttrMode) the return value is the 
	sum of one or more of the following values: 
			Ŀ
			ValueFile ModeConstant        
			1    Input    fbFileModeInput 
			2    Output   fbFileModeOutput
			4    Random   fbFileModeRandom
			8    Append   fbFileModeAppend
			32   Binary   fbFileModeBinary
			

	For File Handle, returntype = 2 (fbFileAttrHandle), the return value is 
	the file handle as supplied by the C Runtime for file-type devices.  

	On Windows only: For File Handle, returntype = 2 (fbFileAttrHandle), the 
	value returned for COM devices is the handle returned by CreateFile() 
	when the device was first opened.  The value returned for LPT devices is 
	the handle returned by OpenPrinter() when the device was first opened.  
	This handle value can be passed to other Windows API functions.

	On Linux only: For File Handle, returntype = 2 (fbFileAttrHandle), the 
	value returned for COM devices is the file descriptor returned by open() 
	when the device was first opened.

	For Encoding, returntype = 3 (fbFileAttrEncoding), the return value is 
	one of the following values:
			Ŀ
			ValueEncodingConstant        
			0    Ascii   fbFileEncodASCII
			1    UTF-8   fbFileEncodUTF8 
			2    UTF-16  fbFileEncodUTF16
			3    UTF-32  fbFileEncodUTF32
			

Example
	#include "vbcompat.bi"
	#include "crt.bi"

	Dim f As FILE Ptr, i As Integer

	'' Open a file and write some text to it

	Open "test.txt" For Output As #1
	f = Cast( FILE Ptr, FileAttr( 1, fbFileAttrHandle ))
	For i = 1 To 10
	  fprintf( f, !"Line %i\n", i )
	Next i
	Close #1

	'' re-open the file and read the text back

	Open "test.txt" For Input As #1
	f = Cast( FILE Ptr, FileAttr( 1, fbFileAttrHandle ))
	While feof(f) = 0
	  i = fgetc(f)
	  Print Chr(i);
	Wend
	Close #1

Differences from QB
	* None for returntype = 1
	* QBasic and 16-bit Visual Basic returned DOS file handle for 
	  returntype = 2
	* returntype = 3 is new to FreeBASIC

See also
	* KeyPgOpenOpen

