Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (2) — Plan9 3rd Edition (Vita Nuova)

Media Vault

Software Library

Restoration Projects

Artifacts Sought

KEYRING-GETSTRING(2)

NAME

getstring, putstring, getbytearray, putbytearray, puterror − delimited I/O

SYNOPSIS

include "keyring.m"
keyring:= load Keyring Keyring->PATH;
 getstring:   fn(fd: ref Sys->FD): (string, string);
putstring:   fn(fd: ref Sys->FD, s: string): int;
getbytearray:fn(fd: ref Sys->FD): (array of byte, string);
putbytearray: fn(fd: ref Sys->FD, a: array of byte, n: int): int;
puterror:     fn(fd: ref Sys->FD, s: string): int;

DESCRIPTION

These functions provide delimited I/O for strings, byte arrays and error strings over arbitrary networks. 

­Putstring writes string ­s to fd.  It returns the number of bytes written, or -1 if an error occurred.  Messages written by ­putstring are truncated to 4096 bytes. 

­Getstring reads a string as written by ­putstring from fd and returns a tuple (result,error). If successful, the error string is nil.

­Putbytearray writes the array of bytes ­a to fd. It returns the number of bytes written, or -1 if an error occurred. Messages written by ­putbytearray are truncated to 4096 bytes. 

­Getbytearray reads an array of bytes as written by ­putbytearray from fd and returns a tuple of the form (result,error). If successful, the error string is nil.

­Puterror writes an error string ­s to fd. It can be used in place of ­putstring or ­putbytearray to cause a corresponding ­getstring or ­getbytearray to fail (in the receiving process), forcing them to return the error string s. It may not be longer than Sys->ERRLEN bytes. 

SOURCE

­/interp/keyring.c

DIAGNOSTICS

The output functions return an ­int which is -1 if there was an I/O error, and a non-negative value otherwise.  The input functions return a tuple that includes a string indicating the cause of the error, as the second element of the tuple. 

Plan 9  —  June 06, 2000

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026