:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : class Os.Platform.Public public Gilda: Portable system calls type Platform in Vc, W32 :Target and host platforms type Attribute is &Status information for a file or directory. Dir = -1 word, & 0 if a file, 1 if a directory, & -1 if not found, -2 if a unix link. Date word, &OS encoded time of the last modification. Size cell, &Size of a file Read Bit, &Path has read permission Write Bit, &Path has write permission Execute Bit, &An executable file File |= 0, &Path is a file Directory |= 1, &Path is a directory Missing |= -1, &Path item is missing Link |= -2, &Path is a Unix link Is( .Member ) => $Dir = $.Member :Test if a File, Directory, Missing, or Link type C.String is &Structure for accessing a null terminated string. @C[?] byte :At the C string. type C.String.Put is &Structure for writing to a null terminated string. *C[?] byte :C string Wizard. type C.String.Cast is &Structure for converting strings. @C[?] = 0 byte, &At the C string. Head[span(@) - 1] byte :Storage for a short string. global New.Line |= "^M^J", &Preferred line separator for output +Path.Slash = '\' Byte, &Display slash format; may be '/' or '\' +Home.Path string, &Full home (lower case, trailing path.slash) +Home.Share string, &Home.Drive alias (lower; no trailing slash) +Home.Drive byte, &Drive letter for the home path (upper case) Null.Device |= "nul", &File name used to discard output Browser |= "EXPLORER.EXE", &File system browser application Special |= &Path characters requiring quotes " ""'`*#?!%=~,(){}[]<>|^^&;" global Library.Suffix |= ".lib", &Static library file suffix Dynamic.Suffix |= ".dll", &Dynamic library file suffix Environment |= ';' :Environment variable list delimiter : :............................................................................... :::::::::::::::::::::::::::: Common C Procedures ::::::::::::::::::::::::::::: : function TO.STRING: Copy a null terminated C string to a Gilda string. entry C[?] byte :C string address; contiguous bytes, ending in a 0 byte exit Text string :Gilda string : :............................................................................... : function TO.C.STRING: Copy a Gilda string to a C string. entry String :Gilda string containing no zero bytes exit C[?] = ? byte :Array for the C string: 0 to length[ $ ] + 1 : : Fault if the Gilda string contains an zero bytes. :............................................................................... : function CAST_TYPE: Here to suppress the compile; only use as an alias.??? entry From[0] byte :Address to be cast exit *To[?] byte :Same address; different type via an alias. : :............................................................................... : method "ERROREXIT": Fatal exit from C code. entry Message[?] byte :Exit message : :............................................................................... :::::::::::::::::::::::::::: File Procedures ::::::::::::::::::::::::::::::::: : method FILE.ATTRIBUTE: Find a file on the path. I32 version. change Path string : In - Os path directory (end with a slash). :Out - Os path of a file if found; else junk. entry File string :File to look up on the path search list. exit Attribute :File information. Info..Dir = 0 if a match. : :............................................................................... : function FILE.TIME: Convert an encoded time into a 12 character format. entry Time word :Seconds since the epoch. exit Form string : :............................................................................... : function FILE.SIZE: Get the number of bytes in a file. entry String :OS Path name of the file to check. exit Size cell :Size of the file or < 0 if an error. : :............................................................................... : method FILE_INDEX: Returns the current file position. entry File :File Id exit Index[0] cell :File position : :............................................................................... : function PROGRAM.PATH: Get the path of the program that calls this function. exit Path string :Tame relative OS path (forward slashes). : :............................................................................... : method PROGRAM_PATH pure: Get the path of the program that calls this method. change Text[?] byte :Tame relative OS path (forward slashes). : :............................................................................... : method IS.PROGRAM.GRAPHICAL: Determine if a program runs in a window. entry Program string :OS path name of the file to check. exit Window Bit :1 - A window program; else 0. : :............................................................................... : method IS.PROGRAM.FILE: Determine if a file is a program or not. entry File string :OS path name of the file to check. exit Program Bit :A program if On, else 0. : :............................................................................... : method DUAL.HIDDEN: Noop on Windows. Hidden is a file attribute. entry Dual string :Dual path name (may be wild). change Hidden Bit :Unchanged. : :.............................................................................. : method TOUCH.FILE: Set the file date to now. entry File string : :............................................................................... : method MOVE.FILE.STATUS: Move a file and return the status. entry From string, To string exit Status[0] byte :............................................................................... : method COPY.FILE.STATUS: Copy a file and return the status. entry From string, To string exit Status[0] byte :............................................................................... :::::::::::::::::::::: Directory Procedures :::::::::::::::::::::::::::::::::: : method MAKE.DIRECTORY: Create a new directory. entry Path string :Os path of the directory to make. : :............................................................................... : method DELETE.EMPTY.DIRECTORY: Delete an empty directory. entry Directory string exit Status byte : 0 - Okay : 1 - No permission : 2 - Can't delete. : 3 - Misc. Error. : 4 - Directory in use. : 5 - Directory not empty. : 6 - Write protected drive. : :............................................................................... : method OPEN_DIRECTORY: Begin scanning a directory. entry Id[0] Directory.Id, &uint32 * Text[?] byte : :............................................................................... : method NEXT_DIRECTORY: Get the next item in a directory. change Id[0] Directory.Id, &uint32 * Text[0] C.String :uint8 ** : :............................................................................... : method NEXT_ATTRIBUTE: Get the next item in a directory with attributes. change Id[0] Directory.Id, &At an open directory id. Text[0] C.String, &Place to return the string address or a null string if none. Attribute :path information : :............................................................................... : method CLOSE_DIRECTORY pure: Close a directory scan. change Id[0] Directory.Id : :............................................................................... : method SAVE_DIRECTORY: Temporarily save the directory scan state. : :............................................................................... : method RESTORE_DIRECTORY: Restore the scan state saved by Save_Directory. : :............................................................................... ::::::::::::::::::::::::::::::: Path Procedures :::::::::::::::::::::::::::::: : method RENAME.PATH: Rename a file or directory. entry Old string, New string exit Status[0] byte : :............................................................................... : method RENAME_PATH: Rename a file or directory. entry Old[?] byte, New[?] byte change Status[0] byte : :............................................................................... : function PATH.ATTRIBUTE: Get status information about a file or directory. entry Path string :O.S. relative path (no wildcards, Os slashes). exit Attribute : :............................................................................... : method IS.HIDDEN.PATH: See if an OS path is hidden. entry Os.Path string :Tame OS path to check. exit Hidden Bit : :............................................................................... : method IS.REMOTE.PATH: See if an OS path is a shared net path. entry Os.Path string :Tame OS path to check. exit Remote Bit :on for //, ///, ////, //server, //server/share : :............................................................................... : method IS.NETWORK.PATH: See if an OS path is a shared net path. entry Os.Path string :Tame OS path to check. exit Shared Bit :1 - //, ///, ////, //server, //server/share : :............................................................................... : method FORM.BASE.OS.PATH pure: Windows version converts slashes to back slashes. change Path string :In - Os Path to convert; Out - Cannonical OS path. : :............................................................................... : method FORM.LONG.PATH: Convert a windows 8.3 name to a long name. change Path string : In - Os path (Tame, relative, back slash, no trail). :Out - A path name beginning from the root. : : Unchanged on nix :............................................................................... : method DEFORM.PATH.NAME: Extract the Os path name from the display name. change Path string : In - Display name; which may contain quoted : elements or a trailing tilda indicating an : executable (any slashes). :Out - Raw os path name (slashes are unchanged). : :............................................................................... :::::::::::::::::::::::::::: Utility Procedures :::::::::::::::::::::::::::::: : function TIME_1970: Number of seconds since UTC 1/1/1970 exit Time cell : :............................................................................... : method SLEEP_MS: Pause a process. entry Time word :Number of milliseconds to pause. : :............................................................................... : method WARNING_BELL: Beep : :............................................................................... : method LOGOUT_NOW: Exit a process with extreme predjudice. : :............................................................................... : method LOGOUT: Exit a process. : :............................................................................... : method INSERT_CLIP: Get text from the system clipboard. : :............................................................................... : method COPY_CLIP: Save text to the sytem clipboard. entry Size word :Number of characters (non-zero). : :............................................................................... method EXIT_PROGRAM entry Status = 0 word : :............................................................................... : function GET.HOST: Get the host machine name. exit Host string :The host machine name (upper case). : :............................................................................... : function GET.WORK: Get the current working directory. exit Path string :Tame relative path (trailing forward slash). : :............................................................................... : method SHELL.PATH: Get the path for a verb. entry Verb string exit Path string :O.S. Path : :............................................................................... : method SHELL.FILE: Launch a file base on it's type. entry Command string :File path exit Status Bit :Status returned from the command. : :............................................................................... : method SYSTEM.SHELL: Pass a command to the system shell. entry Command string :Command to execute. exit Status word :Status returned from the command. : :............................................................................... : method RUN_NET_DIRECTORY: Cache accessible network directories. : : Run once to start caching in the background. : Before accessing a network path, run again to wait for caching to complete. :............................................................................... : method RESET_NET_DIRECTORY: Add new accessible network directories to the Cache. : Existing hosts shares are not removed. Only new items are added. : Before accessing a network path, run RUN_NET_DIRECTORY to wait for caching to complete. : :............................................................................... end