Index: /neercs/trunk/src/main.c
===================================================================
--- /neercs/trunk/src/main.c	(revision 2496)
+++ /neercs/trunk/src/main.c	(revision 2497)
@@ -81,5 +81,5 @@
     struct screen_list *screen_list = NULL;
     struct passwd *user_info;
-    char *user_path = NULL, *session_name = NULL;
+    char *user_path = NULL, *user_dir = NULL, *session_name = NULL;
     int i, args, s=0;
     int eof = 0, refresh = 1, command = 0;
@@ -104,12 +104,18 @@
 
     /* Build local config file path */
-    user_info = getpwuid(getuid());
-    if(user_info)
-    {
-        user_path = malloc(strlen(user_info->pw_dir) + strlen("/.neercsrc") + 1);
-        sprintf(user_path, "%s/%s", user_info->pw_dir, ".neercsrc");
-    }
-
-
+    user_dir = getenv("HOME");
+    if(!user_dir)
+    {
+        user_info = getpwuid(getuid());
+        if(user_info)
+        {
+            user_dir = user_info->pw_dir;
+        }
+    }
+    if(user_dir)
+    {
+        user_path = malloc(strlen(user_dir) + strlen("/.neercsrc") + 1);
+        sprintf(user_path, "%s/%s", user_dir, ".neercsrc");
+    }
 
     screen_list->recurrent_list = (struct recurrent_list*) malloc(sizeof(struct recurrent_list));
@@ -445,5 +451,7 @@
     if(screen_list->dp)
         caca_free_display(screen_list->dp);
+
     cucul_free_canvas(screen_list->cv);
+
     for(i = 0; i < screen_list->count; i++)
     {
@@ -455,4 +463,5 @@
         free(screen_list->socket_path);
     }
+
     if(screen_list->socket)
         close(screen_list->socket);
@@ -462,5 +471,4 @@
 
     struct option *option = screen_list->config;
-
 
     while(option)
@@ -470,7 +478,6 @@
         if(kromeugnon->key)   free(kromeugnon->key);
         if(kromeugnon->value) free(kromeugnon->value);
-        if(kromeugnon)        free(kromeugnon);
-    }
-
+        free(kromeugnon);
+    }
 
     for(i=0; i<screen_list->recurrent_list->count; i++)
