Contents | Index | < Browse | Browse >
ixemul    40.4    Shared lib providing UNIX like environ.

(by Markus Wild)

I always wanted a library, that would emulate as much as possible of a
**IX/BSD environment on the Amiga, so that programs (usually programming
tools) written for **IX/BSD could be ported in a quick and straight forward
way to the Amiga.  I guess the library accomplishes this goal fairly well.

What it is and what it isn't
============================

The design of the library was therefore guided towards **IX/BSD
compatibility, and *not* :
 o to be too conservative with resources 
 o to be particularly conformant to Amiga habits. Thus if I had to decide
   whether I should make a function act more like an Amiga function or
   more like a **IX/BSD one, I decided for the latter. As an example:
   _cli_parse() does wildcard expansion, and tries to apply more or less
   **IX/BSD shell semantics to an argument line, it doesn't call
   ReadArgs().
   The types used in my own source code are all from sys/types.h (except
   BPTR). I don't think capitalized identifiers should be used for typedef'd
   types. According to C-conventions, anything written in captials should
   be `#undef'inable, which typedefs aren't. Thus if you write contributions
   to be included into the official distribution of this library, code
   according to this. Use `u_char' and not UBYTE, etc. I don't care that
   this is against the Commodore coding standard, this is my code, and
   I decide what I like and what not.
 o to be particularly suited for inclusion into a shared library, although
   most things *are* shared now. What I'd really want for the Amiga is 
   the concept of a dynamic linker.

On the other hand, it should be:
 o expandable. As an example, a file descriptor already can refer to `real'
   files, directories, memory buffers treated as files. I plan to add 
   sockets in some next release (Commodore: please get out some examples 
   on how to use SANA-II stuff, so my sockets can be compatible!)
 o patchable. If you want some function to behave differently, you can
   SetFunction() it, and the rest of the library should use your new entry.
   NOTE: I used this only for major functions, that may reasonably change. 
	 I didn't call functions like strcmp(), strlen(), bcopy() that way for
         efficiency reasons (and my lazyness to change the whole string/
         and other libraries;-)))
   This version doesn't particularly follow this goal very well, mostly
   stdio is still the original BSD code, and doesn't use syscall()...

Author: Markus M. Wild
Path: GNU/ixemul-40.4-src.lha