NAME
io.ops - I/O Opcodes
DESCRIPTION
Parrot's IO API
Parrot IO API Operations
- close(invar PMC) Close IO object $1
- fdopen(out PMC, in INT, in STR) Create ParrotIO object in $1 as a copy of file descriptor $2.
- getstdin(out PMC) Create a new ParrotIO object for the stdin file descriptor and store it in $1
- getstdout(out PMC) Create a new ParrotIO object for the stdout file descriptor and store it in $1
- getstderr(out PMC) Create a new ParrotIO object for the stderr file descriptor and store it in $1
- setstdin(invar PMC) Sets the standard input for a bare
- setstdout(invar PMC) Sets the standard output for a bare
- setstderr(invar PMC) Sets the standard error for a bare
- open(out PMC, in STR, in STR) Open URL (file, address, database, in core image) named $2 with a mode string in $3 and create an IO object in $1.The mode consists of a string of characters specified in any order:
- open(out PMC, in STR) Open URL (file, address, database, in core image) named $2 with read mode and create an IO object in $1.
- print(in INT)
- print(in NUM)
- print(invar PMC)
- print(in STR) Print $1 to standard output.
- say(in INT)
- say(in NUM)
- say(invar PMC)
- say(in STR) Print $1 to standard output with a trailing newline.
- printerr(in INT)
- printerr(in NUM)
- printerr(in STR)
- printerr(invar PMC) Print $1 to standard error.
- print(invar PMC, in INT)
- print(invar PMC, in NUM)
- print(invar PMC, in STR)
- print(invar PMC, invar PMC) Print $2 on the IO stream object $1.
- read(out STR, in INT) Read up to N bytes from standard input stream
- read(out STR, invar PMC, in INT) Read up to N bytes from IO PMC stream.
- readline(out STR, invar PMC) Read a line up to EOL from filehandle $2. This switches the filehandle to linebuffer-mode.
- peek(out STR) Returns the next byte from standard input, but does not remove it from the stream.
- peek(out STR, invar PMC) Reads the next byte from an IO PMC, but does not remove it from the stream.
- stat(out INT, in STR, in INT)
- stat(out INT, in INT, in INT) Stat the file. Return stat element $3 for file $2 into $1. The queryable items currently are:
- seek(invar PMC, in INT, in INT) seek: Set file position to offset $2 on IO stream $1. 'whence' is indicated by the value in $3. The valid values for 'whence' are:
- seek(invar PMC, in INT, in INT, in INT) 64bit seek: Set file position to offset ($2 << 32 | $3) on IO stream $1. 'whence' is indicated by the value in $4. This allows 64-bit seeks with only 32-bit INTVALS.
- tell(out INT, invar PMC) tell: Get the current file position of stream $2 and store it in $1. On systems where INTVAL is 32bit the result will be truncated if the position is beyond 2 GiB
- tell(out INT, out INT, invar PMC) 64bit tell: Get the current file positon of stream $3 in two parts of 32-bit each ($1 = pos >> 32, $2 = pos & 0xffffffff).
read
op to go to the supplied PMC.
Call getstdin
first if you care about retaining the previous PMC.
print
op to go to the supplied PMC.
Call getstdout
first if you care about retaining the previous PMC.
printerr
op to go to the supplied PMC.
Call getstderr
first if you care about retaining the previous PMC.
r : read w : write a : append (Note: you must specify "wa", not just "a") p : pipe
EXISTS 0 FILESIZE 1 ISDIR 2 ISDEV 3 CREATETIME 4 (Time file was created) ACCESSTIME 5 (Time file was last accessed) MODIFYTIME 6 (Time file data was changed) CHANGETIME 7 (Time file metadata was changed) BACKUPTIME 8 (Time of last backup) UID 9 GID 10
Value Meaning 0 Seek from the beginning of the file 1 Seek from the current position 2 Seek from the end of the file[ Note: the above values for 'whence' is just an educated guess at this point ]