--- ccache.c
+++ ccache.c
@@ -836,6 +836,13 @@
 {
 	/* find the real compiler */
 	find_compiler(argc, argv);
+
+	/* use the real compiler if HOME is not set */
+	if (!cache_dir) {
+		cc_log("Unable to determine home directory\n");
+		cc_log("ccache is disabled\n");
+		failed();
+	}
 	
 	/* we might be disabled */
 	if (getenv("CCACHE_DISABLE")) {
@@ -895,6 +902,13 @@
 	printf("-V                      print version number\n");
 }
 
+static void check_cache_dir(void)
+{
+	if (!cache_dir) {
+		fatal("Unable to determine home directory");
+	}
+}
+
 /* the main program when not doing a compile */
 static int ccache_main(int argc, char *argv[])
 {
@@ -914,31 +928,37 @@
 			exit(0);
 			
 		case 's':
+			check_cache_dir();
 			stats_summary();
 			break;
 
 		case 'c':
+			check_cache_dir();
 			cleanup_all(cache_dir);
 			printf("Cleaned cache\n");
 			break;
 
 		case 'C':
+			check_cache_dir();
 			wipe_all(cache_dir);
 			printf("Cleared cache\n");
 			break;
 
 		case 'z':
+			check_cache_dir();
 			stats_zero();
 			printf("Statistics cleared\n");
 			break;
 
 		case 'F':
+			check_cache_dir();
 			v = atoi(optarg);
 			stats_set_limits(v, -1);
 			printf("Set cache file limit to %u\n", (unsigned)v);
 			break;
 
 		case 'M':
+			check_cache_dir();
 			v = value_units(optarg);
 			stats_set_limits(-1, v);
 			printf("Set cache size limit to %uk\n", (unsigned)v);
@@ -983,7 +1003,10 @@
 
 	cache_dir = getenv("CCACHE_DIR");
 	if (!cache_dir) {
-		x_asprintf(&cache_dir, "%s/.ccache", get_home_directory());
+		const char *home_directory = get_home_directory();
+		if (home_directory) {
+			x_asprintf(&cache_dir, "%s/.ccache", home_directory);
+		}
 	}
 
 	temp_dir = getenv("CCACHE_TEMPDIR");
@@ -1023,7 +1046,7 @@
 	}
 
 	/* make sure the cache dir exists */
-	if (create_dir(cache_dir) != 0) {
+	if (cache_dir && (create_dir(cache_dir) != 0)) {
 		fprintf(stderr,"ccache: failed to create %s (%s)\n", 
 			cache_dir, strerror(errno));
 		exit(1);
--- util.c
+++ util.c
@@ -448,7 +448,7 @@
 		}
 	}
 #endif
-	fatal("Unable to determine home directory");
+	cc_log("Unable to determine home directory");
 	return NULL;
 }
 
