From c2ef1fed75a21279a02de9723dbbbcd4a50c4453 Mon Sep 17 00:00:00 2001 From: eukos Date: Fri, 8 Jan 2016 14:11:03 +0100 Subject: [PATCH] Parameter now specifies the working directory for the launcher --- launcher/main.c | 63 ++++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/launcher/main.c b/launcher/main.c index e4a5414..61d0055 100644 --- a/launcher/main.c +++ b/launcher/main.c @@ -4,7 +4,7 @@ #include #include -#include // pwd for home dir +#include typedef unsigned char byte; @@ -111,7 +111,7 @@ void launcher_list_changed(GtkWidget *widget, gpointer label) } } -void launcher_cachefolders(const char *name, GtkWidget *list) +void launcher_cachefolders(GtkWidget *list) { DIR *d; FILE *f; @@ -119,29 +119,30 @@ void launcher_cachefolders(const char *name, GtkWidget *list) char fname[32]; char cFile[80]; - d = opendir(name); + d = opendir("."); + if (d) { - while ((dir = readdir(d)) != NULL) - { - if (dir->d_type == DT_DIR && !(strcmp(dir->d_name, ".") == 0 || strcmp(dir->d_name, "..") == 0)) - { - sprintf(cFile, "%s/%s/info", name, dir->d_name); + while ((dir = readdir(d)) != NULL) + { + if (dir->d_type == DT_DIR && !(strcmp(dir->d_name, ".") == 0 || strcmp(dir->d_name, "..") == 0)) + { + sprintf(cFile, "./%s/info", dir->d_name); - if(access(cFile, R_OK) != -1 ) - { - f = fopen(cFile, "r"); - char cTemp[32]; - fscanf(f, "%35[^\n]", cTemp); - fclose(f); - printf(" Found %s (%s)\n", cTemp, dir->d_name); - sprintf(fname, "%s", dir->d_name); - launcher_add_to_list(list, cTemp, fname); - iGameCnt++; + if(access(cFile, R_OK) != -1 ) + { + f = fopen(cFile, "r"); + char cTemp[32]; + fscanf(f, "%35[^\n]", cTemp); + fclose(f); + printf(" Found %s (%s)\n", cTemp, dir->d_name); + sprintf(fname, "%s", dir->d_name); + launcher_add_to_list(list, cTemp, fname); + iGameCnt++; + } } - } - } - closedir(d); + } + closedir(d); } } @@ -150,9 +151,9 @@ void launcher_start() char cmd[128]; if(strlen(cmd_args) > 0) - sprintf(cmd, "./ngunix.x11 -data id1 -game %s -winsize %d %d -mem %d\n", cmd_args, engine_vid_width, engine_vid_height, engine_memory); + sprintf(cmd, "./ngunix.x11 -data id1 -game %s -winsize %d %d -mem %d\n", cmd_args, engine_vid_width, engine_vid_height, engine_memory); else - sprintf(cmd, "./ngunix.x11 -data id1 -winsize %d %d -mem %d\n", engine_vid_width, engine_vid_height, engine_memory); + sprintf(cmd, "./ngunix.x11 -data id1 -winsize %d %d -mem %d\n", engine_vid_width, engine_vid_height, engine_memory); printf(cmd); system(cmd); @@ -161,7 +162,8 @@ void launcher_start() gboolean resize_list(GtkWidget *window, GdkEvent *event, GtkWidget *widget) { gint width, height; - gtk_window_get_size(window, &width, &height); + iGameCnt = 1; + gtk_window_get_size(GTK_WINDOW(window), &width, &height); gtk_widget_set_size_request(widget, 440, height - (118+41)); } @@ -169,8 +171,6 @@ int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *ltable1; - GtkWidget *ltable2; - GtkWidget *ltable3; GtkWidget *btnplay; GtkWidget *btnsetting; @@ -185,8 +185,13 @@ int main(int argc, char *argv[]) GtkWidget *listgames; GtkTreeSelection *selection; - gtk_init(&argc, &argv); + if(argv[1]) + { + chdir(argv[1]); + printf("[LAUNCHER] Using Directory %s\n", argv[1]); + } + gtk_init(&argc, &argv); launcher_settings_load(); GdkGeometry hints; @@ -199,7 +204,6 @@ int main(int argc, char *argv[]) gtk_window_set_title(GTK_WINDOW(window), "NGUNIX Launcher"); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_container_set_border_width(GTK_CONTAINER(window), 2); - //gtk_window_set_resizable(GTK_WINDOW(window), FALSE); gtk_window_set_geometry_hints(GTK_WINDOW(window), window, &hints, (GdkWindowHints)(GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE)); gtk_widget_realize(window); @@ -243,9 +247,8 @@ int main(int argc, char *argv[]) gtk_signal_connect (GTK_OBJECT (btnquit), "clicked", GTK_SIGNAL_FUNC (gtk_main_quit),NULL); g_signal_connect(G_OBJECT(window), "configure-event", G_CALLBACK(resize_list), (gpointer)listwindow); - iGameCnt = 1; printf("[LAUNCHER] Scanning directories....\n"); - launcher_cachefolders(".", listgames); + launcher_cachefolders(listgames); printf(".......... %d folder(s) found\n", iGameCnt); gtk_main();