/*
* Full path to the file containing the cached object code
- * (cachedir/a/b/cdef[...]-size).
+ * (cachedir/a/b/cdef[...]-size.o).
*/
static char *cached_obj;
}
object_name = format_file_hash(object_hash);
- cached_obj = get_path_in_cache(object_name, "", nlevels);
+ cached_obj = get_path_in_cache(object_name, ".o", nlevels);
cached_stderr = get_path_in_cache(object_name, ".stderr", nlevels);
cached_dep = get_path_in_cache(object_name, ".d", nlevels);
x_asprintf(&stats_file, "%s/%c/stats", cache_dir, object_name[0]);
static int is_object_file(const char *fname)
{
int i;
+ int len;
- for (i = strlen(fname) - 1; i >= 0; i--) {
+ len = strlen(fname);
+ if (len < 2) {
+ return 0;
+ }
+
+ /* ccache 3.0 and later: */
+ if (len >= 2 && fname[len - 2] == '.' && fname[len - 1] == 'o') {
+ return 1;
+ }
+
+ /* ccache 2.4 and earlier: */
+ for (i = len - 1; i >= 0; i--) {
if (fname[i] == '.') {
return 0;
} else if (fname[i] == '-') {