// Asl library demo program
//
// Also a demonstration of the use of Comal functions as
// hook-function
//
// NOTE: This program requires WorkBench 2.x to run!

USE System
USE SystemCode
USE TagItem
USE AslInclude
USE DosAslInclude
USE AslLibrary

DIM FileReqTag(0..3) OF TagItem
DIM FileReq OF POINTER TO FileRequester
DIM Window OF ULONG
DIM s$ OF 1

Window:=LockComalWindow

FileReqTag(0).ti_Tag:=ASL_Window
FileReqTag(0).ti_Data:=Window
FileReqTag(1).ti_Tag:=ASL_HookFunc
FileReqTag(1).ti_Data:=ADR(FileHook(,,))
FileReqTag(2).ti_Tag:=ASL_FuncFlags
FileReqTag(2).ti_Data:=FILF_DOWILDFUNC
FileReqTag(3).ti_Tag:=TAG_DONE
FileReqTag(3).ti_Data:=0
FileReq:=AllocAslRequest(ASL_FileRequest,ADR(FileReqTag()))

FileReqTag(0).ti_Tag:=ASL_Hail
FileReqTag(0).ti_Data:=ADR("Select file ...")
FileReqTag(1).ti_Tag:=TAG_DONE
IF AslRequest(FileReq,ADR(FileReqTag())) THEN
  PRINT AT 12,10: "You selected the file: ",CharArrayToString$(FileReq@.rf_File)
ELSE
  PRINT AT 12,15: "You didn't select a file"
ENDIF

FreeFileRequest(FileReq)
UnlockComalWindow

s$:=INKEY$(5)

FUNC FileHook(Type OF ULONG,ap OF AnchorPathPtr,fr OF FileReqPtr) OF LONG
  IF ".info" IN CharArrayToString$(ADR(ap@.ap_Info.fib_FileName())) THEN
    RETURN -1
  ELSE
    RETURN 0
  ENDIF
ENDFUNC FileHook
