STYXCONV(2)                                           STYXCONV(2)

     NAME
          styxconv - convert between old and new Styx

     SYNOPSIS
          include "styxconv.m";
          styxconv := load Styxconv Styxconv->PATH;

          init:     fn();
          styxconv: fn(to: ref Sys->FD, from: ref Sys->FD, pid: chan of int);

     DESCRIPTION
          Styxconv converts between the previous version of the Styx
          protocol, as used for instance in Inferno's Third Edition
          and earlier, and the current version of the protocol, based
          on 9P2000 and defined by intro(5).

          Init must be called before any other function in the module.

          The function styxconv takes two file descriptors.  From must
          be a connection to a file server that serves the original,
          older version of Styx.  To is a connection, perhaps a pipe,
          to something that requires the current protocol; Sys->mount
          for instance (see sys-bind(1)). Styxconv is spawned by the
          caller, to create a process that copies messages between
          from and to, converting as required as it goes.  Its process
          ID is the only message sent on channel pidc; it must be
          received by styxconv's caller.  See the example below.

     EXAMPLE
          Apply styxconv to file descriptor fd connected to an old
          Styx server:

               cvstyx(fd: ref Sys->FD): ref Sys->FD
               {
                    styxconv := load Styxconv Styxconv->PATH;
                    if(styxconv == nil)
                         return nil;
                    p := array[2] of ref Sys->FD;
                    if(sys->pipe(p) < 0)
                         return nil;
                    styxconv->init();
                    pidc := chan of int;
                    spawn styxconv->styxconv(p[1], fd, pidc);
                    <-pidc;
                    return p[0];
               }

     SOURCE
          /appl/lib/styxconv

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

     STYXCONV(2)                                           STYXCONV(2)

     SEE ALSO
          bind(1), sys-bind(2), sys-pipe(2), intro(5)

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