You can download the most current source distribution of rudiments from http://www.firstworks.com.
Unpacking Rudiments:To unpack the distribution, copy the file to a location on your machine that you have access to and execute the following commands:
This will create a rudiments-X.XX directory. Change directories into that directory.
Compiling Rudiments:To compile Rudiments, read the INSTALL file, then execute the following commands:
Rudiments should compile and function on unix-based systems using the GNU development system. Other compilers may work too but have not been tested on the current version.
Installing Rudiments:To install Rudiments, become root and execute:
By default, everything is installed under /usr/local/firstworks.
To uninstall Rudiments, become root and execute:
The rudiments class library consists of several classes. Some are utility classes, others are designed to be base classes for software.
- daemonprocess - base class for daemons
- filedescriptor - base class for classes that need to interact with file descriptors
- file - base class for classes that need to interact with files
- clientserverfactory - class for generating instances of clients and servers
- client - base class for clients
- clientsocket - base class for clients that listen on sockets
- inetclientsocket - base class for inet tcp stream clients
- unixclientsocket - base class for unix tcp stream clients
- server - base class for servers
- serversocket - base class for servers that listen on sockets
- inetserversocket - base class for inet tcp stream servers
- unixserversocket - base class for unix tcp stream servers
- listener - base class for listening on pools of file descriptors
- environment - environment variable processing class
- commandline - command line processing class
- parameterstring - parameter string processing class
- datetime - date/time processing class
- timezonefile - class for parsing timezone files
- filesystem - class for gathering filesystem statistics
- logger - class for generating log messages
- permissions - class for generating file permissions
- randomnumber - class for generating random numbers
- regularexpression - class for dealing with regular expressions
- signalclasses - classes with methods for managing signals
- sharedmemory - shared memory class
- semaphoreset - semaphore class
- memorypool - class that implements a memory pool
- variablebuffer - class for storing arbitrary length data
- stringbuffer - class for storing arbitrary length strings
- string - string processing and evaluation class
- xmldom - a minimal XML DOM parser
- xmldomnode - an XML DOM tree node
- xmlsax - base class for xml parsers
- dtd - class for processing xml dtd's
- groupentry - container for /etc/group entries
- hostentry - container for /etc/hosts entries
- passwdentry - container for /etc/passwd entires
- protocolentry - container for /etc/protocols entries
- rpcentry - container for /etc/rpc entires
- serviceentry - container for /etc/services entires
- shadowentry - container for /etc/shadow entires
- dictionary - class for storing lists of key/data pairs
- list - class for storing data in a doubly linked list
As a rule of thumb, the base classes should be inherited from and the utility classes should be instantiated as needed. Some of the utility classes have static methods which can be called directly without instantiating an instance of the class.
Refer to base classes and utility classes programming examples for more more information.