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:
parent
6f3603a05a
commit
0c20caeddc
3 changed files with 42 additions and 0 deletions
|
|
@ -1128,6 +1128,14 @@ int main(int argc, char *argv[])
|
|||
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);
|
||||
return 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ int move_file(const char *src, const char *dest);
|
|||
int test_if_compressed(const char *filename);
|
||||
|
||||
int create_dir(const char *dir);
|
||||
int create_cachedirtag(const char *dir);
|
||||
void x_asprintf(char **ptr, const char *format, ...);
|
||||
char *x_strdup(const char *s);
|
||||
void *x_realloc(void *ptr, size_t size);
|
||||
|
|
|
|||
|
|
@ -329,6 +329,39 @@ int create_dir(const char *dir)
|
|||
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
|
||||
note that we use vsnprintf in a rather poor way to make this more portable
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue