mem bug, install games while browsing
This commit is contained in:
parent
bb1c124429
commit
b844752bd8
|
@ -111,7 +111,7 @@ static void games_sort()
|
|||
{
|
||||
qsort(games, games_nr, sizeof(struct game), cmp_game);
|
||||
}
|
||||
int games_add(const char *path, const char *dir)
|
||||
static int games_add(const char *path, const char *dir)
|
||||
{
|
||||
char *p;
|
||||
if (!is_game(path, dir))
|
||||
|
@ -146,6 +146,9 @@ int games_replace(const char *path, const char *dir)
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
games = realloc(games, sizeof(struct game) * (1 + games_nr));
|
||||
if (!games)
|
||||
return -1;
|
||||
return games_add(path, dir);
|
||||
}
|
||||
|
||||
|
@ -2352,7 +2355,7 @@ int game_from_disk(void)
|
|||
b = basename(b);
|
||||
/* fprintf(stderr,"%s:%s\n", d, b); */
|
||||
#ifdef _USE_UNPACK
|
||||
p = game_tmp_path();
|
||||
p = game_local_games_path(1);
|
||||
fprintf(stderr,"Trying to install: %s\n", g);
|
||||
if (!unpack(g, p) && zip_game_dirname[0]) {
|
||||
games_replace(p, zip_game_dirname);
|
||||
|
|
|
@ -21,7 +21,7 @@ extern char *err_msg; /* last error message */
|
|||
extern char game_cwd[]; /* current game cwd */
|
||||
extern char *curgame_dir;
|
||||
|
||||
extern char *game_local_games_path(void);
|
||||
extern char *game_local_games_path(int cr);
|
||||
extern char *game_tmp_path(void);
|
||||
extern int game_theme_select(const char *name);
|
||||
|
||||
|
|
|
@ -158,7 +158,7 @@ int main(int argc, char **argv)
|
|||
}
|
||||
|
||||
if (!nostdgames_sw)
|
||||
games_lookup(game_local_games_path());
|
||||
games_lookup(game_local_games_path(0));
|
||||
|
||||
if (noauto_sw)
|
||||
opt_autosave = 0;
|
||||
|
|
|
@ -143,14 +143,18 @@ char *open_file_dialog(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
char *game_local_games_path(void)
|
||||
char *game_local_games_path(int cr)
|
||||
{
|
||||
struct passwd *pw;
|
||||
pw = getpwuid(getuid());
|
||||
if (!pw)
|
||||
return NULL;
|
||||
|
||||
snprintf(local_games_path, sizeof(local_games_path) - 1 , "%s/.instead/games/", pw->pw_dir);
|
||||
snprintf(local_games_path, sizeof(local_games_path) - 1 , "%s/.instead", pw->pw_dir);
|
||||
if (mkdir(local_games_path, S_IRWXU) && errno != EEXIST)
|
||||
return NULL;
|
||||
strcat(local_games_path,"/games");
|
||||
if (mkdir(local_games_path, S_IRWXU) && errno != EEXIST)
|
||||
return NULL;
|
||||
return local_games_path;
|
||||
}
|
||||
|
||||
|
|
|
@ -108,9 +108,14 @@ char *game_tmp_path(void)
|
|||
return (char*)lpTempPathBuffer;
|
||||
}
|
||||
|
||||
char *game_local_games_path(void)
|
||||
char *game_local_games_path(int cr)
|
||||
{
|
||||
snprintf(local_games_path, sizeof(local_games_path) - 1 , "%s/instead/games/", app_dir());
|
||||
snprintf(local_games_path, sizeof(local_games_path) - 1 , "%s/instead", app_dir());
|
||||
if (mkdir(local_games_path) && errno != EEXIST)
|
||||
return NULL;
|
||||
strcat(local_games_path,"/games");
|
||||
if (mkdir(local_games_path) && errno != EEXIST)
|
||||
return NULL;
|
||||
return local_games_path;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue