diff -Nur grustibus-0.43/src/grustibus.c grustibus-0.43p1/src/grustibus.c --- grustibus-0.43/src/grustibus.c 2001-05-10 14:18:21.000000000 +0200 +++ grustibus-0.43p1/src/grustibus.c 2003-12-24 11:30:29.000000000 +0100 @@ -25,6 +25,10 @@ * * Last modified: 25 April 2001 * + * Unofficial modification by Roman 'gryf' Dobosz + * for use with latest xmame releases (currently 0.77.1) + * + * Last modified: 24 December 2003 */ #include "grustibus.h" @@ -694,12 +698,12 @@ *exec = g_strconcat("\"", general_prefs.xmame_exe, "\"", " -rompath ", "\"", general_prefs.rom_dir, - "\"", " -cheatfile ", "\"", + "\"", " -cheat_file ", "\"", general_prefs.cheat_file, "\"", - " -historyfile ", "\"", + " -history_file ", "\"", general_prefs.game_history_file, "\"", - " -screenshotdir ", "\"", screenshotdir, "\"", - " -spooldir ", "\"", + " -snapshot_directory ", "\"", screenshotdir, "\"", + " -hiscore_directory ", "\"", general_prefs.highscore_dir, "\"", game_settings.fullscreen ? fullscreen : windowed, diff -Nur grustibus-0.43/src/gui.c grustibus-0.43p1/src/gui.c --- grustibus-0.43/src/gui.c 2001-05-10 14:26:30.000000000 +0200 +++ grustibus-0.43p1/src/gui.c 2003-12-24 11:18:39.000000000 +0100 @@ -25,6 +25,13 @@ * * Last modified: 28 April 2001 * + * Unofficial modification by Roman 'gryf' Dobosz + * modified function set_game_history(), for other then Mark's Longridge + * history.dat usability. Code was taken from gxmame's gui.c + * http://gxmame.sourceforge.net + * + * Last modified: 24 December 2003 + * */ #include "grustibus.h" @@ -2185,110 +2192,118 @@ gboolean set_game_history(const gchar * game) { - FILE *history_file; - GtkText *history_txt; - gchar line[2000]; - gint i, n; - gchar *tmp, *p; - gchar **games; - gboolean found_game = FALSE; - gboolean pointer_in_info = FALSE; - - history_txt = GTK_TEXT(gtk_object_get_data - (GTK_OBJECT(main_window), - "game_history_text")); - - gtk_text_freeze(history_txt); - gtk_text_set_point(history_txt, gtk_text_get_length(history_txt)); - gtk_text_backward_delete(history_txt, - gtk_text_get_length(history_txt)); - - history_file = fopen(general_prefs.game_history_file, "r"); - - if (!history_file) { - gtk_text_insert(history_txt, - NULL, - NULL, - NULL, - _ - ("\n\n History.dat file not found"), - -1); - gtk_text_thaw(history_txt); - return (FALSE); - } - - /* TODO: history.dat should be read in a function in fileio.c that should return - * the read text or NULL if no text was found - */ + FILE *history_file; + GtkText *history_txt; + gchar line[2000]; + gint i, n; + gchar *tmp, *p; + gchar **games; + gboolean found_game = FALSE; + gboolean pointer_in_info = FALSE; + gboolean extra_newline = FALSE; + + history_txt = GTK_TEXT(gtk_object_get_data (GTK_OBJECT(main_window),"game_history_text")); + + gtk_text_freeze(history_txt); + gtk_text_set_point(history_txt, gtk_text_get_length(history_txt)); + gtk_text_backward_delete(history_txt, gtk_text_get_length(history_txt)); + + history_file = fopen(general_prefs.game_history_file, "r"); + + if (!history_file) + { + gtk_text_insert(history_txt, + NULL, + NULL, + NULL, + _ + ("\n\n History.dat file not found"), + -1); + gtk_text_thaw(history_txt); + return (FALSE); + } + + /* TODO: history.dat should be read in a function in fileio.c that should return + * the read text or NULL if no text was found + */ + + /* Scan through the file. First look for '$',then $info=game, $bio and $end */ + while (fgets(line, 500, history_file)) { + p = line; + tmp = p; + if (*tmp == '$' && !found_game) { + /* Found a line */ + if (!strncmp(p, "$info", 5)) { + p= tmp=p+6; + /* It is an info line */ + i = 0; + while (*tmp && (*tmp++ != '\n')) + i++; + /* Sometimes the list is continued on the next line */ + i--; + do { + p[i] = fgetc(history_file); + if (p[i] == '\n') + i--; + if (p[i] == '\r') + i--; + i++; + + } while ((p[i - 1] != '$') && i < 2000 /* buffer size */); + if (p[i - 1] == '$') + ungetc('$', history_file); + + p[i - 1] = 0; + games = g_strsplit(p, ",", 20); + n = 0; + + while ((games[n] != NULL)) { + games[n] = g_strchomp(games[n]); + + if (!strcmp(games[n], game)) { + /* It is the info for the wanted game */ + found_game = TRUE; + } + n++; + } + g_strfreev(games); + } + } else if (found_game && (*tmp == '$')) { + if (!strncmp(p, "$bio", 4)) + pointer_in_info = TRUE; + if (!strncmp(p, "$end", 4)) { + pointer_in_info = FALSE; + break; + } + } else if (found_game && pointer_in_info) { + i = 0; + while (*tmp && (*tmp != '\r') &&(*tmp++ != '\n')) + i++; + if (i == 0) + {/* and a new line but not severals*/ + if (!extra_newline) + { + extra_newline = TRUE; + } + else + extra_newline = FALSE; + } + else + { + extra_newline = FALSE; + } + if (!extra_newline) + { + p[i] = '\n'; + p[i + 1] = '\0'; + gtk_text_insert(history_txt, NULL, NULL, NULL, p, -1); + grustibus_debug("Added history txt: %s", p); + } + } + } - /* Scan through the file. First look for '$',then $info=game, $bio and $end */ - while (fgets(line, 500, history_file)) { - p = line; - tmp = p; - if (*tmp == '$' && !found_game) { - /* Found a line */ - i = 0; - while (*tmp && (*tmp++ != '=') && (*tmp != '\n')) - i++; - p[i] = 0; - if (!strncmp(p, "$info", 5)) { - p = tmp; - /* It is an info line */ - i = 0; - while (*tmp && (*tmp++ != '\n')) - i++; - /* Sometimes the list is continued on the next line */ - i--; - do { - p[i] = fgetc(history_file); - if (p[i] == '\n') - i--; - if (p[i] == '\r') - i--; - i++; - } while ((p[i - 1] != '$')); - p[i - 1] = 0; - games = g_strsplit(p, ",", 20); - n = 0; - while ((games[n] != NULL)) { - games[n] = g_strchomp(games[n]); - - if (!strcmp(games[n], game)) { - /* It is the info for the wanted game */ - found_game = TRUE; - } - n++; - } - g_strfreev(games); - } - } else if (found_game && (*tmp == '$')) { - i = 0; - while (*tmp && (*tmp++ != '=') && (*tmp != '\n')) - i++; - p[i] = 0; - if (!strncmp(p, "$bio", 4)) - pointer_in_info = TRUE; - if (!strncmp(p, "$end", 4)) { - pointer_in_info = FALSE; - break; - } - } else if (found_game && pointer_in_info) { - i = 0; - while (*tmp && (*tmp++ != '=') && (*tmp != '\n')) - i++; - if (i == 0) - p[i] = '\n'; - else - p[i] = ' '; - - p[i + 1] = 0; - gtk_text_insert(history_txt, - NULL, NULL, NULL, p, -1); - grustibus_debug("Added history txt: %s", p); - } - } - - if (!found_game) { + if (!found_game) + { tmp = g_malloc(100); g_snprintf(tmp, 100, _ @@ -2296,12 +2311,12 @@ game); gtk_text_insert(history_txt, NULL, NULL, NULL, tmp, -1); g_free(tmp); - } + } - fclose(history_file); + fclose(history_file); gtk_text_thaw(history_txt); - return (found_game); + return (found_game); } void set_game_info_widgets()