KEYRING-GETSTRING(2)                         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 I/O for strings, byte arrays and
          error strings over network connections that provide a record
          structure for communication (as provided for arbitrary
          networks by ssl(3)).

          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 pro-
          cess), 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

     Page 1                       Plan 9            (printed 12/21/24)

     KEYRING-GETSTRING(2)                         KEYRING-GETSTRING(2)

          the cause of the error, as the second element of the tuple.

     Page 2                       Plan 9            (printed 12/21/24)