|
1367 | 1367 | }
|
1368 | 1368 | fclose(f);
|
1369 | 1369 |
|
| 1370 | + // printf("\nROMS.total:%d\n", ROMS.total); |
| 1371 | + char** TEMP = (char**)malloc((ROMS.total+1) * sizeof(void*)); |
| 1372 | + for(int n = ROMS.total-1; n >= 0; n--) { |
| 1373 | + int i = (ROMS.total-1-n); |
| 1374 | + size_t len = strlen(FAVORITES[n]); |
| 1375 | + TEMP[i] = (char*)malloc(len + 1); |
| 1376 | + strcpy(TEMP[i], FAVORITES[n]); |
| 1377 | + } |
| 1378 | + |
| 1379 | + free(FAVORITES); |
| 1380 | + FAVORITES = (char**)malloc((50) * sizeof(void*)); |
| 1381 | + |
| 1382 | + for(int n = 0; n < ROMS.total; n++) { |
| 1383 | + size_t len = strlen(TEMP[n]); |
| 1384 | + FAVORITES[n] = (char*)malloc(len + 1); |
| 1385 | + strcpy(FAVORITES[n], TEMP[n]); |
| 1386 | + } |
| 1387 | + |
| 1388 | + free(TEMP); |
| 1389 | + |
1370 | 1390 | // printf("\n----- %s END -----\n", __func__);
|
1371 | 1391 | }
|
1372 | 1392 |
|
|
1595 | 1615 | } else {
|
1596 | 1616 | read_recents();
|
1597 | 1617 | }
|
| 1618 | + // f = fopen(file, "w+"); |
1598 | 1619 | // printf("\nCLOSING: %s", file);
|
1599 | 1620 | fclose(f);
|
1600 | 1621 | // printf("\n----- %s END -----\n", __func__);
|
1601 | 1622 | }
|
1602 | 1623 |
|
1603 | 1624 | void read_recents() {
|
1604 |
| - // printf("\n----- %s START -----", __func__); |
| 1625 | + // printf("\n----- %s START -----", __func__); |
1605 | 1626 |
|
1606 | 1627 | int n = 0;
|
1607 | 1628 | ROMS.total = 0;
|
|
1616 | 1637 | FILE *f;
|
1617 | 1638 | f = fopen(file, "rb");
|
1618 | 1639 | if(f) {
|
1619 |
| - // printf("\nREADING: %s\n", file); |
| 1640 | + // printf("\nREADING: %s\n", file); |
1620 | 1641 | char line[256];
|
| 1642 | + |
1621 | 1643 | while (fgets(line, sizeof(line), f)) {
|
1622 | 1644 | char *ep = &line[strlen(line)-1];
|
1623 | 1645 | while (*ep == '\n' || *ep == '\r'){*ep-- = '\0';}
|
1624 |
| - // printf("\n%s", line); |
1625 |
| - size_t len = strlen(line); |
| 1646 | + size_t len = strlen(line); |
1626 | 1647 | RECENTS[n] = (char*)malloc(len + 1);
|
1627 | 1648 | strcpy(RECENTS[n], line);
|
1628 | 1649 | n++;
|
|
1631 | 1652 | }
|
1632 | 1653 | fclose(f);
|
1633 | 1654 |
|
1634 |
| - // printf("\n----- %s END -----\n", __func__); |
| 1655 | + // printf("\nROMS.total:%d\n", ROMS.total); |
| 1656 | + char** TEMP = (char**)malloc((ROMS.total+1) * sizeof(void*)); |
| 1657 | + for(int n = ROMS.total-1; n >= 0; n--) { |
| 1658 | + int i = (ROMS.total-1-n); |
| 1659 | + size_t len = strlen(RECENTS[n]); |
| 1660 | + TEMP[i] = (char*)malloc(len + 1); |
| 1661 | + strcpy(TEMP[i], RECENTS[n]); |
| 1662 | + } |
| 1663 | + |
| 1664 | + free(RECENTS); |
| 1665 | + RECENTS = (char**)malloc((50) * sizeof(void*)); |
| 1666 | + |
| 1667 | + for(int n = 0; n < ROMS.total; n++) { |
| 1668 | + size_t len = strlen(TEMP[n]); |
| 1669 | + RECENTS[n] = (char*)malloc(len + 1); |
| 1670 | + strcpy(RECENTS[n], TEMP[n]); |
| 1671 | + } |
| 1672 | + |
| 1673 | + free(TEMP); |
| 1674 | + |
| 1675 | + // printf("\n----- %s END -----\n", __func__); |
1635 | 1676 | }
|
1636 | 1677 |
|
1637 | 1678 | void add_recent(char *recent) {
|
1638 | 1679 | // printf("\n----- %s START -----", __func__);
|
| 1680 | + |
| 1681 | + int n = 0; |
| 1682 | + int count = 0; |
| 1683 | + |
| 1684 | + free(RECENTS); |
| 1685 | + RECENTS = (char**)malloc(50 * sizeof(void*)); |
| 1686 | + |
1639 | 1687 | char file[256] = "/sd/odroid/data";
|
1640 | 1688 | sprintf(file, "%s/%s", file, RETROESP_FOLDER);
|
1641 | 1689 | sprintf(file, "%s/%s", file, RECENT_FILE);
|
1642 | 1690 |
|
1643 |
| - bool duplicate = false; |
1644 | 1691 | FILE *f;
|
1645 |
| - f = fopen(file, "a+"); |
| 1692 | + f = fopen(file, "rb"); |
1646 | 1693 | if(f) {
|
1647 |
| - printf("\nCHECKING: %s\n", recent); |
| 1694 | + // printf("\nCHECKING: %s\n", recent); |
1648 | 1695 | char line[256];
|
1649 | 1696 | while (fgets(line, sizeof(line), f)) {
|
1650 | 1697 | char *ep = &line[strlen(line)-1];
|
1651 | 1698 | while (*ep == '\n' || *ep == '\r'){*ep-- = '\0';}
|
1652 |
| - if(strcmp(recent, line) == 0) { |
1653 |
| - duplicate = true; |
| 1699 | + if(strcmp(recent, line) != 0) { |
| 1700 | + size_t len = strlen(line); |
| 1701 | + RECENTS[n] = (char*)malloc(len + 1); |
| 1702 | + strcpy(RECENTS[n], line); |
| 1703 | + n++; |
| 1704 | + count++; |
1654 | 1705 | }
|
1655 | 1706 | }
|
1656 | 1707 | }
|
1657 |
| - if(!duplicate) { |
1658 |
| - fprintf(f, "%s\n", recent); |
| 1708 | + fclose(f); |
| 1709 | + |
| 1710 | + struct stat st; |
| 1711 | + if (stat(file, &st) == 0) { |
| 1712 | + unlink(file); |
| 1713 | + create_recents(); |
| 1714 | + |
| 1715 | + f = fopen(file, "a+"); |
| 1716 | + if(f) { |
| 1717 | + |
| 1718 | + } |
| 1719 | + for(n = 0; n < count; n++) { |
| 1720 | + size_t len = strlen(RECENTS[n]); |
| 1721 | + if(len > 0) { |
| 1722 | + //printf("\n%s - %d" ,RECENTS[n], len); |
| 1723 | + fprintf(f, "%s\n",RECENTS[n]); |
| 1724 | + } |
| 1725 | + } |
| 1726 | + // printf("\nADDING: %s\n", recent); |
| 1727 | + fprintf(f, "%s\n", recent); |
| 1728 | + } else { |
| 1729 | + // printf("\nUNABLE TO UNLINK\n"); |
1659 | 1730 | }
|
| 1731 | + |
1660 | 1732 | fclose(f);
|
1661 |
| - // printf("\n----- %s END -----\n", __func__); |
| 1733 | + |
| 1734 | + // printf("\n----- %s END -----\n", __func__); |
1662 | 1735 | }
|
1663 | 1736 |
|
1664 | 1737 | void delete_recent(char *recent) {
|
|
1700 | 1773 | }
|
1701 | 1774 |
|
1702 | 1775 | void draw_recents() {
|
1703 |
| -// printf("\n----- %s START -----", __func__); |
| 1776 | + // printf("\n----- %s START -----", __func__); |
1704 | 1777 | int x = ORIGIN.x;
|
1705 | 1778 | int y = POS.y + 48;
|
1706 | 1779 | ROMS.page = ROMS.offset/ROMS.limit;
|
|
2424 | 2497 | LAUNCHER = true;
|
2425 | 2498 | odroid_settings_RomFilePath_set(file_to_load);
|
2426 | 2499 | draw_launcher();
|
| 2500 | + |
| 2501 | + /* |
| 2502 | + char path[256] = ""; |
| 2503 | + sprintf(path, "%s/%s", ROM.path, ROM.name); |
| 2504 | + add_recent(path); |
| 2505 | + */ |
2427 | 2506 | }
|
2428 | 2507 | } else {
|
2429 | 2508 | if(ROMS.total != 0) {
|
|
0 commit comments