Skip to content

Commit e0eab5c

Browse files
committed
Thu 5 Mar 2020 17:46:49 EST - prep for Recently Played feature
1 parent e120b61 commit e0eab5c

File tree

2 files changed

+121
-42
lines changed

2 files changed

+121
-42
lines changed

Launchers/retro-esp32/main/main.c

Lines changed: 93 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1367,6 +1367,26 @@
13671367
}
13681368
fclose(f);
13691369

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+
13701390
// printf("\n----- %s END -----\n", __func__);
13711391
}
13721392

@@ -1595,13 +1615,14 @@
15951615
} else {
15961616
read_recents();
15971617
}
1618+
// f = fopen(file, "w+");
15981619
// printf("\nCLOSING: %s", file);
15991620
fclose(f);
16001621
// printf("\n----- %s END -----\n", __func__);
16011622
}
16021623

16031624
void read_recents() {
1604-
// printf("\n----- %s START -----", __func__);
1625+
// printf("\n----- %s START -----", __func__);
16051626

16061627
int n = 0;
16071628
ROMS.total = 0;
@@ -1616,13 +1637,13 @@
16161637
FILE *f;
16171638
f = fopen(file, "rb");
16181639
if(f) {
1619-
// printf("\nREADING: %s\n", file);
1640+
// printf("\nREADING: %s\n", file);
16201641
char line[256];
1642+
16211643
while (fgets(line, sizeof(line), f)) {
16221644
char *ep = &line[strlen(line)-1];
16231645
while (*ep == '\n' || *ep == '\r'){*ep-- = '\0';}
1624-
// printf("\n%s", line);
1625-
size_t len = strlen(line);
1646+
size_t len = strlen(line);
16261647
RECENTS[n] = (char*)malloc(len + 1);
16271648
strcpy(RECENTS[n], line);
16281649
n++;
@@ -1631,34 +1652,86 @@
16311652
}
16321653
fclose(f);
16331654

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__);
16351676
}
16361677

16371678
void add_recent(char *recent) {
16381679
// 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+
16391687
char file[256] = "/sd/odroid/data";
16401688
sprintf(file, "%s/%s", file, RETROESP_FOLDER);
16411689
sprintf(file, "%s/%s", file, RECENT_FILE);
16421690

1643-
bool duplicate = false;
16441691
FILE *f;
1645-
f = fopen(file, "a+");
1692+
f = fopen(file, "rb");
16461693
if(f) {
1647-
printf("\nCHECKING: %s\n", recent);
1694+
// printf("\nCHECKING: %s\n", recent);
16481695
char line[256];
16491696
while (fgets(line, sizeof(line), f)) {
16501697
char *ep = &line[strlen(line)-1];
16511698
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++;
16541705
}
16551706
}
16561707
}
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");
16591730
}
1731+
16601732
fclose(f);
1661-
// printf("\n----- %s END -----\n", __func__);
1733+
1734+
// printf("\n----- %s END -----\n", __func__);
16621735
}
16631736

16641737
void delete_recent(char *recent) {
@@ -1700,7 +1773,7 @@
17001773
}
17011774

17021775
void draw_recents() {
1703-
// printf("\n----- %s START -----", __func__);
1776+
// printf("\n----- %s START -----", __func__);
17041777
int x = ORIGIN.x;
17051778
int y = POS.y + 48;
17061779
ROMS.page = ROMS.offset/ROMS.limit;
@@ -2424,6 +2497,12 @@
24242497
LAUNCHER = true;
24252498
odroid_settings_RomFilePath_set(file_to_load);
24262499
draw_launcher();
2500+
2501+
/*
2502+
char path[256] = "";
2503+
sprintf(path, "%s/%s", ROM.path, ROM.name);
2504+
add_recent(path);
2505+
*/
24272506
}
24282507
} else {
24292508
if(ROMS.total != 0) {

0 commit comments

Comments
 (0)