i++;
} while (size);
- /* if we're exactly at a chunk size, remove the next one (if wasn't removed
- before) */
- if (ret >= 0 && chunk_size == CHAIN_XATTR_MAX_BLOCK_LEN) {
- get_raw_xattr_name(name, i, raw_name, sizeof(raw_name));
- int r = sys_removexattr(fn, raw_name);
- if (r < 0 && r != -ENODATA)
- ret = r;
+ if (ret >= 0 ) {
+ int r;
+ do {
+ get_raw_xattr_name(name, i, raw_name, sizeof(raw_name));
+ r = sys_removexattr(fn, raw_name);
+ if (r < 0 && r != -ENODATA)
+ ret = r;
+ i++;
+ } while (r != -ENODATA);
}
return ret;
i++;
} while (size);
- /* if we're exactly at a chunk size, remove the next one (if wasn't removed
- before) */
- if (ret >= 0 && chunk_size == CHAIN_XATTR_MAX_BLOCK_LEN) {
- get_raw_xattr_name(name, i, raw_name, sizeof(raw_name));
- int r = sys_fremovexattr(fd, raw_name);
- if (r < 0 && r != -ENODATA)
- ret = r;
+ if (ret >= 0) {
+ int r;
+ do {
+ get_raw_xattr_name(name, i, raw_name, sizeof(raw_name));
+ r = sys_fremovexattr(fd, raw_name);
+ if (r < 0 && r != -ENODATA)
+ ret = r;
+ i++;
+ } while (r != -ENODATA);
}
return ret;