++
++ /* Remove any extraneous names. */
++ for (name = namebuf; list_len > 0; name += name_len) {
++ name_len = strlen(name) + 1;
++ list_len -= name_len;
++
++#ifdef HAVE_LINUX_XATTRS
++ /* We always ignore the system namespace, and non-root
++ * ignores everything but the user namespace. */
++ if (am_root ? HAS_PREFIX(name, SYSTEM_PREFIX)
++ : !HAS_PREFIX(name, USER_PREFIX))
++ continue;
++#endif
++
++ for (i = 0; i < xalp->count; i++) {
++ if (strcmp(name, rxas[i].name) == 0)
++ break;
++ }
++ if (i == xalp->count) {
++ int status = sys_lremovexattr(fname, name);
++ if (status < 0) {
++ rsyserr(FERROR, errno,
++ "rsync_xal_clear: lremovexattr(\"%s\",\"%s\") failed",
++ fname, name);
++ ret = -1;
++ }
++ }
++ }
++