MCPcopy Create free account
hub / github.com/BernardoGiordano/Checkpoint / scanCard

Method scanCard

3ds/source/loader.cpp:317–383  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

315}
316
317bool TitleCatalog::scanCard(void)
318{
319 if (mLoading) {
320 return false;
321 }
322
323 static bool isScanning = false;
324 if (isScanning) {
325 return false;
326 }
327 else {
328 isScanning = true;
329 }
330
331 bool ret = false;
332 Result res = 0;
333 u32 count = 0;
334 FS_CardType cardType;
335 res = FSUSER_GetCardType(&cardType);
336 if (R_SUCCEEDED(res)) {
337 if (cardType == CARD_CTR) {
338 res = AM_GetTitleCount(MEDIATYPE_GAME_CARD, &count);
339 if (R_SUCCEEDED(res) && count > 0) {
340 u64 id;
341 res = AM_GetTitleList(NULL, MEDIATYPE_GAME_CARD, 1, &id);
342 if (validId(id)) {
343 Title title;
344 IconStore cardIcons;
345 if (TitleProbe::probe(title, id, MEDIATYPE_GAME_CARD, cardType, cardIcons)) {
346 ret = true;
347 if (title.accessibleSave()) {
348 std::lock_guard<std::mutex> lock(mMutex);
349 if (mSaves.empty() || mSaves.at(0).mediaType() != MEDIATYPE_GAME_CARD) {
350 mIcons.mergeFrom(cardIcons);
351 mSaves.insert(mSaves.begin(), title);
352 }
353 }
354 if (title.accessibleExtdata()) {
355 std::lock_guard<std::mutex> lock(mMutex);
356 if (mExtdatas.empty() || mExtdatas.at(0).mediaType() != MEDIATYPE_GAME_CARD) {
357 mIcons.mergeFrom(cardIcons);
358 mExtdatas.insert(mExtdatas.begin(), title);
359 }
360 }
361 }
362 }
363 }
364 }
365 else {
366 Title title;
367 IconStore cardIcons;
368 if (TitleProbe::probe(title, 0, MEDIATYPE_GAME_CARD, cardType, cardIcons)) {
369 ret = true;
370 std::lock_guard<std::mutex> lock(mMutex);
371 if (mSaves.empty() || mSaves.at(0).mediaType() != MEDIATYPE_GAME_CARD) {
372 mIcons.mergeFrom(cardIcons);
373 mSaves.insert(mSaves.begin(), title);
374 }

Callers 1

cartScanMethod · 0.95

Calls 8

accessibleSaveMethod · 0.80
mediaTypeMethod · 0.80
atMethod · 0.80
mergeFromMethod · 0.80
accessibleExtdataMethod · 0.80
emptyMethod · 0.45
insertMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected