# README for PORT

This package provides a platform-independent interface to various features absent from the ANSI Common Lisp standard, such as sockets, shell, Gray streams etc. The implementation-specific things, like loads of `#+/#-`, are hidden from the user.

You can download this package from the following HTTP mirrors:

- sourceforge
- podval.org

To use this package, you will need an ANSI Common Lisp.

## CLOCC

`PORT` is now a part of `CLOCC` (in `src/port`), and, as such, is accessible via anonymous CVS and FTP, as explained on the `CLOCC` homepage. `PORT` uses `mk:defsystem`, which is a part of `CLOCC` too.

## Files

This Common Lisp sources include the following files (in the alphabetical order):

file | description
--- | ---
`ext.lisp` | miscellaneous minor extensions, used everywhere
`gray.lisp` | David N. Gray's STREAM-DEFINITION-BY-USER:GENERIC-FUNCTIONS unification
`net.lisp` | sockets, socket servers, host name resolution etc
`path.lisp` | Pathnames and Filenames
`proc.lisp` | LispM-style portable multiprocessing
`shell.lisp` | shell access, pipes
`sys.lisp` | `getenv`, `arglist`, `class-slot-list`, `chdir`, etc

## License

This package is distributed under the GNU LGPL.

## Compiling

To use the library, type `"make system"`, which should compile all the files. Alternatively, you can issue the `(mk:compile-system "port")` command yourself. Then you can dump your images.

See also the general CLOCC `INSTALL` instructions.

Please note that this package exports symbols with names which might be already present as an extension in your Common Lisp implementation. I recommend issuing the following command before using this package:

    #+allegro
    (shadowing-import '(port::gc port::arglist port::chdir))
    #+clisp
    (shadowing-import
     '(port::getenv port::arglist port::gc port::finalize port::sysinfo
       port::with-gensyms port::probe-directory port::current-time port::quit
       port::default-directory port::resolve-host-ipaddr port::hostent
       port::hostent-name port::hostent-aliases port::hostent-addr-list
       port::socket-server port::socket-accept port::socket-server-close
       port::socket-service-port))
    #+cmu
    (shadowing-import
     '(port::quit port::default-directory port::gc port::process-wait
       port::finalize))

## Comments

Comments and bug reports are welcome.

Sam Steingold |