mirror of https://github.com/swig/swig
101 lines
2.1 KiB
Diff
101 lines
2.1 KiB
Diff
--- 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;
|
|
}
|
|
|