MCPcopy Create free account
hub / github.com/abbeycode/UnrarKit / Next

Method Next

Libraries/unrar/find.cpp:34–105  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

32
33
34bool FindFile::Next(FindData *fd,bool GetSymLink)
35{
36 fd->Error=false;
37 if (*FindMask==0)
38 return false;
39#ifdef _WIN_ALL
40 if (FirstCall)
41 {
42 if ((hFind=Win32Find(INVALID_HANDLE_VALUE,FindMask,fd))==INVALID_HANDLE_VALUE)
43 return false;
44 }
45 else
46 if (Win32Find(hFind,FindMask,fd)==INVALID_HANDLE_VALUE)
47 return false;
48#else
49 if (FirstCall)
50 {
51 wchar DirName[NM];
52 wcsncpyz(DirName,FindMask,ASIZE(DirName));
53 RemoveNameFromPath(DirName);
54 if (*DirName==0)
55 wcsncpyz(DirName,L".",ASIZE(DirName));
56 char DirNameA[NM];
57 WideToChar(DirName,DirNameA,ASIZE(DirNameA));
58 if ((dirp=opendir(DirNameA))==NULL)
59 {
60 fd->Error=(errno!=ENOENT);
61 return false;
62 }
63 }
64 while (1)
65 {
66 wchar Name[NM];
67 struct dirent *ent=readdir(dirp);
68 if (ent==NULL)
69 return false;
70 if (strcmp(ent->d_name,".")==0 || strcmp(ent->d_name,"..")==0)
71 continue;
72 if (!CharToWide(ent->d_name,Name,ASIZE(Name)))
73 uiMsg(UIERROR_INVALIDNAME,UINULL,Name);
74
75 if (CmpName(FindMask,Name,MATCH_NAMES))
76 {
77 wchar FullName[NM];
78 wcsncpyz(FullName,FindMask,ASIZE(FullName));
79 *PointToName(FullName)=0;
80 if (wcslen(FullName)+wcslen(Name)>=ASIZE(FullName)-1)
81 {
82 uiMsg(UIERROR_PATHTOOLONG,FullName,L"",Name);
83 return false;
84 }
85 wcsncatz(FullName,Name,ASIZE(FullName));
86 if (!FastFind(FullName,fd,GetSymLink))
87 {
88 ErrHandler.OpenErrorMsg(FullName);
89 continue;
90 }
91 wcsncpyz(fd->Name,FullName,ASIZE(fd->Name));

Callers 7

RestoreMethod · 0.80
RestoreMethod · 0.80
RecVolumesTestFunction · 0.80
ExpandFolderMaskMethod · 0.80
FindProcMethod · 0.80
WildFileExistFunction · 0.80
VolNameToFirstNameFunction · 0.80

Calls 11

wcsncpyzFunction · 0.85
RemoveNameFromPathFunction · 0.85
WideToCharFunction · 0.85
CharToWideFunction · 0.85
uiMsgFunction · 0.85
CmpNameFunction · 0.85
PointToNameFunction · 0.85
wcsncatzFunction · 0.85
IsDirFunction · 0.85
IsLinkFunction · 0.85
OpenErrorMsgMethod · 0.80

Tested by

no test coverage detected