diff options
author | Wayne Davison <wayned@samba.org> | 2009-08-08 13:21:26 -0700 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2009-08-08 13:21:26 -0700 |
commit | 0d5ebab1d6df5169c5834c02c978fd5bb67421ca (patch) | |
tree | 6489a5bd7de6fbd5ecbe888696fedaf1f1fb5f74 /xattrs.c | |
parent | dab0fb7cf0f63bb6337eaebb69571408f7bed244 (diff) | |
download | android_external_rsync-0d5ebab1d6df5169c5834c02c978fd5bb67421ca.tar.gz android_external_rsync-0d5ebab1d6df5169c5834c02c978fd5bb67421ca.tar.bz2 android_external_rsync-0d5ebab1d6df5169c5834c02c978fd5bb67421ca.zip |
Add conditional support for excluding types of files from xattr ops.
Diffstat (limited to 'xattrs.c')
-rw-r--r-- | xattrs.c | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -284,6 +284,20 @@ int get_xattr(const char *fname, stat_x *sxp) { sxp->xattr = new(item_list); *sxp->xattr = empty_xattr; + +#ifdef NO_SPECIAL_XATTRS + if (IS_SPECIAL(sxp->st.st_mode)) + return 0; +#endif +#ifdef NO_DEVICE_XATTRS + if (IS_DEVICE(sxp->st.st_mode)) + return 0; +#endif +#ifdef NO_SYMLINK_XATTRS + if (S_ISLNK(sxp->st.st_mode)) + return 0; +#endif + if (rsync_xal_get(fname, sxp->xattr) < 0) { free_xattr(sxp); return -1; @@ -884,6 +898,25 @@ int set_xattr(const char *fname, const struct file_struct *file, return -1; } +#ifdef NO_SPECIAL_XATTRS + if (IS_SPECIAL(sxp->st.st_mode)) { + errno = ENOTSUP; + return -1; + } +#endif +#ifdef NO_DEVICE_XATTRS + if (IS_DEVICE(sxp->st.st_mode)) { + errno = ENOTSUP; + return -1; + } +#endif +#ifdef NO_SYMLINK_XATTRS + if (S_ISLNK(sxp->st.st_mode)) { + errno = ENOTSUP; + return -1; + } +#endif + ndx = F_XATTR(file); return rsync_xal_set(fname, lst + ndx, fnamecmp, sxp); } |