PSID copy_sid(PSID sid)
{
if(!sid || !IsValidSid(sid))
- return 0;
+ return nullptr;
DWORD len = GetLengthSid(sid);
PSID copy = reinterpret_cast<PSID>(HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len));
if(!CopySid(len, copy, sid))
char domain[1024];
DWORD dlen = sizeof(domain);
SID_NAME_USE use;
- if(!LookupAccountSid(0, sid, name, &nlen, domain, &dlen, &use))
+ if(!LookupAccountSid(nullptr, sid, name, &nlen, domain, &dlen, &use))
throw Msp::system_error("LookupAccountSid");
return Msp::format("%s/%s", name, domain);
}
Stat::Private::~Private()
{
- if(owner_id)
+ if(owner_id!=INVALID_UID)
HeapFree(GetProcessHeap(), 0, owner_id);
- if(group_id)
+ if(group_id!=INVALID_GID)
HeapFree(GetProcessHeap(), 0, group_id);
}
void Stat::Private::fill_owner_info(Stat::OwnerInfo &result)
{
- if(owner_id)
+ if(owner_id!=INVALID_UID)
result.owner = get_account_name(owner_id);
else
result.owner = "None";
- if(group_id)
+ if(group_id!=INVALID_GID)
result.group = get_account_name(group_id);
else
result.group = "None";
Stat Stat::stat(const Path &path)
{
HANDLE handle;
- handle = CreateFile(path.str().c_str(), READ_CONTROL, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_BACKUP_SEMANTICS, 0);
+ handle = CreateFile(path.str().c_str(), READ_CONTROL, FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_BACKUP_SEMANTICS, nullptr);
if(handle==INVALID_HANDLE_VALUE)
{
DWORD err = GetLastError();
- if(err==ERROR_FILE_NOT_FOUND)
+ if(err==ERROR_FILE_NOT_FOUND || err==ERROR_PATH_NOT_FOUND)
return Stat();
else
- throw system_error("CreateFile", err);
+ throw system_error(format("CreateFile(%s)", path), err);
}
BY_HANDLE_FILE_INFORMATION info;
}
Stat result;
+ result.exists = true;
if(info.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
result.type = DIRECTORY;
else
result.mtime = Time::TimeStamp(Time::filetime_to_rawtime(info.ftLastWriteTime));
PSECURITY_DESCRIPTOR sec_desc;
- PSID owner = 0;
- PSID group = 0;
+ PSID owner = nullptr;
+ PSID group = nullptr;
const SECURITY_INFORMATION sec_info = OWNER_SECURITY_INFORMATION|GROUP_SECURITY_INFORMATION;
- DWORD err = GetSecurityInfo(handle, SE_FILE_OBJECT, sec_info, &owner, &group, 0, 0, &sec_desc);
+ DWORD err = GetSecurityInfo(handle, SE_FILE_OBJECT, sec_info, &owner, &group, nullptr, nullptr, &sec_desc);
if(err)
{
CloseHandle(handle);