CLibraryDefs: DEFINITIONS = {
-- Types
CChar: TYPE = INTEGER;
CInt: TYPE = LONG INTEGER;
CString: TYPE = LONG POINTER TO INTEGER;
FILE: TYPE = LONG INTEGER;
-- Constants
cNULL: LONG INTEGER = 0;
EOF: CInt = -1;
stdin: FILE = 0;
stdout: FILE = 1;
stderr: FILE = 2;
-- System Calls
chdir: PROCEDURE [directoryName: CString]
RETURNS [returnCode: CInt];
chmod: PROCEDURE [fileName: CString, fileMode: CInt]
RETURNS [returnCode: CInt];
close: PROCEDURE [fileDescriptor: FILE]
RETURNS [returnCode: CInt];
creat: PROCEDURE [fileName: CString, fileMode: CInt]
RETURNS [fileDescriptor: FILE];
dup: PROCEDURE [oldFileDescriptor: FILE]
RETURNS [newFileDescriptor: FILE];
dup2: PROCEDURE [fileDescriptor1, fileDescriptor2: FILE]
RETURNS [fileDescriptor: FILE];
execv: PROCEDURE [codeFileName: CString, argv: LONG POINTER TO CString]
RETURNS [returnCode: CInt];
exit: PROCEDURE [returnCode: CInt];
fork: PROCEDURE []
RETURNS [processDescriptor: CInt];
fstat: PROCEDURE [fileDescriptor: FILE, buffer: LONG POINTER]
RETURNS [returnCode: CInt];
link: PROCEDURE [fileName1, fileName2: CString]
RETURNS [returnCode: CInt];
lseek: PROCEDURE [fileDescriptor: FILE, offset, whence: CInt]
RETURNS [filePosition: CInt];
open: PROCEDURE [fileName: CString, fileMode: CInt]
RETURNS [fileDescriptor: FILE];
pipe: PROCEDURE [fileDescriptorArray: LONG POINTER TO FILE]
RETURNS [returnCode: CInt];
read: PROCEDURE [fileDescriptor: FILE, buffer: CString, nBytes: CInt]
RETURNS [nBytesRead: CInt];
signal: PROCEDURE [signalNumber: CInt, functionToCall: LONG POINTER]
RETURNS [returnCode: CInt];
stat: PROCEDURE [fileName: CString, buffer: LONG POINTER]
RETURNS [returnCode: CInt];
time: PROCEDURE [timeBuffer: LONG POINTER TO CInt]
RETURNS [timeValue: CInt];
umask: PROCEDURE [complementedMode: CInt];
unlink: PROCEDURE [fileName: CString]
RETURNS [returnCode: CInt];
wait: PROCEDURE [returnCode: LONG POINTER TO CInt]
RETURNS [processDescriptor: CInt];
write: PROCEDURE [fileDescriptor: FILE, buffer: CString, nBytes: CInt]
RETURNS [nBytesWritten: CInt];
-- Library Functions and Procedures
abs: PROCEDURE [i: CInt]
RETURNS [AbsI: CInt];
atoi: PROCEDURE [numberPointer: CString]
RETURNS [number: CInt];
atol: PROCEDURE [numberPointer: CString]
RETURNS [number: CInt];
ctime: PROCEDURE [time: LONG POINTER TO CInt]
RETURNS [timeString: CString];
fclose: PROCEDURE [stream: FILE];
fflush: PROCEDURE [stream: FILE];
fgetc: PROCEDURE [stream: FILE]
RETURNS [char: CChar];
fgets: PROCEDURE [string: CString, length: CInt,stream: FILE]
RETURNS [sameString: CString];
fopen: PROCEDURE [fileName, type: CString]
RETURNS [stream: FILE];
fputc: PROCEDURE [char: CChar, stream: FILE];
fputs: PROCEDURE [string: CString, stream: FILE];
fprintf: PROCEDURE [stream: FILE, format: CString,
N1: LONG UNSPECIFIED ← 17777777777B,
N2: LONG UNSPECIFIED ← 17777777777B,
N3: LONG UNSPECIFIED ← 17777777777B,
N4: LONG UNSPECIFIED ← 17777777777B,
N5: LONG UNSPECIFIED ← 17777777777B,
N6: LONG UNSPECIFIED ← 17777777777B,
N7: LONG UNSPECIFIED ← 17777777777B,
N8: LONG UNSPECIFIED ← 17777777777B];
fread: PROCEDURE [buffer: LONG POINTER, sizeOfBufferItems,
nItems: CInt, stream: FILE]
RETURNS [itemsRead: CInt];
free: PROCEDURE [LONG POINTER];
freopen: PROCEDURE [fileName, type: LONG POINTER TO INTEGER,
oldStream: FILE]
RETURNS [newStream: FILE];
fscanf: PROCEDURE [stream: FILE, format: CString,
N1: LONG POINTER ← NIL,
N2: LONG POINTER ← NIL,
N3: LONG POINTER ← NIL,
N4: LONG POINTER ← NIL,
N5: LONG POINTER ← NIL,
N6: LONG POINTER ← NIL,
N7: LONG POINTER ← NIL,
N8: LONG POINTER ← NIL];
fseek: PROCEDURE [stream: FILE, offset, ptrName: CInt]
RETURNS [itemsRead: CInt];
fwrite: PROCEDURE [buffer: LONG POINTER, sizeOfBufferItems,
nItems: CInt, stream: FILE]
RETURNS [itemsWritten: CInt];
getc: PROCEDURE [stream: FILE]
RETURNS [char: CChar];
getchar: PROCEDURE []
RETURNS [char: CChar];
gets: PROCEDURE [string: CString]
RETURNS [sameString: CString];
isalpha: PROCEDURE [char: CChar]
RETURNS [logical: CInt];
isdigit: PROCEDURE [char: CChar]
RETURNS [logical: CInt];
islower: PROCEDURE [char: CChar]
RETURNS [logical: CInt];
isupper: PROCEDURE [char: CChar]
RETURNS [logical: CInt];
malloc: PROCEDURE [size: CInt]
RETURNS [LONG POINTER];
perror: PROCEDURE [string: CString];
printf: PROCEDURE [format: CString,
N1: LONG UNSPECIFIED ← 17777777777B,
N2: LONG UNSPECIFIED ← 17777777777B,
N3: LONG UNSPECIFIED ← 17777777777B,
N4: LONG UNSPECIFIED ← 17777777777B,
N5: LONG UNSPECIFIED ← 17777777777B,
N6: LONG UNSPECIFIED ← 17777777777B,
N7: LONG UNSPECIFIED ← 17777777777B,
N8: LONG UNSPECIFIED ← 17777777777B];
putc: PROCEDURE [char: CChar, stream: FILE];
putchar: PROCEDURE [char: CChar];
puts: PROCEDURE [string: CString, stream: FILE];
scanf: PROCEDURE [format: CString,
N1: LONG POINTER ← NIL,
N2: LONG POINTER ← NIL,
N3: LONG POINTER ← NIL,
N4: LONG POINTER ← NIL,
N5: LONG POINTER ← NIL,
N6: LONG POINTER ← NIL,
N7: LONG POINTER ← NIL,
N8: LONG POINTER ← NIL];
setbuf: PROCEDURE [stream: FILE, buffer: LONG POINTER];
strcat: PROCEDURE [s1, s2: CString]
RETURNS [result: CString];
strcmp: PROCEDURE [s1, s2: CString]
RETURNS [result: CInt];
strcpy: PROCEDURE [s1, s2: CString]
RETURNS [result: CString];
strlen: PROCEDURE [s1, s2: CString]
RETURNS [stringLength: CInt];
toupper: PROCEDURE [cin: CChar]
RETURNS [cout: CChar];
-- Artifacts of the simulation of Unix in Tajo
Error: PROCEDURE [s: LONG STRING];
GetArgs: PROCEDURE [argc: LONG POINTER TO LONG INTEGER,
argv: LONG POINTER TO LONG POINTER TO LONG POINTER TO INTEGER];
}.