QLIB's Win95 Long File Name support
-----------------------------------

Notes:
  - all functions will immediate fail if long file name support was not
    detected during QLIB init.

Decl:  sword lfn_findfirst(char* str1,byte allow_attr,byte req_attr,
         word datetyp,void * lfn_ffb);

Notes:
   Searches for 1st file/dir that matches requirements.
   See \test\ff.asm for a good example of its use.

Return:
  on success : Returns a handle for use with lfn_findnext()
             : lfn_ffb is filled in with info of first file that matched
  on error : ERROR (-1)

   The lfn_ffb is as follows:
struct lfn_ffblk {
 dword ff_attrib;
   // file attributes
   // bits 0-6 standard DOS attributes (FA_*)
   // bit 8: temporary file
 dword ff_ct_lo,ff_ct_hi;
   // file creation time (number of 100ns intervals since 1/1/1601)
 dword ff_last_access_lo,ff_last_access_hi; // last access time
 dword ff_last_modify_lo,ff_last_modify_hi; // last modification time
 dword ff_fsize_hi;   // file size (high 32 bits)
 dword ff_fsize_lo;   // file size (low 32 bits)
 byte ff_reserved[8];    // reserved
 byte ff_full_name[260]; // ASCIZ full filename
 byte ff_short_name[14]; // ASCIZ short filename (for backward compatibility)
};

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Decl:  sword lfn_findnext(sword hand,word datetyp,void * lfn_ffb);

Notes:
  hand - must be handle that was recieved from a successful call to
         lfn_findfirst()
  datetyp - must be one of the following:
         LFN_DATE_64BIT
         LFN_DATE_MSDOS

Returns:
  on success : lfn_ffb is filled in with info of first file that matched
  on error : ERROR (-1)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Decl: sword lfn_freefind(sword hand);

Notes:
  hand - must be handle that was recieved from a successful call to
         lfn_findfirst()
  This handle must be freed when you no longer plan on using it with
    lfn_findnext().  Long file name handles are a scarce resource and
    should be released as soon as possible.

Return:
  on success : 0
  on error : ERROR (-1)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Decl: sword lfn_open(char *fn,word acc,word attr);

Notes:
  Opens/creates a file.
  fn = ASCIZ filename
  acc = file access mode (O_BINARY, O_RDONLY, O_CREAT, etc.)
  attr = new file attributes (only if file is created)

Return:
  on success : File handle
  on error : ERROR (-1)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Decl: sword lfn_creat(char *fn,word acc,word attr);

Notes:
  Creates a file.
  fn = ASCIZ filename
  acc = file access mode (O_BINARY, O_RDONLY, O_CREAT, etc.)
  attr = new file attributes

Return:
  on success : File handle
  on error : ERROR (-1)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Decl: sbyte lfn_chdir(char *dn);

Notes:
  Changes current directory.
  dn = ASCIZ filename

Return:
  on success : 0
  on error : ERROR (-1)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Decl: sbyte lfn_mkdir(char *dn);

Notes:
  Makes a new directory.
  dn = ASCIZ filename

Return:
  on success : 0
  on error : ERROR (-1)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Decl: sbyte lfn_rmdir(char *dn);

Notes:
  Removes a directory.
  dn = ASCIZ filename

Return:
  on success : 0
  on error : ERROR (-1)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Decl: sbyte lfn_unlink(char *fn);

Notes:
  Removes a file.
  fn = ASCIZ filename

Return:
  on success : 0
  on error : ERROR (-1)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Decl: sbyte lfn_rename(char *_old,char *_new);

Notes:
  Renames a file/dir.
  _old = old ASCIZ filename
  _new = old ASCIZ filename

Return:
  on success : 0
  on error : ERROR (-1)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Decl: sbyte lfn_getcwd(char *dir);

Notes:
  Get's current devices current directory
  dir = ASCIZ filename buffer

Return:
  on success : 0
  on error : ERROR (-1)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Decl: sbyte lfn_getdcwd(byte dev,char *dir);

Notes:
  Get's 'dev' current directory
  dir = ASCIZ filename buffer

Return:
  on success : 0
  on error : ERROR (-1)

