Home » Archimedes archive » Acorn User » AU 1997-Xmas B.adf » PD » NetPlex/!Netplex/SocketFS/!Readme

NetPlex/!Netplex/SocketFS/!Readme

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1997-Xmas B.adf » PD
Filename: NetPlex/!Netplex/SocketFS/!Readme
Read OK:
File size: 1B35 bytes
Load address: 0000
Exec address: 0000
File contents
SocketFS Readme
===============


This is the 'Readme' for the first ALPHA release of socketfs, a socket
filing system for RISC-OS.
As it is the first ALPHA release, socketFS undoubtely has many bugs,
please feel free to e-mail with details of any (or all) bugs you find,
although I would ask you to first check see if the Bugs is alreadly
known by checking the distrubutions BUGS and FAQ files.
I would also ask you to e-mail me any and let me know if you find it
useful.

What does it do then?
---------------------
Quite simply socketfs allows you to open a BSD socket as if it were a
file. SocketFS allows multiple type of addressing to be using and you
can easily add you own function to map filenames to sockets, although at
this stage new functions have to be assembled in, the underlying
mechanism is extensiable and if enough interest is shown, a
SWI SocketFS_RegisterAddressType or simliar could be implemented.
SocketFS uses the specialfield to decide which mapping to use, currently
the only mapping supported is 'IPv4'. This is probaly a bad name for it
as the mapping is really based on gethostbyname(). This is also the
default specialfield. Using any other special field will result in a
file not found or similiar.

Currently any socket which you can open with a Internet module (eg. Acorn
Internet or FreeNet) can be opened with socketfs.

How do I use it?
----------------
Like any other streaming filesystem. Open a file and write to it, the
only clever bit you need to know about is the filename.
Lets examine a possible  filename field by field. The general format is

   socketFS#map::proto.$.remote_host\rport.local_host\lport

  map         - Defaults to 'IPv4', and can be either 'IPv4' or 's2fd'.
                T

  proto       - Generally this will be tcp, although you might be able to
                get some use out of udp. There are others but these are
                the only ones the Internet modules support (AFAIK anyway)
                ergo the only ones I support. Be aware if you try udp or
                other protocol sockets are created as SOCK_STREAM, which
                might cause you problems.
                The 's2fd' mapping currently ignores thsi field, although may
                use it for flags in a later module version.

  remote_host - This is the machine you want to connect to. Specify the
                host name the same way as you would for any usual
                internet program but replace the '.'s with '/' in the
                reverse manner to risc-os usually does for UNIX
                filenames. The means www.demon.co.uk becomes
                www/demon/co/uk . Note that '/' aren't required if the
                hostname has no dots so just 'localhost will work.
                In 's2fd' this is a socket handle and a new filehandle
                is then return bound to this socket.

  rport       - This is the port on the remote machine you want to
                connect to. You can specify it by service name or
                number. In the example above you would specify '80' or
                'www'. (Assuming you where try to download web pages
                anyway.)

  local_host  - This is the first optional part, and specifies which
                interface on your local machine you wish to initiate the
                connection from. It uses the same format to remote_host.

  lport       - The is another optional part, an specifies which port
                the socket uses on your local machine. It uses the same
                format as rport. This and the previous part are passed
                to the internet module using bind.


 This means if you want to save a web page off, something like this
could do the trick. (IN Basic!)

    File%=OPENOUT("ADFS::4.$.webpage")
    Web%=OPENUP("socketfs::tcp.$.www/demon/co/uk\www")
    A$ = "GET /index.html"
    BPUT#Web%,A$
    BPUT#Web%,10 : REM Write end of line...
    WHILE NOT EOF#Web%
      BPUT#File%,BGET#Web%
     ENDWHILE
    CLOSE#Web% :REM Release this at end of tcp stream...
    CLOSE#File%
    OSCLI("settype adfs::4.$.webpage faf"):REM faf=html


Ok, So what use is it
---------------------
Well it makes internet sockets slightly easier to use, and allow you
to treat them like files. Specifically the UnixLib people might find it
useful to allow file operations on sockets as you can in Unix. Although
at the moment listen(), accept() are slightly difficult. 


Is there anything it can't do that I should now about
-----------------------------------------------------
I haven't spend anytime working on the implentation of whole file
operations, so *save may or may not work. NO Guarantees.
Also socketfs: does not support renaming as IP essentialy doesn't
allow streams to move between sockets (or interfaces). I might use this
file system semantics for accept() later though.
Finally it has one other feature, the current version of the module uses
blocking sockets, although this means it will wait for data on a socket
withouy returning a error if there is none waiting. One of two things
will then happen, first it will hang the whole machine, or if you're running
freenet or Acorn Internet 5.00 or higher just that taskwindow. 
Freenet still has the disadvantage that fileswitch/taskwindow seem to 
block other FS calls to thesame handle while the first is waiting. This 
is fine for simplex and  half-duplex protocols but if you need full-duplex
across Taskwindows, your could recompile the module with -DFIOMODE=FIONBIO
which will force the module to use non-blocking sockets as default.

Final Comments
--------------
It would be nice to add ioctl, and socket_select fuctionality to the
filing system, but I haven't come up with a nice way of doing those
yet. While my own SWI interace would work - bear in mind that socketfs uses
fileswitch to do the SocketHandle<-->FileHandle mapping, so socketfs can't
do this itself as it knows nothing about fileswitch's handles. 
I suppose it would be possible to attribute and filetype, assigning different
meanings to these than is usual, but it's not a nice solution.

I'll take a moment here to remind you that socketFS is
distrubuted under the conditions outlined in the accompanying file called
'COPYING', currently this is version 2 of the GPL, however I find GPLs virus
like ablities a little harsh for my tastes, so you'll find me relatively open
on allowing limited distributions under other licenses. 
I would also ask you to let me know your experiences, with the software 
by e-mail if possible.
I will also welcome bug reports and patches (context diffs please), and 
feature requests. I can be reached at <rgammans@compsurg.demon.co.uk>,  
and could I please ask if you do e-mail me, can you mention socketfs in
the subject line.

Roger Gammans
18 Aug 1997
00000000  53 6f 63 6b 65 74 46 53  20 52 65 61 64 6d 65 0d  |SocketFS Readme.|
00000010  0a 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |.===============|
00000020  0d 0a 0d 0a 0d 0a 54 68  69 73 20 69 73 20 74 68  |......This is th|
00000030  65 20 27 52 65 61 64 6d  65 27 20 66 6f 72 20 74  |e 'Readme' for t|
00000040  68 65 20 66 69 72 73 74  20 41 4c 50 48 41 20 72  |he first ALPHA r|
00000050  65 6c 65 61 73 65 20 6f  66 20 73 6f 63 6b 65 74  |elease of socket|
00000060  66 73 2c 20 61 20 73 6f  63 6b 65 74 0d 0a 66 69  |fs, a socket..fi|
00000070  6c 69 6e 67 20 73 79 73  74 65 6d 20 66 6f 72 20  |ling system for |
00000080  52 49 53 43 2d 4f 53 2e  0d 0a 41 73 20 69 74 20  |RISC-OS...As it |
00000090  69 73 20 74 68 65 20 66  69 72 73 74 20 41 4c 50  |is the first ALP|
000000a0  48 41 20 72 65 6c 65 61  73 65 2c 20 73 6f 63 6b  |HA release, sock|
000000b0  65 74 46 53 20 75 6e 64  6f 75 62 74 65 6c 79 20  |etFS undoubtely |
000000c0  68 61 73 20 6d 61 6e 79  20 62 75 67 73 2c 0d 0a  |has many bugs,..|
000000d0  70 6c 65 61 73 65 20 66  65 65 6c 20 66 72 65 65  |please feel free|
000000e0  20 74 6f 20 65 2d 6d 61  69 6c 20 77 69 74 68 20  | to e-mail with |
000000f0  64 65 74 61 69 6c 73 20  6f 66 20 61 6e 79 20 28  |details of any (|
00000100  6f 72 20 61 6c 6c 29 20  62 75 67 73 20 79 6f 75  |or all) bugs you|
00000110  20 66 69 6e 64 2c 0d 0a  61 6c 74 68 6f 75 67 68  | find,..although|
00000120  20 49 20 77 6f 75 6c 64  20 61 73 6b 20 79 6f 75  | I would ask you|
00000130  20 74 6f 20 66 69 72 73  74 20 63 68 65 63 6b 20  | to first check |
00000140  73 65 65 20 69 66 20 74  68 65 20 42 75 67 73 20  |see if the Bugs |
00000150  69 73 20 61 6c 72 65 61  64 6c 79 0d 0a 6b 6e 6f  |is alreadly..kno|
00000160  77 6e 20 62 79 20 63 68  65 63 6b 69 6e 67 20 74  |wn by checking t|
00000170  68 65 20 64 69 73 74 72  75 62 75 74 69 6f 6e 73  |he distrubutions|
00000180  20 42 55 47 53 20 61 6e  64 20 46 41 51 20 66 69  | BUGS and FAQ fi|
00000190  6c 65 73 2e 0d 0a 49 20  77 6f 75 6c 64 20 61 6c  |les...I would al|
000001a0  73 6f 20 61 73 6b 20 79  6f 75 20 74 6f 20 65 2d  |so ask you to e-|
000001b0  6d 61 69 6c 20 6d 65 20  61 6e 79 20 61 6e 64 20  |mail me any and |
000001c0  6c 65 74 20 6d 65 20 6b  6e 6f 77 20 69 66 20 79  |let me know if y|
000001d0  6f 75 20 66 69 6e 64 20  69 74 0d 0a 75 73 65 66  |ou find it..usef|
000001e0  75 6c 2e 0d 0a 0d 0a 57  68 61 74 20 64 6f 65 73  |ul.....What does|
000001f0  20 69 74 20 64 6f 20 74  68 65 6e 3f 0d 0a 2d 2d  | it do then?..--|
00000200  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000210  2d 2d 2d 0d 0a 51 75 69  74 65 20 73 69 6d 70 6c  |---..Quite simpl|
00000220  79 20 73 6f 63 6b 65 74  66 73 20 61 6c 6c 6f 77  |y socketfs allow|
00000230  73 20 79 6f 75 20 74 6f  20 6f 70 65 6e 20 61 20  |s you to open a |
00000240  42 53 44 20 73 6f 63 6b  65 74 20 61 73 20 69 66  |BSD socket as if|
00000250  20 69 74 20 77 65 72 65  20 61 0d 0a 66 69 6c 65  | it were a..file|
00000260  2e 20 53 6f 63 6b 65 74  46 53 20 61 6c 6c 6f 77  |. SocketFS allow|
00000270  73 20 6d 75 6c 74 69 70  6c 65 20 74 79 70 65 20  |s multiple type |
00000280  6f 66 20 61 64 64 72 65  73 73 69 6e 67 20 74 6f  |of addressing to|
00000290  20 62 65 20 75 73 69 6e  67 20 61 6e 64 20 79 6f  | be using and yo|
000002a0  75 0d 0a 63 61 6e 20 65  61 73 69 6c 79 20 61 64  |u..can easily ad|
000002b0  64 20 79 6f 75 20 6f 77  6e 20 66 75 6e 63 74 69  |d you own functi|
000002c0  6f 6e 20 74 6f 20 6d 61  70 20 66 69 6c 65 6e 61  |on to map filena|
000002d0  6d 65 73 20 74 6f 20 73  6f 63 6b 65 74 73 2c 20  |mes to sockets, |
000002e0  61 6c 74 68 6f 75 67 68  20 61 74 0d 0a 74 68 69  |although at..thi|
000002f0  73 20 73 74 61 67 65 20  6e 65 77 20 66 75 6e 63  |s stage new func|
00000300  74 69 6f 6e 73 20 68 61  76 65 20 74 6f 20 62 65  |tions have to be|
00000310  20 61 73 73 65 6d 62 6c  65 64 20 69 6e 2c 20 74  | assembled in, t|
00000320  68 65 20 75 6e 64 65 72  6c 79 69 6e 67 0d 0a 6d  |he underlying..m|
00000330  65 63 68 61 6e 69 73 6d  20 69 73 20 65 78 74 65  |echanism is exte|
00000340  6e 73 69 61 62 6c 65 20  61 6e 64 20 69 66 20 65  |nsiable and if e|
00000350  6e 6f 75 67 68 20 69 6e  74 65 72 65 73 74 20 69  |nough interest i|
00000360  73 20 73 68 6f 77 6e 2c  20 61 0d 0a 53 57 49 20  |s shown, a..SWI |
00000370  53 6f 63 6b 65 74 46 53  5f 52 65 67 69 73 74 65  |SocketFS_Registe|
00000380  72 41 64 64 72 65 73 73  54 79 70 65 20 6f 72 20  |rAddressType or |
00000390  73 69 6d 6c 69 61 72 20  63 6f 75 6c 64 20 62 65  |simliar could be|
000003a0  20 69 6d 70 6c 65 6d 65  6e 74 65 64 2e 0d 0a 53  | implemented...S|
000003b0  6f 63 6b 65 74 46 53 20  75 73 65 73 20 74 68 65  |ocketFS uses the|
000003c0  20 73 70 65 63 69 61 6c  66 69 65 6c 64 20 74 6f  | specialfield to|
000003d0  20 64 65 63 69 64 65 20  77 68 69 63 68 20 6d 61  | decide which ma|
000003e0  70 70 69 6e 67 20 74 6f  20 75 73 65 2c 20 63 75  |pping to use, cu|
000003f0  72 72 65 6e 74 6c 79 0d  0a 74 68 65 20 6f 6e 6c  |rrently..the onl|
00000400  79 20 6d 61 70 70 69 6e  67 20 73 75 70 70 6f 72  |y mapping suppor|
00000410  74 65 64 20 69 73 20 27  49 50 76 34 27 2e 20 54  |ted is 'IPv4'. T|
00000420  68 69 73 20 69 73 20 70  72 6f 62 61 6c 79 20 61  |his is probaly a|
00000430  20 62 61 64 20 6e 61 6d  65 20 66 6f 72 20 69 74  | bad name for it|
00000440  0d 0a 61 73 20 74 68 65  20 6d 61 70 70 69 6e 67  |..as the mapping|
00000450  20 69 73 20 72 65 61 6c  6c 79 20 62 61 73 65 64  | is really based|
00000460  20 6f 6e 20 67 65 74 68  6f 73 74 62 79 6e 61 6d  | on gethostbynam|
00000470  65 28 29 2e 20 54 68 69  73 20 69 73 20 61 6c 73  |e(). This is als|
00000480  6f 20 74 68 65 0d 0a 64  65 66 61 75 6c 74 20 73  |o the..default s|
00000490  70 65 63 69 61 6c 66 69  65 6c 64 2e 20 55 73 69  |pecialfield. Usi|
000004a0  6e 67 20 61 6e 79 20 6f  74 68 65 72 20 73 70 65  |ng any other spe|
000004b0  63 69 61 6c 20 66 69 65  6c 64 20 77 69 6c 6c 20  |cial field will |
000004c0  72 65 73 75 6c 74 20 69  6e 20 61 0d 0a 66 69 6c  |result in a..fil|
000004d0  65 20 6e 6f 74 20 66 6f  75 6e 64 20 6f 72 20 73  |e not found or s|
000004e0  69 6d 69 6c 69 61 72 2e  0d 0a 0d 0a 43 75 72 72  |imiliar.....Curr|
000004f0  65 6e 74 6c 79 20 61 6e  79 20 73 6f 63 6b 65 74  |ently any socket|
00000500  20 77 68 69 63 68 20 79  6f 75 20 63 61 6e 20 6f  | which you can o|
00000510  70 65 6e 20 77 69 74 68  20 61 20 49 6e 74 65 72  |pen with a Inter|
00000520  6e 65 74 20 6d 6f 64 75  6c 65 20 28 65 67 2e 20  |net module (eg. |
00000530  41 63 6f 72 6e 0d 0a 49  6e 74 65 72 6e 65 74 20  |Acorn..Internet |
00000540  6f 72 20 46 72 65 65 4e  65 74 29 20 63 61 6e 20  |or FreeNet) can |
00000550  62 65 20 6f 70 65 6e 65  64 20 77 69 74 68 20 73  |be opened with s|
00000560  6f 63 6b 65 74 66 73 2e  0d 0a 0d 0a 48 6f 77 20  |ocketfs.....How |
00000570  64 6f 20 49 20 75 73 65  20 69 74 3f 0d 0a 2d 2d  |do I use it?..--|
00000580  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 0a  |--------------..|
00000590  4c 69 6b 65 20 61 6e 79  20 6f 74 68 65 72 20 73  |Like any other s|
000005a0  74 72 65 61 6d 69 6e 67  20 66 69 6c 65 73 79 73  |treaming filesys|
000005b0  74 65 6d 2e 20 4f 70 65  6e 20 61 20 66 69 6c 65  |tem. Open a file|
000005c0  20 61 6e 64 20 77 72 69  74 65 20 74 6f 20 69 74  | and write to it|
000005d0  2c 20 74 68 65 0d 0a 6f  6e 6c 79 20 63 6c 65 76  |, the..only clev|
000005e0  65 72 20 62 69 74 20 79  6f 75 20 6e 65 65 64 20  |er bit you need |
000005f0  74 6f 20 6b 6e 6f 77 20  61 62 6f 75 74 20 69 73  |to know about is|
00000600  20 74 68 65 20 66 69 6c  65 6e 61 6d 65 2e 0d 0a  | the filename...|
00000610  4c 65 74 73 20 65 78 61  6d 69 6e 65 20 61 20 70  |Lets examine a p|
00000620  6f 73 73 69 62 6c 65 20  20 66 69 6c 65 6e 61 6d  |ossible  filenam|
00000630  65 20 66 69 65 6c 64 20  62 79 20 66 69 65 6c 64  |e field by field|
00000640  2e 20 54 68 65 20 67 65  6e 65 72 61 6c 20 66 6f  |. The general fo|
00000650  72 6d 61 74 20 69 73 0d  0a 0d 0a 20 20 20 73 6f  |rmat is....   so|
00000660  63 6b 65 74 46 53 23 6d  61 70 3a 3a 70 72 6f 74  |cketFS#map::prot|
00000670  6f 2e 24 2e 72 65 6d 6f  74 65 5f 68 6f 73 74 5c  |o.$.remote_host\|
00000680  72 70 6f 72 74 2e 6c 6f  63 61 6c 5f 68 6f 73 74  |rport.local_host|
00000690  5c 6c 70 6f 72 74 0d 0a  0d 0a 20 20 6d 61 70 20  |\lport....  map |
000006a0  20 20 20 20 20 20 20 20  2d 20 44 65 66 61 75 6c  |        - Defaul|
000006b0  74 73 20 74 6f 20 27 49  50 76 34 27 2c 20 61 6e  |ts to 'IPv4', an|
000006c0  64 20 63 61 6e 20 62 65  20 65 69 74 68 65 72 20  |d can be either |
000006d0  27 49 50 76 34 27 20 6f  72 20 27 73 32 66 64 27  |'IPv4' or 's2fd'|
000006e0  2e 0d 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |...             |
000006f0  20 20 20 54 0d 0a 0d 0a  20 20 70 72 6f 74 6f 20  |   T....  proto |
00000700  20 20 20 20 20 20 2d 20  47 65 6e 65 72 61 6c 6c  |      - Generall|
00000710  79 20 74 68 69 73 20 77  69 6c 6c 20 62 65 20 74  |y this will be t|
00000720  63 70 2c 20 61 6c 74 68  6f 75 67 68 20 79 6f 75  |cp, although you|
00000730  20 6d 69 67 68 74 20 62  65 20 61 62 6c 65 20 74  | might be able t|
00000740  6f 0d 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |o..             |
00000750  20 20 20 67 65 74 20 73  6f 6d 65 20 75 73 65 20  |   get some use |
00000760  6f 75 74 20 6f 66 20 75  64 70 2e 20 54 68 65 72  |out of udp. Ther|
00000770  65 20 61 72 65 20 6f 74  68 65 72 73 20 62 75 74  |e are others but|
00000780  20 74 68 65 73 65 20 61  72 65 0d 0a 20 20 20 20  | these are..    |
00000790  20 20 20 20 20 20 20 20  20 20 20 20 74 68 65 20  |            the |
000007a0  6f 6e 6c 79 20 6f 6e 65  73 20 74 68 65 20 49 6e  |only ones the In|
000007b0  74 65 72 6e 65 74 20 6d  6f 64 75 6c 65 73 20 73  |ternet modules s|
000007c0  75 70 70 6f 72 74 20 28  41 46 41 49 4b 20 61 6e  |upport (AFAIK an|
000007d0  79 77 61 79 29 0d 0a 20  20 20 20 20 20 20 20 20  |yway)..         |
000007e0  20 20 20 20 20 20 20 65  72 67 6f 20 74 68 65 20  |       ergo the |
000007f0  6f 6e 6c 79 20 6f 6e 65  73 20 49 20 73 75 70 70  |only ones I supp|
00000800  6f 72 74 2e 20 42 65 20  61 77 61 72 65 20 69 66  |ort. Be aware if|
00000810  20 79 6f 75 20 74 72 79  20 75 64 70 20 6f 72 0d  | you try udp or.|
00000820  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000830  20 6f 74 68 65 72 20 70  72 6f 74 6f 63 6f 6c 20  | other protocol |
00000840  73 6f 63 6b 65 74 73 20  61 72 65 20 63 72 65 61  |sockets are crea|
00000850  74 65 64 20 61 73 20 53  4f 43 4b 5f 53 54 52 45  |ted as SOCK_STRE|
00000860  41 4d 2c 20 77 68 69 63  68 0d 0a 20 20 20 20 20  |AM, which..     |
00000870  20 20 20 20 20 20 20 20  20 20 20 6d 69 67 68 74  |           might|
00000880  20 63 61 75 73 65 20 79  6f 75 20 70 72 6f 62 6c  | cause you probl|
00000890  65 6d 73 2e 0d 0a 20 20  20 20 20 20 20 20 20 20  |ems...          |
000008a0  20 20 20 20 20 20 54 68  65 20 27 73 32 66 64 27  |      The 's2fd'|
000008b0  20 6d 61 70 70 69 6e 67  20 63 75 72 72 65 6e 74  | mapping current|
000008c0  6c 79 20 69 67 6e 6f 72  65 73 20 74 68 73 69 20  |ly ignores thsi |
000008d0  66 69 65 6c 64 2c 20 61  6c 74 68 6f 75 67 68 20  |field, although |
000008e0  6d 61 79 0d 0a 20 20 20  20 20 20 20 20 20 20 20  |may..           |
000008f0  20 20 20 20 20 75 73 65  20 69 74 20 66 6f 72 20  |     use it for |
00000900  66 6c 61 67 73 20 69 6e  20 61 20 6c 61 74 65 72  |flags in a later|
00000910  20 6d 6f 64 75 6c 65 20  76 65 72 73 69 6f 6e 2e  | module version.|
00000920  0d 0a 0d 0a 20 20 72 65  6d 6f 74 65 5f 68 6f 73  |....  remote_hos|
00000930  74 20 2d 20 54 68 69 73  20 69 73 20 74 68 65 20  |t - This is the |
00000940  6d 61 63 68 69 6e 65 20  79 6f 75 20 77 61 6e 74  |machine you want|
00000950  20 74 6f 20 63 6f 6e 6e  65 63 74 20 74 6f 2e 20  | to connect to. |
00000960  53 70 65 63 69 66 79 20  74 68 65 0d 0a 20 20 20  |Specify the..   |
00000970  20 20 20 20 20 20 20 20  20 20 20 20 20 68 6f 73  |             hos|
00000980  74 20 6e 61 6d 65 20 74  68 65 20 73 61 6d 65 20  |t name the same |
00000990  77 61 79 20 61 73 20 79  6f 75 20 77 6f 75 6c 64  |way as you would|
000009a0  20 66 6f 72 20 61 6e 79  20 75 73 75 61 6c 0d 0a  | for any usual..|
000009b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000009c0  69 6e 74 65 72 6e 65 74  20 70 72 6f 67 72 61 6d  |internet program|
000009d0  20 62 75 74 20 72 65 70  6c 61 63 65 20 74 68 65  | but replace the|
000009e0  20 27 2e 27 73 20 77 69  74 68 20 27 2f 27 20 69  | '.'s with '/' i|
000009f0  6e 20 74 68 65 0d 0a 20  20 20 20 20 20 20 20 20  |n the..         |
00000a00  20 20 20 20 20 20 20 72  65 76 65 72 73 65 20 6d  |       reverse m|
00000a10  61 6e 6e 65 72 20 74 6f  20 72 69 73 63 2d 6f 73  |anner to risc-os|
00000a20  20 75 73 75 61 6c 6c 79  20 64 6f 65 73 20 66 6f  | usually does fo|
00000a30  72 20 55 4e 49 58 0d 0a  20 20 20 20 20 20 20 20  |r UNIX..        |
00000a40  20 20 20 20 20 20 20 20  66 69 6c 65 6e 61 6d 65  |        filename|
00000a50  73 2e 20 54 68 65 20 6d  65 61 6e 73 20 77 77 77  |s. The means www|
00000a60  2e 64 65 6d 6f 6e 2e 63  6f 2e 75 6b 20 62 65 63  |.demon.co.uk bec|
00000a70  6f 6d 65 73 0d 0a 20 20  20 20 20 20 20 20 20 20  |omes..          |
00000a80  20 20 20 20 20 20 77 77  77 2f 64 65 6d 6f 6e 2f  |      www/demon/|
00000a90  63 6f 2f 75 6b 20 2e 20  4e 6f 74 65 20 74 68 61  |co/uk . Note tha|
00000aa0  74 20 27 2f 27 20 61 72  65 6e 27 74 20 72 65 71  |t '/' aren't req|
00000ab0  75 69 72 65 64 20 69 66  20 74 68 65 0d 0a 20 20  |uired if the..  |
00000ac0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 68 6f  |              ho|
00000ad0  73 74 6e 61 6d 65 20 68  61 73 20 6e 6f 20 64 6f  |stname has no do|
00000ae0  74 73 20 73 6f 20 6a 75  73 74 20 27 6c 6f 63 61  |ts so just 'loca|
00000af0  6c 68 6f 73 74 20 77 69  6c 6c 20 77 6f 72 6b 2e  |lhost will work.|
00000b00  0d 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |..              |
00000b10  20 20 49 6e 20 27 73 32  66 64 27 20 74 68 69 73  |  In 's2fd' this|
00000b20  20 69 73 20 61 20 73 6f  63 6b 65 74 20 68 61 6e  | is a socket han|
00000b30  64 6c 65 20 61 6e 64 20  61 20 6e 65 77 20 66 69  |dle and a new fi|
00000b40  6c 65 68 61 6e 64 6c 65  0d 0a 20 20 20 20 20 20  |lehandle..      |
00000b50  20 20 20 20 20 20 20 20  20 20 69 73 20 74 68 65  |          is the|
00000b60  6e 20 72 65 74 75 72 6e  20 62 6f 75 6e 64 20 74  |n return bound t|
00000b70  6f 20 74 68 69 73 20 73  6f 63 6b 65 74 2e 0d 0a  |o this socket...|
00000b80  0d 0a 20 20 72 70 6f 72  74 20 20 20 20 20 20 20  |..  rport       |
00000b90  2d 20 54 68 69 73 20 69  73 20 74 68 65 20 70 6f  |- This is the po|
00000ba0  72 74 20 6f 6e 20 74 68  65 20 72 65 6d 6f 74 65  |rt on the remote|
00000bb0  20 6d 61 63 68 69 6e 65  20 79 6f 75 20 77 61 6e  | machine you wan|
00000bc0  74 20 74 6f 0d 0a 20 20  20 20 20 20 20 20 20 20  |t to..          |
00000bd0  20 20 20 20 20 20 63 6f  6e 6e 65 63 74 20 74 6f  |      connect to|
00000be0  2e 20 59 6f 75 20 63 61  6e 20 73 70 65 63 69 66  |. You can specif|
00000bf0  79 20 69 74 20 62 79 20  73 65 72 76 69 63 65 20  |y it by service |
00000c00  6e 61 6d 65 20 6f 72 0d  0a 20 20 20 20 20 20 20  |name or..       |
00000c10  20 20 20 20 20 20 20 20  20 6e 75 6d 62 65 72 2e  |         number.|
00000c20  20 49 6e 20 74 68 65 20  65 78 61 6d 70 6c 65 20  | In the example |
00000c30  61 62 6f 76 65 20 79 6f  75 20 77 6f 75 6c 64 20  |above you would |
00000c40  73 70 65 63 69 66 79 20  27 38 30 27 20 6f 72 0d  |specify '80' or.|
00000c50  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000c60  20 27 77 77 77 27 2e 20  28 41 73 73 75 6d 69 6e  | 'www'. (Assumin|
00000c70  67 20 79 6f 75 20 77 68  65 72 65 20 74 72 79 20  |g you where try |
00000c80  74 6f 20 64 6f 77 6e 6c  6f 61 64 20 77 65 62 20  |to download web |
00000c90  70 61 67 65 73 0d 0a 20  20 20 20 20 20 20 20 20  |pages..         |
00000ca0  20 20 20 20 20 20 20 61  6e 79 77 61 79 2e 29 0d  |       anyway.).|
00000cb0  0a 0d 0a 20 20 6c 6f 63  61 6c 5f 68 6f 73 74 20  |...  local_host |
00000cc0  20 2d 20 54 68 69 73 20  69 73 20 74 68 65 20 66  | - This is the f|
00000cd0  69 72 73 74 20 6f 70 74  69 6f 6e 61 6c 20 70 61  |irst optional pa|
00000ce0  72 74 2c 20 61 6e 64 20  73 70 65 63 69 66 69 65  |rt, and specifie|
00000cf0  73 20 77 68 69 63 68 0d  0a 20 20 20 20 20 20 20  |s which..       |
00000d00  20 20 20 20 20 20 20 20  20 69 6e 74 65 72 66 61  |         interfa|
00000d10  63 65 20 6f 6e 20 79 6f  75 72 20 6c 6f 63 61 6c  |ce on your local|
00000d20  20 6d 61 63 68 69 6e 65  20 79 6f 75 20 77 69 73  | machine you wis|
00000d30  68 20 74 6f 20 69 6e 69  74 69 61 74 65 20 74 68  |h to initiate th|
00000d40  65 0d 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |e..             |
00000d50  20 20 20 63 6f 6e 6e 65  63 74 69 6f 6e 20 66 72  |   connection fr|
00000d60  6f 6d 2e 20 49 74 20 75  73 65 73 20 74 68 65 20  |om. It uses the |
00000d70  73 61 6d 65 20 66 6f 72  6d 61 74 20 74 6f 20 72  |same format to r|
00000d80  65 6d 6f 74 65 5f 68 6f  73 74 2e 0d 0a 0d 0a 20  |emote_host..... |
00000d90  20 6c 70 6f 72 74 20 20  20 20 20 20 20 2d 20 54  | lport       - T|
00000da0  68 65 20 69 73 20 61 6e  6f 74 68 65 72 20 6f 70  |he is another op|
00000db0  74 69 6f 6e 61 6c 20 70  61 72 74 2c 20 61 6e 20  |tional part, an |
00000dc0  73 70 65 63 69 66 69 65  73 20 77 68 69 63 68 20  |specifies which |
00000dd0  70 6f 72 74 0d 0a 20 20  20 20 20 20 20 20 20 20  |port..          |
00000de0  20 20 20 20 20 20 74 68  65 20 73 6f 63 6b 65 74  |      the socket|
00000df0  20 75 73 65 73 20 6f 6e  20 79 6f 75 72 20 6c 6f  | uses on your lo|
00000e00  63 61 6c 20 6d 61 63 68  69 6e 65 2e 20 49 74 20  |cal machine. It |
00000e10  75 73 65 73 20 74 68 65  20 73 61 6d 65 0d 0a 20  |uses the same.. |
00000e20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 66  |               f|
00000e30  6f 72 6d 61 74 20 61 73  20 72 70 6f 72 74 2e 20  |ormat as rport. |
00000e40  54 68 69 73 20 61 6e 64  20 74 68 65 20 70 72 65  |This and the pre|
00000e50  76 69 6f 75 73 20 70 61  72 74 20 61 72 65 20 70  |vious part are p|
00000e60  61 73 73 65 64 0d 0a 20  20 20 20 20 20 20 20 20  |assed..         |
00000e70  20 20 20 20 20 20 20 74  6f 20 74 68 65 20 69 6e  |       to the in|
00000e80  74 65 72 6e 65 74 20 6d  6f 64 75 6c 65 20 75 73  |ternet module us|
00000e90  69 6e 67 20 62 69 6e 64  2e 0d 0a 0d 0a 0d 0a 20  |ing bind....... |
00000ea0  54 68 69 73 20 6d 65 61  6e 73 20 69 66 20 79 6f  |This means if yo|
00000eb0  75 20 77 61 6e 74 20 74  6f 20 73 61 76 65 20 61  |u want to save a|
00000ec0  20 77 65 62 20 70 61 67  65 20 6f 66 66 2c 20 73  | web page off, s|
00000ed0  6f 6d 65 74 68 69 6e 67  20 6c 69 6b 65 20 74 68  |omething like th|
00000ee0  69 73 0d 0a 63 6f 75 6c  64 20 64 6f 20 74 68 65  |is..could do the|
00000ef0  20 74 72 69 63 6b 2e 20  28 49 4e 20 42 61 73 69  | trick. (IN Basi|
00000f00  63 21 29 0d 0a 0d 0a 20  20 20 20 46 69 6c 65 25  |c!)....    File%|
00000f10  3d 4f 50 45 4e 4f 55 54  28 22 41 44 46 53 3a 3a  |=OPENOUT("ADFS::|
00000f20  34 2e 24 2e 77 65 62 70  61 67 65 22 29 0d 0a 20  |4.$.webpage").. |
00000f30  20 20 20 57 65 62 25 3d  4f 50 45 4e 55 50 28 22  |   Web%=OPENUP("|
00000f40  73 6f 63 6b 65 74 66 73  3a 3a 74 63 70 2e 24 2e  |socketfs::tcp.$.|
00000f50  77 77 77 2f 64 65 6d 6f  6e 2f 63 6f 2f 75 6b 5c  |www/demon/co/uk\|
00000f60  77 77 77 22 29 0d 0a 20  20 20 20 41 24 20 3d 20  |www")..    A$ = |
00000f70  22 47 45 54 20 2f 69 6e  64 65 78 2e 68 74 6d 6c  |"GET /index.html|
00000f80  22 0d 0a 20 20 20 20 42  50 55 54 23 57 65 62 25  |"..    BPUT#Web%|
00000f90  2c 41 24 0d 0a 20 20 20  20 42 50 55 54 23 57 65  |,A$..    BPUT#We|
00000fa0  62 25 2c 31 30 20 3a 20  52 45 4d 20 57 72 69 74  |b%,10 : REM Writ|
00000fb0  65 20 65 6e 64 20 6f 66  20 6c 69 6e 65 2e 2e 2e  |e end of line...|
00000fc0  0d 0a 20 20 20 20 57 48  49 4c 45 20 4e 4f 54 20  |..    WHILE NOT |
00000fd0  45 4f 46 23 57 65 62 25  0d 0a 20 20 20 20 20 20  |EOF#Web%..      |
00000fe0  42 50 55 54 23 46 69 6c  65 25 2c 42 47 45 54 23  |BPUT#File%,BGET#|
00000ff0  57 65 62 25 0d 0a 20 20  20 20 20 45 4e 44 57 48  |Web%..     ENDWH|
00001000  49 4c 45 0d 0a 20 20 20  20 43 4c 4f 53 45 23 57  |ILE..    CLOSE#W|
00001010  65 62 25 20 3a 52 45 4d  20 52 65 6c 65 61 73 65  |eb% :REM Release|
00001020  20 74 68 69 73 20 61 74  20 65 6e 64 20 6f 66 20  | this at end of |
00001030  74 63 70 20 73 74 72 65  61 6d 2e 2e 2e 0d 0a 20  |tcp stream..... |
00001040  20 20 20 43 4c 4f 53 45  23 46 69 6c 65 25 0d 0a  |   CLOSE#File%..|
00001050  20 20 20 20 4f 53 43 4c  49 28 22 73 65 74 74 79  |    OSCLI("setty|
00001060  70 65 20 61 64 66 73 3a  3a 34 2e 24 2e 77 65 62  |pe adfs::4.$.web|
00001070  70 61 67 65 20 66 61 66  22 29 3a 52 45 4d 20 66  |page faf"):REM f|
00001080  61 66 3d 68 74 6d 6c 0d  0a 0d 0a 0d 0a 4f 6b 2c  |af=html......Ok,|
00001090  20 53 6f 20 77 68 61 74  20 75 73 65 20 69 73 20  | So what use is |
000010a0  69 74 0d 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |it..------------|
000010b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 0a 57 65 6c 6c 20  |---------..Well |
000010c0  69 74 20 6d 61 6b 65 73  20 69 6e 74 65 72 6e 65  |it makes interne|
000010d0  74 20 73 6f 63 6b 65 74  73 20 73 6c 69 67 68 74  |t sockets slight|
000010e0  6c 79 20 65 61 73 69 65  72 20 74 6f 20 75 73 65  |ly easier to use|
000010f0  2c 20 61 6e 64 20 61 6c  6c 6f 77 20 79 6f 75 0d  |, and allow you.|
00001100  0a 74 6f 20 74 72 65 61  74 20 74 68 65 6d 20 6c  |.to treat them l|
00001110  69 6b 65 20 66 69 6c 65  73 2e 20 53 70 65 63 69  |ike files. Speci|
00001120  66 69 63 61 6c 6c 79 20  74 68 65 20 55 6e 69 78  |fically the Unix|
00001130  4c 69 62 20 70 65 6f 70  6c 65 20 6d 69 67 68 74  |Lib people might|
00001140  20 66 69 6e 64 20 69 74  0d 0a 75 73 65 66 75 6c  | find it..useful|
00001150  20 74 6f 20 61 6c 6c 6f  77 20 66 69 6c 65 20 6f  | to allow file o|
00001160  70 65 72 61 74 69 6f 6e  73 20 6f 6e 20 73 6f 63  |perations on soc|
00001170  6b 65 74 73 20 61 73 20  79 6f 75 20 63 61 6e 20  |kets as you can |
00001180  69 6e 20 55 6e 69 78 2e  20 41 6c 74 68 6f 75 67  |in Unix. Althoug|
00001190  68 0d 0a 61 74 20 74 68  65 20 6d 6f 6d 65 6e 74  |h..at the moment|
000011a0  20 6c 69 73 74 65 6e 28  29 2c 20 61 63 63 65 70  | listen(), accep|
000011b0  74 28 29 20 61 72 65 20  73 6c 69 67 68 74 6c 79  |t() are slightly|
000011c0  20 64 69 66 66 69 63 75  6c 74 2e 20 0d 0a 0d 0a  | difficult. ....|
000011d0  0d 0a 49 73 20 74 68 65  72 65 20 61 6e 79 74 68  |..Is there anyth|
000011e0  69 6e 67 20 69 74 20 63  61 6e 27 74 20 64 6f 20  |ing it can't do |
000011f0  74 68 61 74 20 49 20 73  68 6f 75 6c 64 20 6e 6f  |that I should no|
00001200  77 20 61 62 6f 75 74 0d  0a 2d 2d 2d 2d 2d 2d 2d  |w about..-------|
00001210  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001230  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 0a  |--------------..|
00001240  49 20 68 61 76 65 6e 27  74 20 73 70 65 6e 64 20  |I haven't spend |
00001250  61 6e 79 74 69 6d 65 20  77 6f 72 6b 69 6e 67 20  |anytime working |
00001260  6f 6e 20 74 68 65 20 69  6d 70 6c 65 6e 74 61 74  |on the implentat|
00001270  69 6f 6e 20 6f 66 20 77  68 6f 6c 65 20 66 69 6c  |ion of whole fil|
00001280  65 0d 0a 6f 70 65 72 61  74 69 6f 6e 73 2c 20 73  |e..operations, s|
00001290  6f 20 2a 73 61 76 65 20  6d 61 79 20 6f 72 20 6d  |o *save may or m|
000012a0  61 79 20 6e 6f 74 20 77  6f 72 6b 2e 20 4e 4f 20  |ay not work. NO |
000012b0  47 75 61 72 61 6e 74 65  65 73 2e 0d 0a 41 6c 73  |Guarantees...Als|
000012c0  6f 20 73 6f 63 6b 65 74  66 73 3a 20 64 6f 65 73  |o socketfs: does|
000012d0  20 6e 6f 74 20 73 75 70  70 6f 72 74 20 72 65 6e  | not support ren|
000012e0  61 6d 69 6e 67 20 61 73  20 49 50 20 65 73 73 65  |aming as IP esse|
000012f0  6e 74 69 61 6c 79 20 64  6f 65 73 6e 27 74 0d 0a  |ntialy doesn't..|
00001300  61 6c 6c 6f 77 20 73 74  72 65 61 6d 73 20 74 6f  |allow streams to|
00001310  20 6d 6f 76 65 20 62 65  74 77 65 65 6e 20 73 6f  | move between so|
00001320  63 6b 65 74 73 20 28 6f  72 20 69 6e 74 65 72 66  |ckets (or interf|
00001330  61 63 65 73 29 2e 20 49  20 6d 69 67 68 74 20 75  |aces). I might u|
00001340  73 65 20 74 68 69 73 0d  0a 66 69 6c 65 20 73 79  |se this..file sy|
00001350  73 74 65 6d 20 73 65 6d  61 6e 74 69 63 73 20 66  |stem semantics f|
00001360  6f 72 20 61 63 63 65 70  74 28 29 20 6c 61 74 65  |or accept() late|
00001370  72 20 74 68 6f 75 67 68  2e 0d 0a 46 69 6e 61 6c  |r though...Final|
00001380  6c 79 20 69 74 20 68 61  73 20 6f 6e 65 20 6f 74  |ly it has one ot|
00001390  68 65 72 20 66 65 61 74  75 72 65 2c 20 74 68 65  |her feature, the|
000013a0  20 63 75 72 72 65 6e 74  20 76 65 72 73 69 6f 6e  | current version|
000013b0  20 6f 66 20 74 68 65 20  6d 6f 64 75 6c 65 20 75  | of the module u|
000013c0  73 65 73 0d 0a 62 6c 6f  63 6b 69 6e 67 20 73 6f  |ses..blocking so|
000013d0  63 6b 65 74 73 2c 20 61  6c 74 68 6f 75 67 68 20  |ckets, although |
000013e0  74 68 69 73 20 6d 65 61  6e 73 20 69 74 20 77 69  |this means it wi|
000013f0  6c 6c 20 77 61 69 74 20  66 6f 72 20 64 61 74 61  |ll wait for data|
00001400  20 6f 6e 20 61 20 73 6f  63 6b 65 74 0d 0a 77 69  | on a socket..wi|
00001410  74 68 6f 75 79 20 72 65  74 75 72 6e 69 6e 67 20  |thouy returning |
00001420  61 20 65 72 72 6f 72 20  69 66 20 74 68 65 72 65  |a error if there|
00001430  20 69 73 20 6e 6f 6e 65  20 77 61 69 74 69 6e 67  | is none waiting|
00001440  2e 20 4f 6e 65 20 6f 66  20 74 77 6f 20 74 68 69  |. One of two thi|
00001450  6e 67 73 0d 0a 77 69 6c  6c 20 74 68 65 6e 20 68  |ngs..will then h|
00001460  61 70 70 65 6e 2c 20 66  69 72 73 74 20 69 74 20  |appen, first it |
00001470  77 69 6c 6c 20 68 61 6e  67 20 74 68 65 20 77 68  |will hang the wh|
00001480  6f 6c 65 20 6d 61 63 68  69 6e 65 2c 20 6f 72 20  |ole machine, or |
00001490  69 66 20 79 6f 75 27 72  65 20 72 75 6e 6e 69 6e  |if you're runnin|
000014a0  67 0d 0a 66 72 65 65 6e  65 74 20 6f 72 20 41 63  |g..freenet or Ac|
000014b0  6f 72 6e 20 49 6e 74 65  72 6e 65 74 20 35 2e 30  |orn Internet 5.0|
000014c0  30 20 6f 72 20 68 69 67  68 65 72 20 6a 75 73 74  |0 or higher just|
000014d0  20 74 68 61 74 20 74 61  73 6b 77 69 6e 64 6f 77  | that taskwindow|
000014e0  2e 20 0d 0a 46 72 65 65  6e 65 74 20 73 74 69 6c  |. ..Freenet stil|
000014f0  6c 20 68 61 73 20 74 68  65 20 64 69 73 61 64 76  |l has the disadv|
00001500  61 6e 74 61 67 65 20 74  68 61 74 20 66 69 6c 65  |antage that file|
00001510  73 77 69 74 63 68 2f 74  61 73 6b 77 69 6e 64 6f  |switch/taskwindo|
00001520  77 20 73 65 65 6d 20 74  6f 20 0d 0a 62 6c 6f 63  |w seem to ..bloc|
00001530  6b 20 6f 74 68 65 72 20  46 53 20 63 61 6c 6c 73  |k other FS calls|
00001540  20 74 6f 20 74 68 65 73  61 6d 65 20 68 61 6e 64  | to thesame hand|
00001550  6c 65 20 77 68 69 6c 65  20 74 68 65 20 66 69 72  |le while the fir|
00001560  73 74 20 69 73 20 77 61  69 74 69 6e 67 2e 20 54  |st is waiting. T|
00001570  68 69 73 20 0d 0a 69 73  20 66 69 6e 65 20 66 6f  |his ..is fine fo|
00001580  72 20 73 69 6d 70 6c 65  78 20 61 6e 64 20 20 68  |r simplex and  h|
00001590  61 6c 66 2d 64 75 70 6c  65 78 20 70 72 6f 74 6f  |alf-duplex proto|
000015a0  63 6f 6c 73 20 62 75 74  20 69 66 20 79 6f 75 20  |cols but if you |
000015b0  6e 65 65 64 20 66 75 6c  6c 2d 64 75 70 6c 65 78  |need full-duplex|
000015c0  0d 0a 61 63 72 6f 73 73  20 54 61 73 6b 77 69 6e  |..across Taskwin|
000015d0  64 6f 77 73 2c 20 79 6f  75 72 20 63 6f 75 6c 64  |dows, your could|
000015e0  20 72 65 63 6f 6d 70 69  6c 65 20 74 68 65 20 6d  | recompile the m|
000015f0  6f 64 75 6c 65 20 77 69  74 68 20 2d 44 46 49 4f  |odule with -DFIO|
00001600  4d 4f 44 45 3d 46 49 4f  4e 42 49 4f 0d 0a 77 68  |MODE=FIONBIO..wh|
00001610  69 63 68 20 77 69 6c 6c  20 66 6f 72 63 65 20 74  |ich will force t|
00001620  68 65 20 6d 6f 64 75 6c  65 20 74 6f 20 75 73 65  |he module to use|
00001630  20 6e 6f 6e 2d 62 6c 6f  63 6b 69 6e 67 20 73 6f  | non-blocking so|
00001640  63 6b 65 74 73 20 61 73  20 64 65 66 61 75 6c 74  |ckets as default|
00001650  2e 0d 0a 0d 0a 46 69 6e  61 6c 20 43 6f 6d 6d 65  |.....Final Comme|
00001660  6e 74 73 0d 0a 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |nts..-----------|
00001670  2d 2d 2d 0d 0a 49 74 20  77 6f 75 6c 64 20 62 65  |---..It would be|
00001680  20 6e 69 63 65 20 74 6f  20 61 64 64 20 69 6f 63  | nice to add ioc|
00001690  74 6c 2c 20 61 6e 64 20  73 6f 63 6b 65 74 5f 73  |tl, and socket_s|
000016a0  65 6c 65 63 74 20 66 75  63 74 69 6f 6e 61 6c 69  |elect fuctionali|
000016b0  74 79 20 74 6f 20 74 68  65 0d 0a 66 69 6c 69 6e  |ty to the..filin|
000016c0  67 20 73 79 73 74 65 6d  2c 20 62 75 74 20 49 20  |g system, but I |
000016d0  68 61 76 65 6e 27 74 20  63 6f 6d 65 20 75 70 20  |haven't come up |
000016e0  77 69 74 68 20 61 20 6e  69 63 65 20 77 61 79 20  |with a nice way |
000016f0  6f 66 20 64 6f 69 6e 67  20 74 68 6f 73 65 0d 0a  |of doing those..|
00001700  79 65 74 2e 20 57 68 69  6c 65 20 6d 79 20 6f 77  |yet. While my ow|
00001710  6e 20 53 57 49 20 69 6e  74 65 72 61 63 65 20 77  |n SWI interace w|
00001720  6f 75 6c 64 20 77 6f 72  6b 20 2d 20 62 65 61 72  |ould work - bear|
00001730  20 69 6e 20 6d 69 6e 64  20 74 68 61 74 20 73 6f  | in mind that so|
00001740  63 6b 65 74 66 73 20 75  73 65 73 0d 0a 66 69 6c  |cketfs uses..fil|
00001750  65 73 77 69 74 63 68 20  74 6f 20 64 6f 20 74 68  |eswitch to do th|
00001760  65 20 53 6f 63 6b 65 74  48 61 6e 64 6c 65 3c 2d  |e SocketHandle<-|
00001770  2d 3e 46 69 6c 65 48 61  6e 64 6c 65 20 6d 61 70  |->FileHandle map|
00001780  70 69 6e 67 2c 20 73 6f  20 73 6f 63 6b 65 74 66  |ping, so socketf|
00001790  73 20 63 61 6e 27 74 0d  0a 64 6f 20 74 68 69 73  |s can't..do this|
000017a0  20 69 74 73 65 6c 66 20  61 73 20 69 74 20 6b 6e  | itself as it kn|
000017b0  6f 77 73 20 6e 6f 74 68  69 6e 67 20 61 62 6f 75  |ows nothing abou|
000017c0  74 20 66 69 6c 65 73 77  69 74 63 68 27 73 20 68  |t fileswitch's h|
000017d0  61 6e 64 6c 65 73 2e 20  0d 0a 49 20 73 75 70 70  |andles. ..I supp|
000017e0  6f 73 65 20 69 74 20 77  6f 75 6c 64 20 62 65 20  |ose it would be |
000017f0  70 6f 73 73 69 62 6c 65  20 74 6f 20 61 74 74 72  |possible to attr|
00001800  69 62 75 74 65 20 61 6e  64 20 66 69 6c 65 74 79  |ibute and filety|
00001810  70 65 2c 20 61 73 73 69  67 6e 69 6e 67 20 64 69  |pe, assigning di|
00001820  66 66 65 72 65 6e 74 0d  0a 6d 65 61 6e 69 6e 67  |fferent..meaning|
00001830  73 20 74 6f 20 74 68 65  73 65 20 74 68 61 6e 20  |s to these than |
00001840  69 73 20 75 73 75 61 6c  2c 20 62 75 74 20 69 74  |is usual, but it|
00001850  27 73 20 6e 6f 74 20 61  20 6e 69 63 65 20 73 6f  |'s not a nice so|
00001860  6c 75 74 69 6f 6e 2e 0d  0a 0d 0a 49 27 6c 6c 20  |lution.....I'll |
00001870  74 61 6b 65 20 61 20 6d  6f 6d 65 6e 74 20 68 65  |take a moment he|
00001880  72 65 20 74 6f 20 72 65  6d 69 6e 64 20 79 6f 75  |re to remind you|
00001890  20 74 68 61 74 20 73 6f  63 6b 65 74 46 53 20 69  | that socketFS i|
000018a0  73 0d 0a 64 69 73 74 72  75 62 75 74 65 64 20 75  |s..distrubuted u|
000018b0  6e 64 65 72 20 74 68 65  20 63 6f 6e 64 69 74 69  |nder the conditi|
000018c0  6f 6e 73 20 6f 75 74 6c  69 6e 65 64 20 69 6e 20  |ons outlined in |
000018d0  74 68 65 20 61 63 63 6f  6d 70 61 6e 79 69 6e 67  |the accompanying|
000018e0  20 66 69 6c 65 20 63 61  6c 6c 65 64 0d 0a 27 43  | file called..'C|
000018f0  4f 50 59 49 4e 47 27 2c  20 63 75 72 72 65 6e 74  |OPYING', current|
00001900  6c 79 20 74 68 69 73 20  69 73 20 76 65 72 73 69  |ly this is versi|
00001910  6f 6e 20 32 20 6f 66 20  74 68 65 20 47 50 4c 2c  |on 2 of the GPL,|
00001920  20 68 6f 77 65 76 65 72  20 49 20 66 69 6e 64 20  | however I find |
00001930  47 50 4c 73 20 76 69 72  75 73 0d 0a 6c 69 6b 65  |GPLs virus..like|
00001940  20 61 62 6c 69 74 69 65  73 20 61 20 6c 69 74 74  | ablities a litt|
00001950  6c 65 20 68 61 72 73 68  20 66 6f 72 20 6d 79 20  |le harsh for my |
00001960  74 61 73 74 65 73 2c 20  73 6f 20 79 6f 75 27 6c  |tastes, so you'l|
00001970  6c 20 66 69 6e 64 20 6d  65 20 72 65 6c 61 74 69  |l find me relati|
00001980  76 65 6c 79 20 6f 70 65  6e 0d 0a 6f 6e 20 61 6c  |vely open..on al|
00001990  6c 6f 77 69 6e 67 20 6c  69 6d 69 74 65 64 20 64  |lowing limited d|
000019a0  69 73 74 72 69 62 75 74  69 6f 6e 73 20 75 6e 64  |istributions und|
000019b0  65 72 20 6f 74 68 65 72  20 6c 69 63 65 6e 73 65  |er other license|
000019c0  73 2e 20 0d 0a 49 20 77  6f 75 6c 64 20 61 6c 73  |s. ..I would als|
000019d0  6f 20 61 73 6b 20 79 6f  75 20 74 6f 20 6c 65 74  |o ask you to let|
000019e0  20 6d 65 20 6b 6e 6f 77  20 79 6f 75 72 20 65 78  | me know your ex|
000019f0  70 65 72 69 65 6e 63 65  73 2c 20 77 69 74 68 20  |periences, with |
00001a00  74 68 65 20 73 6f 66 74  77 61 72 65 20 0d 0a 62  |the software ..b|
00001a10  79 20 65 2d 6d 61 69 6c  20 69 66 20 70 6f 73 73  |y e-mail if poss|
00001a20  69 62 6c 65 2e 0d 0a 49  20 77 69 6c 6c 20 61 6c  |ible...I will al|
00001a30  73 6f 20 77 65 6c 63 6f  6d 65 20 62 75 67 20 72  |so welcome bug r|
00001a40  65 70 6f 72 74 73 20 61  6e 64 20 70 61 74 63 68  |eports and patch|
00001a50  65 73 20 28 63 6f 6e 74  65 78 74 20 64 69 66 66  |es (context diff|
00001a60  73 20 70 6c 65 61 73 65  29 2c 20 61 6e 64 20 0d  |s please), and .|
00001a70  0a 66 65 61 74 75 72 65  20 72 65 71 75 65 73 74  |.feature request|
00001a80  73 2e 20 49 20 63 61 6e  20 62 65 20 72 65 61 63  |s. I can be reac|
00001a90  68 65 64 20 61 74 20 3c  72 67 61 6d 6d 61 6e 73  |hed at <rgammans|
00001aa0  40 63 6f 6d 70 73 75 72  67 2e 64 65 6d 6f 6e 2e  |@compsurg.demon.|
00001ab0  63 6f 2e 75 6b 3e 2c 20  20 0d 0a 61 6e 64 20 63  |co.uk>,  ..and c|
00001ac0  6f 75 6c 64 20 49 20 70  6c 65 61 73 65 20 61 73  |ould I please as|
00001ad0  6b 20 69 66 20 79 6f 75  20 64 6f 20 65 2d 6d 61  |k if you do e-ma|
00001ae0  69 6c 20 6d 65 2c 20 63  61 6e 20 79 6f 75 20 6d  |il me, can you m|
00001af0  65 6e 74 69 6f 6e 20 73  6f 63 6b 65 74 66 73 20  |ention socketfs |
00001b00  69 6e 0d 0a 74 68 65 20  73 75 62 6a 65 63 74 20  |in..the subject |
00001b10  6c 69 6e 65 2e 0d 0a 0d  0a 52 6f 67 65 72 20 47  |line.....Roger G|
00001b20  61 6d 6d 61 6e 73 0d 0a  31 38 20 41 75 67 20 31  |ammans..18 Aug 1|
00001b30  39 39 37 0d 0a                                    |997..|
00001b35