Rasmus​.krats​.se

incu or ++Unix

Posted 2000-12-19 12:00. Tagged , .

Please note that this post is 23 years old. The information herein may be outdated.

Unix facilities for C++ programmers

The aim of ++Unix is to allow C++ programs to use Unix facilities, such as sockets, whose interface includes a lot of pointers and other low-level stuff, and might vary on different kinds of Unix, in a nice, simple and consistent way.

One of the goals: There should be no need for preprocessor conditionals (#if) other than as include guards in a C++ programs that uses ++Unix.

<incu/log.hh>

Stream out to syslog as simply as to any ostream. Almost.

#include <incu/log.hh>

int
main(int argc, char* argv[]) {
   if(log_to_syslog)
      incu::Log::addDevice(new incu::SysLog(argv[0]));
   else
      incu::Log::addDevice(new incu::StreamLog(clog));

   Log() << "A message";

   try { ... }
   catch(const exception &err) {
      Log() << "Something went wrong: " << err;
   }
}

<incu/pipe.hh>

A pipe created in an object. Really just a constructor / destructor pair for convenience.

<incu/socket.hh>

Some classes to help out in using sockets. A client looks basically like this:

    incu::SockaddrIn addr;
    addr.addr("servername").port(4711);

    incu::Socket socket(PF_INET, SOCK_STREAM, "tcp");
    socket.connect(addr);

    ifstream in(socket.fd());
    ofstream out(socket.fd());

<incu/system.hh>

<incu/time.hh>

Contains the classes TimeVal, which is just a constructor for struct timeval, and Time which works like a time_t, but more convenient.

The following will print the current time in a user-friendly format:

    cout << "Time is " << Time() << endl;

<incu/error.hh>

Mainly used by the other parts of incu, a c_error is thrown when something goes wrong the errno way.

Comments

This post is 23 years old, comments are disabled.