#ifdef AFS_DARWIN_ENV
#ifdef AFS_DARWIN80_ENV
#include <sys/ioctl.h>
+#include <sys/xattr.h>
#endif
#include <mach/mach.h>
#ifndef AFS_DARWIN100_ENV
return (0);
}
+static void
+SetNoBackupAttr(char *fullpn)
+{
+#ifdef AFS_DARWIN80_ENV
+ int ret;
+
+ ret = setxattr(fullpn, "com.apple.metadata:com_apple_backup_excludeItem",
+ "com.apple.backupd", strlen("com.apple.backupd"), 0,
+ XATTR_CREATE);
+ if(ret < 0)
+ {
+ if(errno != EEXIST)
+ fprintf(stderr, "afsd: Warning: failed to set attribute to preclude cache backup: %s\n", strerror(errno));
+ }
+#endif
+ return;
+}
+
static int
MoveCacheFile(char *basename, int fromDir, int toDir, int cacheFile,
int maxDir)
from, to, ret, errno);
return -1;
}
+ SetNoBackupAttr(to);
/* Reset directory pointer; fix file counts */
dir_for_V[cacheFile] = toDir;
* Found the file holding the dcache entries.
*/
missing_DCacheFile = 0;
+ SetNoBackupAttr(fullpn_DCacheFile);
} else if (dirNum < 0 && strcmp(currp->d_name, VOLINFOFILE) == 0) {
/*
* Found the file holding the volume info.
*/
missing_VolInfoFile = 0;
+ SetNoBackupAttr(fullpn_VolInfoFile);
} else if (dirNum < 0 && strcmp(currp->d_name, CELLINFOFILE) == 0) {
/*
* Found the file holding the cell info.
*/
missing_CellInfoFile = 0;
+ SetNoBackupAttr(fullpn_CellInfoFile);
} else if ((strcmp(currp->d_name, ".") == 0)
|| (strcmp(currp->d_name, "..") == 0) ||
#ifdef AFS_DECOSF_ENV
cache_dir_list[thisDir]++;
(*vFilesFound)++;
}
+ SetNoBackupAttr(fullpn_VFile);
}
} else if (dir_for_V[vFileNum] >= maxDir