S_ISGID
fs->st_mode & ~(S_ISUID | S_ISGID));
fs->st_mode &= S_ISUID | S_ISGID | S_ISVTX |
ts.st_mode &= S_ISUID | S_ISGID | S_ISVTX |
fs->st_mode &= ~(S_ISUID | S_ISGID);
else if (mode & S_ISGID)
if (oldmode & (S_ISUID | S_ISGID)) {
sbp->st_mode &= ~(S_ISUID | S_ISGID);
#define SETBITS (S_ISUID | S_ISGID)
return (s.st_mode & S_ISGID) != 0;
if((st->st_mode & S_ISGID)) {
#define MODEMASK (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)
switch (mode & (S_IXGRP | S_ISGID)) {
case S_ISGID:
case S_IXGRP | S_ISGID:
#define FILEMODEMASK (S_ISUID|S_ISGID|S_IRWXU|S_IRWXG|S_IRWXO)
#define STANDARD_BITS (S_ISUID|S_ISGID|S_IRWXU|S_IRWXG|S_IRWXO)
who |= S_ISGID|S_IRWXG;
perm |= S_ISUID|S_ISGID;
switch (mode & (S_IXGRP | S_ISGID)) {
case S_ISGID:
case S_IXGRP | S_ISGID:
if (va.va_mode & (S_ISUID | S_ISGID)) {
mode_t mode = va.va_mode & ~(S_ISUID | S_ISGID);
vap->va_mode &= ~(S_ISUID | S_ISGID);
vap->va_mode = old_va.va_mode & ~(S_ISUID | S_ISGID);
if (checkperm && (vap->va_mode & S_ISGID)) {
tmode ^= S_ISGID;
tmode ^= S_ISGID;
if ((mode & S_ISGID) == S_ISGID)
mode &= ~S_ISGID;
if (!groupmember(node->tn_gid, cred) && (mode & S_ISGID)) {
if ((node->tn_mode & (S_ISUID | S_ISGID)) != 0 &&
newmode = node->tn_mode & ~(S_ISUID | S_ISGID);
if (node->tn_mode & (S_ISUID | S_ISGID)) {
newmode = node->tn_mode & ~(S_ISUID | S_ISGID);
credential_changing |= (attr.va_mode & S_ISGID) &&
if (attr.va_mode & S_ISGID)
match = (vap->va_mode & S_ISGID);
if (error == 0 && (mode & (S_ISUID|S_ISGID)) != 0)
#define ALLPERMS (S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO)
#define ALLPERMS (S_ISUID | S_ISGID | S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO)
error = chmod(fpath, 0600 | S_ISGID);
error = chmod(fpath, 0600 | S_ISGID);
fs->st_mode &= S_ISUID|S_ISGID|S_IRWXU|S_IRWXG|S_IRWXO;
fs->st_mode &= ~(S_ISUID|S_ISGID);
(S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO);
sb.st_mode &= ~(S_ISUID|S_ISGID);
sb.st_mode &= S_ISUID | S_ISGID | S_IRWXU | S_IRWXG | S_IRWXO;
S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISTXT;
quad(mode & S_IXGRP, mode & S_ISGID),