apply debian/patches/01_no_home.diff

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10903 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2008-11-03 13:59:23 +00:00
commit 5236ddf57c
2 changed files with 26 additions and 3 deletions

View file

@ -836,6 +836,13 @@ static void ccache(int argc, char *argv[])
{ {
/* find the real compiler */ /* find the real compiler */
find_compiler(argc, argv); 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 */ /* we might be disabled */
if (getenv("CCACHE_DISABLE")) { if (getenv("CCACHE_DISABLE")) {
@ -895,6 +902,13 @@ static void usage(void)
printf("-V print version number\n"); 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 */ /* the main program when not doing a compile */
static int ccache_main(int argc, char *argv[]) static int ccache_main(int argc, char *argv[])
{ {
@ -914,31 +928,37 @@ static int ccache_main(int argc, char *argv[])
exit(0); exit(0);
case 's': case 's':
check_cache_dir();
stats_summary(); stats_summary();
break; break;
case 'c': case 'c':
check_cache_dir();
cleanup_all(cache_dir); cleanup_all(cache_dir);
printf("Cleaned cache\n"); printf("Cleaned cache\n");
break; break;
case 'C': case 'C':
check_cache_dir();
wipe_all(cache_dir); wipe_all(cache_dir);
printf("Cleared cache\n"); printf("Cleared cache\n");
break; break;
case 'z': case 'z':
check_cache_dir();
stats_zero(); stats_zero();
printf("Statistics cleared\n"); printf("Statistics cleared\n");
break; break;
case 'F': case 'F':
check_cache_dir();
v = atoi(optarg); v = atoi(optarg);
stats_set_limits(v, -1); stats_set_limits(v, -1);
printf("Set cache file limit to %u\n", (unsigned)v); printf("Set cache file limit to %u\n", (unsigned)v);
break; break;
case 'M': case 'M':
check_cache_dir();
v = value_units(optarg); v = value_units(optarg);
stats_set_limits(-1, v); stats_set_limits(-1, v);
printf("Set cache size limit to %uk\n", (unsigned)v); printf("Set cache size limit to %uk\n", (unsigned)v);
@ -983,7 +1003,10 @@ int main(int argc, char *argv[])
cache_dir = getenv("CCACHE_DIR"); cache_dir = getenv("CCACHE_DIR");
if (!cache_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"); temp_dir = getenv("CCACHE_TEMPDIR");
@ -1023,7 +1046,7 @@ int main(int argc, char *argv[])
} }
/* make sure the cache dir exists */ /* 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", fprintf(stderr,"ccache: failed to create %s (%s)\n",
cache_dir, strerror(errno)); cache_dir, strerror(errno));
exit(1); exit(1);

View file

@ -448,7 +448,7 @@ const char *get_home_directory(void)
} }
} }
#endif #endif
fatal("Unable to determine home directory"); cc_log("Unable to determine home directory");
return NULL; return NULL;
} }