- Only pass clang-specific `-stdlib=` to the preprocessor.
+- Improved handling of stale NFS handles.
+
Bug fixes
~~~~~~~~~
}
if (ret == -1) {
- if (errno == ENOENT) {
+ if (errno == ENOENT || errno == ESTALE) {
/* Someone removed the file just before we began copying? */
cc_log("Cache file %s just disappeared from cache", source);
stats_update(STATS_MISSING);
if (x_unlink(path) == 0) {
cache_size -= size;
files_in_cache--;
- } else if (errno != ENOENT) {
+ } else if (errno != ENOENT && errno != ESTALE) {
cc_log("Failed to unlink %s (%s)", path, strerror(errno));
}
}
path = format("%s%s", base, extension);
if (lstat(path, &st) == 0) {
delete_file(path, file_size(&st));
- } else if (errno != ENOENT) {
+ } else if (errno != ENOENT && errno != ESTALE) {
cc_log("Failed to stat %s: %s", path, strerror(errno));
}
free(path);
fname = format("%s/%s", dir, de->d_name);
if (lstat(fname, &st)) {
- if ((errno != ENOENT) && (errno != ESTALE)) {
+ if (errno != ENOENT && errno != ESTALE) {
fatal("lstat %s failed: %s", fname, strerror(errno));
}
free(fname);
}
if (unlink(tmp_name) == -1) {
/* If it was released in a race, that's OK. */
- if (errno != ENOENT) {
+ if (errno != ENOENT && errno != ESTALE) {
result = -1;
saved_errno = errno;
}