*/
bool chown(const std::string& path, const I2n::User& user, const I2n::Group& group)
{
- uid_t uid= user.Uid;
- if (uid<0) return false;
- gid_t gid= group.Gid;
- if (gid<0) gid= user.Gid;
- if (gid<0) return false;
- int res= ::chown( path.c_str(), uid, gid);
- return (res==0);
+ uid_t uid = user.Uid;
+ gid_t gid = group.Gid;
+ // Use sentinel value check for unsigned types
+ if (uid == static_cast<uid_t>(-1))
+ return false;
+ if (gid == static_cast<gid_t>(-1))
+ gid = user.Gid;
+ if (gid == static_cast<gid_t>(-1))
+ return false;
+ int res = ::chown(path.c_str(), uid, gid);
+ return (res == 0);
} // eo chown(const std::string&,const User&,const Group&)
/**