Expose file name and path max lengths in Files.Mod.

This commit is contained in:
David Brown 2018-04-24 18:51:39 +01:00
parent f7904230c9
commit ee01f97392
3 changed files with 28 additions and 1 deletions

View file

@ -54,6 +54,9 @@ MODULE Files; (* J. Templ 1.12. 89/12.4.95 Oberon files mapped onto Unix files
VAR
MaxPathLength-: INTEGER;
MaxNameLength-: INTEGER;
files: POINTER [1] TO FileDesc; (* List of files backed by an OS file, whether open, registered or temporary. *)
tempno: INTEGER;
HOME: ARRAY 1024 OF CHAR;
@ -741,4 +744,6 @@ BEGIN
tempno := -1;
Heap.FileCount := 0;
HOME := ""; Platform.GetEnv("HOME", HOME);
MaxPathLength := Platform.MaxPathLength();
MaxNameLength := Platform.MaxNameLength();
END Files.

View file

@ -44,6 +44,7 @@ PROCEDURE -Aincludeerrno '#include <errno.h>';
PROCEDURE -Astdlib '#include <stdlib.h>';
PROCEDURE -Astdio '#include <stdio.h>';
PROCEDURE -Aerrno '#include <errno.h>';
PROCEDURE -Alimits '#include <limits.h>';
@ -66,7 +67,6 @@ PROCEDURE -EINTR(): ErrorCode 'EINTR';
PROCEDURE TooManyFiles*(e: ErrorCode): BOOLEAN;
BEGIN RETURN (e = EMFILE()) OR (e = ENFILE()) END TooManyFiles;
@ -95,6 +95,17 @@ BEGIN RETURN e = EINTR() END Interrupted;
(* Expose file and path name length limits *)
PROCEDURE -NAMEMAX(): INTEGER 'NAME_MAX';
PROCEDURE -PATHMAX(): INTEGER 'PATH_MAX';
PROCEDURE MaxNameLength*(): INTEGER; BEGIN RETURN NAMEMAX() END MaxNameLength;
PROCEDURE MaxPathLength*(): INTEGER; BEGIN RETURN PATHMAX() END MaxPathLength;
(* OS memory allocaton *)
PROCEDURE -allocate (size: SYSTEM.ADDRESS): SYSTEM.ADDRESS "(ADDRESS)((void*)malloc((size_t)size))";

View file

@ -91,6 +91,17 @@ BEGIN RETURN e = EINTR() END Interrupted;
(* Expose file and path name length limits (same on Windows) *)
PROCEDURE -MAXPATH(): INTEGER 'MAX_PATH';
PROCEDURE MaxNameLength*(): INTEGER; BEGIN RETURN MAXPATH() END MaxNameLength;
PROCEDURE MaxPathLength*(): INTEGER; BEGIN RETURN MAXPATH() END MaxPathLength;
(* OS memory allocaton *)
PROCEDURE -allocate(size: SYSTEM.ADDRESS): SYSTEM.ADDRESS "(ADDRESS)((void*)HeapAlloc(GetProcessHeap(), 0, (size_t)size))";