Index: libroar/config.c
===================================================================
--- libroar/config.c	(revision 5010)
+++ libroar/config.c	(revision 5183)
@@ -52,4 +52,5 @@
   config.trap_policy = ROAR_TRAP_IGNORE;
 #endif
+  config.opmode      = ROAR_LIBROAR_CONFIG_OPMODE_NORMAL;
   config.server   = NULL;
   config.authfile = NULL;
@@ -251,4 +252,12 @@
     ROAR_WARN("roar_libroar_config_parse(*): Unknown warning option: %s", v);
    }
+  } else if ( !strcmp(k, "opmode") ) {
+   if ( !strcmp(v, "normal") ) {
+    config->opmode = ROAR_LIBROAR_CONFIG_OPMODE_NORMAL;
+   } else if ( !strcmp(v, "funny") ) {
+    config->opmode = ROAR_LIBROAR_CONFIG_OPMODE_FUNNY;
+   } else {
+    ROAR_WARN("roar_libroar_config_parse(*): Unknown opmode: %s", v);
+   }
 #ifdef ROAR_SUPPORT_TRAP
   } else if ( !strcmp(k, "trap-policy") ) {
Index: libroar/error.c
===================================================================
--- libroar/error.c	(revision 5150)
+++ libroar/error.c	(revision 5183)
@@ -913,4 +913,5 @@
 
 const char * roar_error2str(const int error) {
+ struct roar_libroar_config * config = roar_libroar_get_config();
  const struct {
   const int    err;
@@ -980,5 +981,5 @@
   {ROAR_ERROR_IDREMOVED,   "Identifier removed"},
   {ROAR_ERROR_INPROGRESS,  "Operation in progress"},
-  {ROAR_ERROR_NOCHILD,     "No child processesobject"},
+  {ROAR_ERROR_NOCHILD,     "No child processes or object"},
   {ROAR_ERROR_NETUNREACH,  "Network unreachable"},
   {ROAR_ERROR_CANCELED,    "Operation canceled"},
@@ -1005,6 +1006,101 @@
   {ROAR_ERROR_CONNABORTED, "Connection aborted"},
   {-1, NULL}
+ }, msgs_funny[] = {
+//  {ROAR_ERROR_UNKNOWN,     "Unknown (maybe no) error"},
+  {ROAR_ERROR_NONE,        "No error, huh?"},
+  {ROAR_ERROR_PERM,        "Little kitty is not allowed to do this"},
+  {ROAR_ERROR_NOENT,       "Mouse not found"},
+//  {ROAR_ERROR_BADMSG,      "Bad message"},
+  {ROAR_ERROR_BUSY,        "Another kitty is playing with this mouse"},
+//  {ROAR_ERROR_CONNREFUSED, "Connection refused"},
+//  {ROAR_ERROR_NOSYS,       "Function not implemented"},
+//  {ROAR_ERROR_NOTSUP,      "Operation not supported"},
+  {ROAR_ERROR_PIPE,        "Flood"},
+//  {ROAR_ERROR_PROTO,       "Protocol error"},
+//  {ROAR_ERROR_RANGE,       "Result too largegeneral out of range"},
+//  {ROAR_ERROR_MSGSIZE,     "Message too long"},
+//  {ROAR_ERROR_NOMEM,       "Not enough space"},
+//  {ROAR_ERROR_INVAL,       "Invalid argument"},
+//  {ROAR_ERROR_ALREADY,     "Connection already in progress"},
+  {ROAR_ERROR_BADRQC,      "Stupid staff"},
+//  {ROAR_ERROR_DOM,         "Mathematics argument out of domain of function"},
+//  {ROAR_ERROR_EXIST,       "File or object exists"},
+//  {ROAR_ERROR_FAULT,       "Bad address"},
+//  {ROAR_ERROR_IO,          "IO-Error"},
+//  {ROAR_ERROR_KEYEXPIRED,  "Key has expired"},
+//  {ROAR_ERROR_KEYREJECTED, "Key was rejected by service"},
+//  {ROAR_ERROR_LOOP,        "Too many recursions"},
+//  {ROAR_ERROR_MFILE,       "Too many open files or objects"},
+  {ROAR_ERROR_NAMETOOLONG, "Staff can not remember long names"},
+//  {ROAR_ERROR_NODATA,      "No message is available on the read queue"},
+  {ROAR_ERROR_NODEV,       "No such mouse"},
+//  {ROAR_ERROR_NODRV,       "No such driver"},
+  {ROAR_ERROR_NOSPC,       "Too many fish on desk"},
+//  {ROAR_ERROR_TYPEMM,      "Type missmatch. Object of diffrent type required"},
+//  {ROAR_ERROR_NORSYS,      "Feature not implemented by remote end"},
+//  {ROAR_ERROR_NOTCONN,     "Socket or object not connected"},
+//  {ROAR_ERROR_PROTONOSUP,  "Protocol not supported"},
+//  {ROAR_ERROR_RIO,         "Remote IO Error"},
+  {ROAR_ERROR_RO,          "Touching disallowed"},
+//  {ROAR_ERROR_TIMEDOUT,    "Connection timed out"},
+//  {ROAR_ERROR_AGAIN,       "Resource temporarily unavailable"},
+//  {ROAR_ERROR_NOISE,       "Line too noisy"},
+//  {ROAR_ERROR_LINKDOWN,    "Physical or logical link down"},
+//  {ROAR_ERROR_INTERRUPTED, "Operation was interruped"},
+//  {ROAR_ERROR_CAUSALITY,   "Causality error"},
+//  {ROAR_ERROR_QUOTA,       "Quota exceeded"},
+//  {ROAR_ERROR_BADLIB,      "Accessing a corrupted shared library"},
+//  {ROAR_ERROR_NOMEDIUM,    "No medium found"},
+//  {ROAR_ERROR_NOTUNIQ,     "Name not unique"},
+//  {ROAR_ERROR_ILLSEQ,      "Illegal byte sequence"},
+//  {ROAR_ERROR_ADDRINUSE,   "Address in use"},
+  {ROAR_ERROR_HOLE,        "Hole in wall"},
+//  {ROAR_ERROR_BADVERSION,  "Bad version"},
+//  {ROAR_ERROR_NSVERSION,   "Not supported version"},
+  {ROAR_ERROR_BADMAGIC,    "Magician's fault"},
+//  {ROAR_ERROR_LOSTSYNC,    "Lost synchronization"},
+//  {ROAR_ERROR_BADSEEK,     "Can not seek to destination position"},
+//  {ROAR_ERROR_NOSEEK,      "Seeking not supported on resource"},
+//  {ROAR_ERROR_BADCKSUM,    "Data integrity error"},
+  {ROAR_ERROR_NOHORSE,     "No horse"},
+//  {ROAR_ERROR_CHERNOBYL,   "Fatal device error"},
+  {ROAR_ERROR_NOHUG,       "No hug"},
+//  {ROAR_ERROR_TEXTBUSY,    "Text file busy"},
+//  {ROAR_ERROR_NOTEMPTY,    "Directory not empty"},
+//  {ROAR_ERROR_NODEUNREACH, "Node is unreachable"},
+//  {ROAR_ERROR_IDREMOVED,   "Identifier removed"},
+//  {ROAR_ERROR_INPROGRESS,  "Operation in progress"},
+//  {ROAR_ERROR_NOCHILD,     "No child processesobject"},
+//  {ROAR_ERROR_NETUNREACH,  "Network unreachable"},
+//  {ROAR_ERROR_CANCELED,    "Operation canceled"},
+//  {ROAR_ERROR_ISDIR,       "Is a directory"},
+//  {ROAR_ERROR_NOTDIR,      "Not a directory"},
+//  {ROAR_ERROR_BADEXEC,     "Executable file format error"},
+//  {ROAR_ERROR_ISCONN,      "Socket/Object is connected"},
+  {ROAR_ERROR_DEADLOCK,    "Mouse would die"},
+//  {ROAR_ERROR_CONNRST,     "Connection reset"},
+//  {ROAR_ERROR_BADFH,       "Bad file handle"},
+//  {ROAR_ERROR_NOTSOCK,     "Not a socket"},
+//  {ROAR_ERROR_TOOMANYARGS, "Argument list too long"},
+//  {ROAR_ERROR_TOOLARGE,    "File/Object too large"},
+//  {ROAR_ERROR_DESTADDRREQ, "Destination address required"},
+//  {ROAR_ERROR_AFNOTSUP,    "Address family not supported"},
+//  {ROAR_ERROR_NOPOWER,     "Operation can not be completed because we are low on power"},
+//  {ROAR_ERROR_USER,        "Error in front of screen"},
+//  {ROAR_ERROR_NFILE,       "Too many filesobjects open in system"},
+//  {ROAR_ERROR_STALE,       "Stale file handle or object"},
+  {ROAR_ERROR_XDEVLINK,    "Mice tails too short for kinking"},
+//  {ROAR_ERROR_MLINK,       "Too many links to file or object"},
+//  {ROAR_ERROR_NONET,       "Not connected to any network"},
+//  {ROAR_ERROR_CONNRSTNET,  "Connection reset by network"},
+//  {ROAR_ERROR_CONNABORTED, "Connection aborted"},
+  {-1, NULL}
  };
  int i;
+
+ if ( config->opmode == ROAR_LIBROAR_CONFIG_OPMODE_FUNNY )
+  for (i = 0; msgs_funny[i].msg != NULL; i++)
+   if ( msgs_funny[i].err == error )
+    return msgs_funny[i].msg;
 
  for (i = 0; msgs[i].msg != NULL; i++)
