diff -ruN rrdtool-trunk/src/rrd_daemon.c rrd-trunk-clean/src/rrd_daemon.c
--- rrdtool-trunk/src/rrd_daemon.c	2010-04-22 17:55:22.000000000 +0300
+++ rrd-trunk-clean/src/rrd_daemon.c	2010-04-22 17:20:37.000000000 +0300
@@ -2293,6 +2293,10 @@
   }
 
   dir = opendir(journal_dir);
+  if (!dir) {
+    RRDD_LOG(LOG_CRIT, "journal_init: opendir(%s) failed\n", journal_dir);
+    return;
+  }
   while ((dent = readdir(dir)) != NULL)
   {
      /* looks like a journal file? */
@@ -3244,7 +3244,11 @@
 
       case 'j':
       {
-        const char *dir = journal_dir = strdup(optarg);
+        char journal_dir_actual[PATH_MAX];
+        const char *dir;
+
+        dir = journal_dir = strdup(realpath((const char *)optarg, journal_dir_actual));
 
         status = rrd_mkdir_p(dir, 0777);
         if (status != 0)
