- if (preserve_gid && F_GID(file) != GID_NONE) {
- snprintf(gidbuf, sizeof gidbuf, " gid=%ld",
- (long)F_GID(file));
+ if (preserve_gid) {
+ static char parens[] = "(\0)\0\0\0";
+ char *pp = parens + (file->flags & FLAG_SKIP_GROUP ? 0 : 3);
+ snprintf(gidbuf, sizeof gidbuf, " gid=%s%u%s",
+ pp, F_GROUP(file), pp + 2);