libixp
libixp
is a stand-alone client/server 9P library including ixpc
client. It consists of less than 2000 lines of code (including ixpc
).
libixp
’s server API is based heavily on that of Plan 9’s lib9p
, and the two libraries export virtually identical data structures. There are a few notable differences between the two, however:
libixp
multiplexes connections internally, while onPlan 9
, the kernel performs this task, and in plan9port, a separate process is spawned to do so. Despite this divergence, the user of the library will not notice any difference in behavior, except that there may be duplicatetag
andfid
numbers between different connections. This issue is of little relevance, however, as the library handles the task of mappingfid
s andtag
s to arbitrary pointers andP9Req
structs.libixp
is released under a lenient MIT-style license, with the exception of the fileintmap.c
, which comes fromPlan 9
, and falls under the LPL. This file may be rewritten at some point, but the authors, as of yet, has been uncompelled to do so.libixp
lackslib9p
’s file trees.Unlike
plan9port
’slib9p
,libixp
is POSIX based, and should compile without specialized libraries on nearly any POSIX system.
Developement
The latest libixp code can be checked out with mercurial:
hg clone http://code.suckless.org/hg/libixp
Bindings
- Ruby-IXP are a set of Ruby bindings for libixp.
- Lib-IXP Perl bindings in cpan.
Credits
Original code by garbeam, most of it rewriten and heavily improved by Kris Maglione, other small fixes and improvements by others.