예제 #1
0
static int ethUpdateGameList(void) {
	if (gNetworkStartup != 0)
		return 0;

	sbReadList(&ethGames, ethPrefix, &ethULSizePrev, &ethGameCount);
	return ethGameCount;
}
예제 #2
0
static int ethUpdateGameList(void) {
	int result;

	if (gNetworkStartup != 0)
		return 0;

	if (gPCShareName[0]) {
		if((result = sbReadList(&ethGames, ethPrefix, &ethULSizePrev, &ethGameCount)) < 0){
			gNetworkStartup = ERROR_ETH_SMB_LISTGAMES;
			ethDisplayErrorStatus();
		}
	} else {
		int i, count;
		ShareEntry_t sharelist[128];
		smbGetShareList_in_t getsharelist;
		getsharelist.EE_addr = (void *)&sharelist[0];
		getsharelist.maxent = 128;

		count = fileXioDevctl(ethBase, SMB_DEVCTL_GETSHARELIST, (void *)&getsharelist, sizeof(getsharelist), NULL, 0);
		if (count > 0) {
			free(ethGames);
			ethGames = (base_game_info_t*)malloc(sizeof(base_game_info_t) * count);
			for (i = 0; i < count; i++) {
				LOG("ETHSUPPORT Share found: %s\n", sharelist[i].ShareName);
				base_game_info_t *g = &ethGames[i];
				memcpy(g->name, sharelist[i].ShareName, 32);
				g->name[31] = '\0';
				sprintf(g->startup, "SHARE");
				g->extension[0] = '\0';
				g->parts = 0x00;
				g->media = 0x00;
				g->format = GAME_FORMAT_USBLD;
				g->sizeMB = 0;
			}
			ethGameCount = count;
		}else if(count < 0){
			gNetworkStartup = ERROR_ETH_SMB_LISTSHARES;
			ethDisplayErrorStatus();
		}
	}
	return ethGameCount;
}