123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- {$MACRO ON}
- {$define Rsc := }
- (******************************************************************************
- *
- * Copyright (c) 1998-2000 Palm, Inc. or its subsidiaries.
- * All rights reserved.
- *
- * File: FSLib.h
- *
- * Release: Palm OS SDK 4.0 (63220)
- *
- * Description:
- * Sample file system library implementation.
- *
- * History:
- * 02/29/00 Created by Steve Minns
- * 10/27/00 CS Include VFSMgr.h, since we depend on it.
- *
- *****************************************************************************)
- (********************************************************************
- * Filename and Label conventions:
- *
- * All path names are absolute
- *
- * All filesystems must support filenames and labels that are up to 255 characters long,
- * using any normal character including spaces and lower case characters in any
- * character set and the following special characters:
- * $ % ' - _ @ ~ ` ! ( ) ^ # & + , ; = [ ]
- ********************************************************************
- * When creating the 8.3 name or label from a long filename or label:
- * a) Create the name from the first 1-6 valid, non-space characters, before the last period.
- * The only valid characters are:
- * A-Z 0-9 $ % ' - _ @ ~ ` ! ( ) ^ # &
- * b) the extension is the first three valid characters after the last period '.'
- * c) the end of the 6 byte name is appended with ~1, or the next unique number.
- *
- * A label is created from the first 11 valid non-space characters.
- ********************************************************************)
- unit fslib;
- interface
- uses palmos, libtraps, vfsmgr;
- // When building the PalmOS 3.5 version of ExpansionMgr,
- // since this constant was not in the 3.5 SystemResources.h...
- const
- sysFileTFileSystem = RSC('libf'); // File type for file system libraries
- fsLibAPIVersion_ = $00000002;
- (********************************************************************
- * Type of FS Library database
- ********************************************************************)
- (********************************************************************
- * FS library function trap ID's. Each library call gets a trap number:
- * FSTrapXXXX which serves as an index into the library's dispatch table.
- * The constant sysLibTrapCustom is the first available trap number after
- * the system predefined library traps Open,Close,Sleep & Wake.
- *
- * WARNING!!! The order of these traps MUST match the order of the dispatch
- * table in FSLibDispatch.c!!!
- ********************************************************************)
- const
- FSTrapLibAPIVersion = sysLibTrapCustom;
- FSTrapCustomControl = sysLibTrapCustom + 1;
- FSTrapFilesystemType = sysLibTrapCustom + 2;
- FSTrapFileCreate = sysLibTrapCustom + 3;
- FSTrapFileOpen = sysLibTrapCustom + 4;
- FSTrapFileClose = sysLibTrapCustom + 5;
- FSTrapFileRead = sysLibTrapCustom + 6;
- FSTrapFileWrite = sysLibTrapCustom + 7;
- FSTrapFileDelete = sysLibTrapCustom + 8;
- FSTrapFileRename = sysLibTrapCustom + 9;
- FSTrapFileSeek = sysLibTrapCustom + 10;
- FSTrapFileEOF = sysLibTrapCustom + 11;
- FSTrapFileTell = sysLibTrapCustom + 12;
- FSTrapFileResize = sysLibTrapCustom + 13;
- FSTrapFileGetAttributes = sysLibTrapCustom + 14;
- FSTrapFileSetAttributes = sysLibTrapCustom + 15;
- FSTrapFileGetDate = sysLibTrapCustom + 16;
- FSTrapFileSetDate = sysLibTrapCustom + 17;
- FSTrapFileSize = sysLibTrapCustom + 18;
- FSTrapDirCreate = sysLibTrapCustom + 19;
- FSTrapDirEntryEnumerate = sysLibTrapCustom + 20;
- FSTrapVolumeFormat = sysLibTrapCustom + 21;
- FSTrapVolumeMount = sysLibTrapCustom + 22;
- FSTrapVolumeUnmount = sysLibTrapCustom + 23;
- FSTrapVolumeInfo = sysLibTrapCustom + 24;
- FSTrapVolumeGetLabel = sysLibTrapCustom + 25;
- FSTrapVolumeSetLabel = sysLibTrapCustom + 26;
- FSTrapVolumeSize = sysLibTrapCustom + 27;
- FSMaxSelector = FSTrapVolumeSize;
- (********************************************************************
- * API Prototypes
- ********************************************************************)
- (********************************************************************
- * Standard library open, close, sleep and wake APIs:
- ********************************************************************)
- function FSLibOpen(fsLibRefNum: UInt16): Err; syscall sysLibTrapOpen;
- function FSLibClose(fsLibRefNum: UInt16): Err; syscall sysLibTrapClose;
- function FSLibSleep(fsLibRefNum: UInt16): Err; syscall sysLibTrapSleep;
- function FSLibWake(fsLibRefNum: UInt16): Err; syscall sysLibTrapWake;
- (********************************************************************
- * Custom library APIs:
- ********************************************************************)
- function FSLibAPIVersion(fsLibRefNum: UInt16): UInt32; syscall FSTrapLibAPIVersion;
- function FSCustomControl(fsLibRefNum: UInt16; apiCreator: UInt32; apiSelector: UInt16;
- valueP: Pointer; var valueLenP: UInt16): Err; syscall FSTrapCustomControl;
- function FSFilesystemType(fsLibRefNum: UInt16; var filesystemTypeP: UInt32): Err; syscall FSTrapFilesystemType;
- (********************************************************************
- * File Stream APIs:
- ********************************************************************)
- function FSFileCreate(fsLibRefNum: UInt16; volRefNum: UInt16; const pathNameP: PChar): Err; syscall FSTrapFileCreate;
- function FSFileOpen(fsLibRefNum: UInt16; volRefNum: UInt16; const pathNameP: PChar;
- openMode: UInt16; var fileRefP: FileRef): Err; syscall FSTrapFileOpen;
- function FSFileClose(fsLibRefNum: UInt16; fileRef: FileRef): Err; syscall FSTrapFileClose;
- function FSFileRead(fsLibRefNumUInt16: UInt16; fileRef: FileRef; numBytes: UInt32;
- bufBaseP: Pointer; offset: UInt32; dataStoreBased: Boolean;
- var numBytesReadP: UInt32): Err; syscall FSTrapFileRead;
- function FSFileWrite(fsLibRefNum: UInt16; fileRef: FileRef; numBytes: UInt32;
- const dataP: Pointer; var numBytesWrittenP: UInt32): Err; syscall FSTrapFileWrite;
- function FSFileDelete(fsLibRefNum: UInt16; volRefNum: UInt16; const pathNameP: PChar): Err; syscall FSTrapFileDelete;
- function FSFileRename(fsLibRefNum: UInt16; volRefNum: UInt16; const pathNameP: PChar; const newNameP: PChar): Err; syscall FSTrapFileRename;
- function FSFileSeek(fsLibRefNum: UInt16; fileRef: FileRef; origin: FileOrigin; offset: Int32): Err; syscall FSTrapFileSeek;
- function FSFileEOF(fsLibRefNum: UInt16; fileRef: FileRef): Err; syscall FSTrapFileEOF;
- function FSFileTell(fsLibRefNum: UInt16; fileRef: FileRef; var filePosP: UInt32): Err; syscall FSTrapFileTell;
- function FSFileResize(fsLibRefNum: UInt16; fileRef: FileRef; newSize: UInt32): Err; syscall FSTrapFileResize;
- function FSFileGetAttributes(fsLibRefNum: UInt16; fileRef: FileRef; var attributesP: UInt32): Err; syscall FSTrapFileGetAttributes;
- function FSFileSetAttributes(fsLibRefNum: UInt16; fileRef: FileRef; attributes: UInt32): Err; syscall FSTrapFileSetAttributes;
- function FSFileGetDate(fsLibRefNum: UInt16; fileRef: FileRef; whichDate: UInt16; var dateP: UInt32): Err; syscall FSTrapFileGetDate;
- function FSFileSetDate(fsLibRefNum: UInt16; fileRef: FileRef; whichDate: UInt16; date: UInt32): Err; syscall FSTrapFileSetDate;
- function FSFileSize(fsLibRefNum: UInt16; fileRef: FileRef; var fileSizeP: UInt32): Err; syscall FSTrapFileSize;
- (********************************************************************
- * Directory APIs:
- ********************************************************************)
- function FSDirCreate(fsLibRefNum: UInt16; volRefNum: UInt16; const dirNameP: PChar): Err; syscall FSTrapDirCreate;
- (************************************************************
- *
- * MACRO: FSDirDelete
- *
- * DESCRIPTION: Delete a closed directory.
- *
- * PARAMETERS: fsLibRefNum -- FS library reference number
- * volRefNum -- Volume reference number returned by FSVolumeMount
- * pathNameP -- Full path of the directory to be deleted
- *
- * RETURNS: errNone -- no error
- * expErrNotOpen -- FS driver library has not been opened
- * vfsErrFileStillOpen -- Directory is still open
- * vfsErrFileNotFound -- the file could not be found
- * vfsErrVolumeBadRef -- the volume has not been mounted with FSVolumeMount
- *
- *************************************************************)
- function FSDirDelete(fsLibRefNum: UInt16; volRefNum: UInt16; const dirNameP: PChar): Err;
- function FSDirEntryEnumerate(fsLibRefNum: UInt16; dirRef: FileRef; var dirEntryIteratorP: UInt32; var infoP: FileInfoType): Err; syscall FSTrapDirEntryEnumerate;
- (********************************************************************
- * Volume APIs:
- ********************************************************************)
- function FSVolumeFormat(fsLibRefNum: UInt16; vfsMountParamP: VFSAnyMountParamPtr): Err; syscall FSTrapVolumeFormat;
- function FSVolumeMount(fsLibRefNum: UInt16; vfsMountParamP: VFSAnyMountParamPtr): Err; syscall FSTrapVolumeMount;
- function FSVolumeUnmount(fsLibRefNum: UInt16; volRefNum: UInt16): Err; syscall FSTrapVolumeUnmount;
- function FSVolumeInfo(fsLibRefNum: UInt16; volRefNum: UInt16; var volInfoP: VolumeInfoType): Err; syscall FSTrapVolumeInfo;
- function FSVolumeGetLabel(fsLibRefNum: UInt16; volRefNum: UInt16; labelP: PChar; bufLen: UInt16): Err; syscall FSTrapVolumeGetLabel;
- function FSVolumeSetLabel(fsLibRefNum: UInt16; volRefNum: UInt16; const labelP: PChar): Err; syscall FSTrapVolumeSetLabel;
- function FSVolumeSize(fsLibRefNum: UInt16; volRefNum: UInt16; var volumeUsedP: UInt32; var volumeTotalP: UInt32): Err; syscall FSTrapVolumeSize;
- implementation
- function FSDirDelete(fsLibRefNum: UInt16; volRefNum: UInt16; const dirNameP: PChar): Err;
- begin
- FSDirDelete := FSFileDelete(fsLibRefNum, volRefNum, dirNameP);
- end;
- end.
|