BOOL vmsDownloadsGroupsMgr::LoadFromDisk() { fsString strFile = fsGetDataFilePath ("groups.sav"); if (GetFileAttributes (strFile) == DWORD (-1)) { fsDownloads_GroupsMgr grps; if (FALSE == grps.LoadGroups () || grps.GetCount () == 0) { CreateDefaultGroups (); return TRUE; } for (int i = 0; i < grps.GetCount (); i++) { fsDownloadGroup grp; grps.GetGroup (&grp, i); vmsDownloadsGroupSmartPtr grpNew; grpNew.CreateInstance (); grpNew->strName = grp.szName; grpNew->strOutFolder = grp.szOutFolder; grpNew->strExts = grp.szExts; grpNew->nId = grp.bOther ? GRP_OTHER_ID : m_nGrpNextId++; Add (grpNew, NULL, TRUE); } return TRUE; } HANDLE hFile = CreateFile (strFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if (hFile != INVALID_HANDLE_VALUE) { vmsDownloadsGroupsFileHdr hdr; DWORD dw; if (ReadFile (hFile, &hdr, sizeof (hdr), &dw, NULL)) { if (hdr.wVer == DLDSGRPSFILE_CURRENT_VERSION && lstrcmp (hdr.szSig, DLDSGRPSFILE_SIG) == 0) { if (FALSE == ReadFile (hFile, &m_nGrpNextId, sizeof (UINT), &dw, NULL)) return FALSE; LoadGroupsTreeFromFile (hFile, m_tGroups); } } CloseHandle (hFile); } if (m_tGroups->GetLeafCount () == 0) CreateDefaultGroups (); return TRUE; }
BOOL vmsDownloadsGroupsMgr::LoadGroupsTreeFromFile(HANDLE hFile, PDLDS_GROUPS_TREE pRoot) { int cGroups = 0; DWORD dw; if (FALSE == ReadFile (hFile, &cGroups, sizeof (int), &dw, NULL)) return FALSE; while (cGroups-- > 0) { vmsDownloadsGroupSmartPtr pGroup; pGroup.CreateInstance (); if (FALSE == LoadGroupFromFile (hFile, pGroup)) return FALSE; PDLDS_GROUPS_TREE pGroupRoot = Add (pGroup, pRoot, TRUE, true); if (FALSE == LoadGroupsTreeFromFile (hFile, pGroupRoot)) return FALSE; } return TRUE; }