apply debian/patches/07_cachedirtag.diff

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10908 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2008-11-03 14:04:15 +00:00
commit 0c20caeddc
3 changed files with 42 additions and 0 deletions

View file

@ -1128,6 +1128,14 @@ int main(int argc, char *argv[])
exit(1); exit(1);
} }
if (!getenv("CCACHE_READONLY")) {
if (create_cachedirtag(cache_dir) != 0) {
fprintf(stderr,"ccache: failed to create %s/CACHEDIR.TAG (%s)\n",
cache_dir, strerror(errno));
exit(1);
}
}
ccache(argc, argv); ccache(argc, argv);
return 1; return 1;
} }

View file

@ -94,6 +94,7 @@ int move_file(const char *src, const char *dest);
int test_if_compressed(const char *filename); int test_if_compressed(const char *filename);
int create_dir(const char *dir); int create_dir(const char *dir);
int create_cachedirtag(const char *dir);
void x_asprintf(char **ptr, const char *format, ...); void x_asprintf(char **ptr, const char *format, ...);
char *x_strdup(const char *s); char *x_strdup(const char *s);
void *x_realloc(void *ptr, size_t size); void *x_realloc(void *ptr, size_t size);

View file

@ -329,6 +329,39 @@ int create_dir(const char *dir)
return 0; return 0;
} }
char const CACHEDIR_TAG[] =
"Signature: 8a477f597d28d172789f06886806bc55\n"
"# This file is a cache directory tag created by ccache.\n"
"# For information about cache directory tags, see:\n"
"# http://www.brynosaurus.com/cachedir/\n";
int create_cachedirtag(const char *dir)
{
char *filename;
struct stat st;
FILE *f;
x_asprintf(&filename, "%s/CACHEDIR.TAG", dir);
if (stat(filename, &st) == 0) {
if (S_ISREG(st.st_mode)) {
goto success;
}
errno = EEXIST;
goto error;
}
f = fopen(filename, "w");
if (!f) goto error;
if (fwrite(CACHEDIR_TAG, sizeof(CACHEDIR_TAG)-1, 1, f) != 1) {
goto error;
}
if (fclose(f)) goto error;
success:
free(filename);
return 0;
error:
free(filename);
return 1;
}
/* /*
this is like asprintf() but dies if the malloc fails this is like asprintf() but dies if the malloc fails
note that we use vsnprintf in a rather poor way to make this more portable note that we use vsnprintf in a rather poor way to make this more portable