本文整理汇总了C++中FileInfo::Attr方法的典型用法代码示例。如果您正苦于以下问题:C++ FileInfo::Attr方法的具体用法?C++ FileInfo::Attr怎么用?C++ FileInfo::Attr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FileInfo
的用法示例。
在下文中一共展示了FileInfo::Attr方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
FileInfo *ShareMng::SetFileInfo(char *fname)
{
WIN32_FIND_DATA_U8 fdat;
if (!GetFileInfomationU8(fname, &fdat)) return FALSE;
FileInfo *info = new FileInfo;
UINT attr = (fdat.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? IPMSG_FILE_DIR : IPMSG_FILE_REGULAR;
attr |= (fdat.dwFileAttributes & FILE_ATTRIBUTE_READONLY) ? IPMSG_FILE_RONLYOPT : 0;
attr |= (fdat.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM) ? IPMSG_FILE_SYSTEMOPT : 0;
info->SetAttr(attr);
info->SetFname(fname);
if (GET_MODE(info->Attr()) == IPMSG_FILE_DIR)
{
info->SetSize(0);
strncpyz(cfg->lastOpenDir, fname, MAX_PATH_U8);
}
else {
info->SetSize((_int64)fdat.nFileSizeHigh << 32 | fdat.nFileSizeLow);
PathToDir(fname, cfg->lastOpenDir);
}
info->SetMtime(FileTime2UnixTime(&fdat.ftLastWriteTime));
info->SetCrtime(FileTime2UnixTime(&fdat.ftCreationTime));
info->SetAtime(FileTime2UnixTime(&fdat.ftLastAccessTime));
return info;
}
示例2: FileInfo
/*
ファイル共有(添付)情報をデコード
注意:破壊読出し。使用が終わり次第 FreeDecodeShareMsg を呼び出すこと。
*/
ShareInfo *DecodeShareMsg(char *buf, BOOL enable_clip)
{
ShareInfo *shareInfo = new ShareInfo;
FileInfo *fileInfo = NULL;
char *tok, *p, *p2, *p3;
char *file = separate_token(buf, FILELIST_SEPARATOR, &p);
for (int i=0; file; i++, file=separate_token(NULL, FILELIST_SEPARATOR, &p))
{
ConvertShareMsgEscape(file); // "::" -> ';'
if ((tok = separate_token(file, ':', &p2)) == NULL)
break;
fileInfo = new FileInfo(atoi(tok));
if ((tok = separate_token(NULL, ':', &p2)) == NULL || strlen(tok) >= MAX_FILENAME)
break;
while ((p3 = strchr(tok, '?'))) // UNICODE 対応までの暫定
*p3 = '_';
if (!IsValidFileName(tok))
break;
fileInfo->SetFname(tok);
if ((tok = separate_token(NULL, ':', &p2)) == NULL)
break;
fileInfo->SetSize(hex2ll(tok));
if ((tok = separate_token(NULL, ':', &p2)) == NULL)
break;
fileInfo->SetMtime(strtoul(tok, 0, 16));
if ((tok = separate_token(NULL, ':', &p2)))
{
fileInfo->SetAttr(strtoul(tok, 0, 16));
u_int attr_type = GET_MODE(fileInfo->Attr());
if (attr_type != IPMSG_FILE_DIR &&
attr_type != IPMSG_FILE_REGULAR &&
(!enable_clip || attr_type != IPMSG_FILE_CLIPBOARD))
{
delete fileInfo;
fileInfo = NULL;
continue;
}
if (attr_type == IPMSG_FILE_CLIPBOARD) {
if ((tok = separate_token(NULL, ':', &p2))) {
if (strtoul(tok, 0, 16) == IPMSG_FILE_CLIPBOARDPOS) {
if (separate_token(tok, '=', &p3) &&
(tok = separate_token(NULL, '=', &p3))) {
fileInfo->SetPos(strtoul(tok, 0, 16));
}
}
}
}
}
else fileInfo->SetAttr(IPMSG_FILE_REGULAR);
if ((shareInfo->fileCnt % BIG_ALLOC) == 0)
shareInfo->fileInfo = (FileInfo **)realloc(shareInfo->fileInfo, (shareInfo->fileCnt + BIG_ALLOC) * sizeof(FileInfo *));
shareInfo->fileInfo[shareInfo->fileCnt++] = fileInfo;
fileInfo = NULL;
}
if (fileInfo) // デコード中に抜けた
delete fileInfo;
if (shareInfo->fileCnt <= 0)
{
delete shareInfo;
return NULL;
}
return shareInfo;
}