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);
|
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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue