aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--tests/ui-tests/message-browser.c256
2 files changed, 154 insertions, 111 deletions
diff --git a/ChangeLog b/ChangeLog
index d005b244ac..275e1e38df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2000-03-05 Matt Loper <matt.loper@splashtech.com>
+
+ * tests/ui-tests/message-browser.c: Commenting added.
+ (on_url_data_requested): renamed from "on_url_requested", to
+ reflect that a stream of data is what's actually being asked for.
+ (hydrate_persist_stream_from_gstring): New function.
+ (camel_stream_to_gstring): New function.
+ (on_object_requested): Cleaned up.
+
2000-03-04 Christopher James Lahey <clahey@helixcode.com>
* e-util/e-xml-utils.c, e-util/e-xml-utils.h: Added
diff --git a/tests/ui-tests/message-browser.c b/tests/ui-tests/message-browser.c
index dbf706875a..6b38c44107 100644
--- a/tests/ui-tests/message-browser.c
+++ b/tests/ui-tests/message-browser.c
@@ -34,6 +34,7 @@
/* corba/bonobo stuff */
#include <bonobo.h>
#include <libgnorba/gnorba.h>
+#include <bonobo/bonobo-stream-memory.h>
static void
print_usage_and_quit()
@@ -305,21 +306,24 @@ on_link_clicked (GtkHTML *html, const gchar *url, gpointer data)
g_free (message);
}
-
+/*
+ * As a page is being loaded, gtkhtml will come across a few types of
+ * tags that it understands (like <img src="foo">). In these cases, it
+ * will simply ask us to stream the data to it.
+ */
static void
-on_url_requested (GtkHTML *html, const gchar *url, GtkHTMLStreamHandle handle, gpointer data)
+on_url_data_requested (GtkHTML *html, const gchar *url, GtkHTMLStreamHandle handle, gpointer data)
{
CamelStream *stream;
- gchar tmp_buffer[4096];
- gint nb_bytes_read;
printf ("url _%s_ (%p) requested\n", url, url);
if (sscanf (url, "camel://%p", &stream) == 1)
- {
-
+ {
+ gchar tmp_buffer[4096];
do {
-
+ gint nb_bytes_read;
+
/* read next chunk of text */
nb_bytes_read = camel_stream_read (stream,
tmp_buffer,
@@ -339,126 +343,156 @@ on_url_requested (GtkHTML *html, const gchar *url, GtkHTMLStreamHandle handle, g
}
-static void
-on_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, void *data)
+static gboolean
+hydrate_persist_stream_from_gstring (Bonobo_PersistStream persist_stream,
+ GString* gstr)
{
- gchar *class_id;
- gchar *uid;
- GtkWidget *bonobo_embedable;
-
- CamelStream *stream;
- gchar tmp_buffer[4097];
- gint nb_bytes_read;
-
- GString *tmp_gstring = NULL;
- BonoboStream *mem_stream;
-
CORBA_Environment ev;
- BonoboObjectClient *server;
- Bonobo_PersistStream persist;
-
+ BonoboStream* mem_stream =
+ bonobo_stream_mem_create (gstr->str, gstr->len, TRUE);
+ /*
+ * If the component doesn't support
+ * PersistStream, then we destroy the
+ * stream we created and bail.
+ */
+ if (persist_stream == CORBA_OBJECT_NIL) {
+ gnome_warning_dialog (_("The component now claims that it "
+ "doesn't support PersistStream!"));
+ bonobo_object_unref (BONOBO_OBJECT (mem_stream));
+ return FALSE;
+ }
+
+ CORBA_exception_init (&ev);
+ /*
+ * Load the file into the component using PersistStream.
+ */
+ Bonobo_PersistStream_load (persist_stream,
+ (Bonobo_Stream) bonobo_object_corba_objref (BONOBO_OBJECT (mem_stream)),
+ &ev);
- uid = gtk_html_embedded_get_parameter (eb, "uid");
- class_id = eb->classid;
+ bonobo_object_unref (BONOBO_OBJECT (mem_stream));
+
+ if (ev._major != CORBA_NO_EXCEPTION) {
+ gnome_warning_dialog (_("An exception occured while trying "
+ "to load data into the component with "
+ "PersistStream"));
+ CORBA_exception_free (&ev);
+ return FALSE;
+ }
-
- printf ("object requested : %s\n", class_id);
- printf ("UID = %s\n", uid);
+ CORBA_exception_free (&ev);
+ return TRUE;
+}
+static GString*
+camel_stream_to_gstring (CamelStream* stream)
+{
+ gchar tmp_buffer[4097];
+ GString *tmp_gstring = g_string_new ("");
- if (sscanf (uid, "camel://%p", &stream) == 1) {
+ do { /* read next chunk of text */
+
+ gint nb_bytes_read;
+
+ nb_bytes_read = camel_stream_read (stream,
+ tmp_buffer,
+ 4096);
+ tmp_buffer [nb_bytes_read] = '\0';
+
+ /* If there's any text, append it to the gstring */
+ if (nb_bytes_read > 0) {
+ tmp_gstring = g_string_append (tmp_gstring, tmp_buffer);
+ }
+
+ } while (!camel_stream_eos (stream));
- bonobo_embedable = bonobo_widget_new_subdoc (class_id, NULL);
+ return tmp_gstring;
+}
- server = bonobo_widget_get_server (BONOBO_WIDGET (bonobo_embedable));
+/*
+ * As a page is loaded, when gtkhtml comes across <object> tags, this
+ * callback is invoked. The GtkHTMLEmbedded param is a GtkContainer;
+ * our job in this function is to simply add a child widget to it.
+ */
+static void
+on_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, void *unused)
+{
+ CamelStream *stream;
+ GString *camel_stream_gstr;
- if (!server) {
- printf ("Couldn't get the server for the bonobo embedable\n");
- return;
- }
+ GtkWidget *bonobo_embeddable;
+ BonoboObjectClient* server;
+ Bonobo_PersistStream persist;
+ CORBA_Environment ev;
+ gchar *uid = gtk_html_embedded_get_parameter (eb, "uid");
+
+ /* Both the classid (which specifies which bonobo object to
+ * fire up) and the uid (which tells us where to find data to
+ * persist from) must be available; if one of them isn't,
+ * print an error and bail. */
+ if (!uid || !eb->classid) {
+ printf ("on_object_requested: couldn't find %s%s%s\n",
+ uid?"a uid":"",
+ (!uid && !eb->classid)?" or ":"",
+ eb->classid?"a classid":"");
+ return;
+ }
+ printf ("object requested : %s\n", eb->classid);
+ printf ("UID = %s\n", uid);
- /* if the component supports persistant streams,
- * then we are going to create a mem stream */
- if (bonobo_object_client_has_interface (server,
- "IDL:Bonobo/PersistStream:1.0",
- NULL)) {
-
- printf ("the bonobo object supports PersistStream. Good\n");
- tmp_gstring = g_string_new ("");
+ /* Try to get a server with goadid specified by eb->classid */
+ bonobo_embeddable = bonobo_widget_new_subdoc (eb->classid, NULL);
+ server = bonobo_widget_get_server (BONOBO_WIDGET (bonobo_embeddable));
+ if (!server) {
+ printf ("Couldn't get the server for the bonobo embeddable\n");
+ return;
+ }
- do {
-
- /* read next chunk of text */
- nb_bytes_read = camel_stream_read (stream,
- tmp_buffer,
- 4096);
- tmp_buffer [nb_bytes_read] = '\0';
-
- /* If there's any text, append it to the gstring */
- if (nb_bytes_read > 0) {
- tmp_gstring = g_string_append (tmp_gstring, tmp_buffer);
- }
-
-
- } while (!camel_stream_eos (stream));
+ /* The UID should be a pointer to a CamelStream */
+ if (sscanf (uid, "camel://%p", &stream) != 1) {
+ printf ("Couldn't get a pointer from url \"%s\"\n", uid);
+ gtk_object_unref (GTK_OBJECT (bonobo_embeddable));
- printf ("After reading the stream, the temporary buffer has %d elements\n", tmp_gstring->len);
-
- if (tmp_gstring->len) {
- mem_stream = bonobo_stream_mem_create (tmp_gstring->str,tmp_gstring->len , TRUE);
-
- persist = bonobo_object_client_query_interface (server,
- "IDL:Bonobo/PersistStream:1.0",
- NULL);
-
- /*
- * If the component doesn't support PersistStream (and it
- * really ought to -- we query it to see if it supports
- * PersistStream before we even give the user the option of
- * loading data into it with PersistStream), then we destroy
- * the stream we created and bail.
- */
- if (persist == CORBA_OBJECT_NIL) {
- gnome_warning_dialog (_("The component now claims that it "
- "doesn't support PersistStream!"));
- bonobo_object_unref (BONOBO_OBJECT (mem_stream));
- return;
- }
-
- CORBA_exception_init (&ev);
-
- /*
- * Load the file into the component using PersistStream.
- */
- Bonobo_PersistStream_load (persist,
- (Bonobo_Stream) bonobo_object_corba_objref (BONOBO_OBJECT (mem_stream)),
- &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION) {
- gnome_warning_dialog (_("An exception occured while trying "
- "to load data into the component with "
- "PersistStream"));
- }
-
- /*
- * Now we destroy the PersistStream object.
- */
- Bonobo_Unknown_unref (persist, &ev);
- CORBA_Object_release (persist, &ev);
-
- CORBA_exception_free (&ev);
-
-
- gtk_widget_show (bonobo_embedable);
-
- gtk_container_add (GTK_CONTAINER(eb), bonobo_embedable);
+ return;
+ }
- }
- }
+ /* Try to get a PersistStream interface from the server;
+ if it doesn't support that interface, bail. */
+ persist = (Bonobo_PersistStream) bonobo_object_client_query_interface (
+ server,
+ "IDL:Bonobo/PersistStream:1.0",
+ NULL);
+
+ if (persist == CORBA_OBJECT_NIL) {
+ gchar* msg = g_strdup_printf (
+ _("The %s component doesn't support PersistStream!\n"),
+ uid);
+
+ gnome_warning_dialog (msg);
+ gtk_object_unref (GTK_OBJECT (bonobo_embeddable));
+
+ return;
}
+
+ /* Hydrate the PersistStream from the CamelStream */
+ camel_stream_gstr = camel_stream_to_gstring (stream);
+ printf ("on_object_requested: The CamelStream has %d elements\n",
+ camel_stream_gstr->len);
+ hydrate_persist_stream_from_gstring (persist, camel_stream_gstr);
+
+ /* Give our new window to the container */
+ gtk_widget_show (bonobo_embeddable);
+ gtk_container_add (GTK_CONTAINER(eb), bonobo_embeddable);
+ /* Destroy the PersistStream object.*/
+ CORBA_exception_init (&ev);
+ Bonobo_Unknown_unref (persist, &ev);
+ CORBA_Object_release (persist, &ev);
+ CORBA_exception_free (&ev);
+
+ g_string_free (camel_stream_gstr, FALSE);
}
@@ -485,7 +519,7 @@ get_gtk_html_contents_window (CamelDataWrapper* data)
gtk_signal_connect (GTK_OBJECT (html_widget),
"url_requested",
- GTK_SIGNAL_FUNC (on_url_requested),
+ GTK_SIGNAL_FUNC (on_url_data_requested),
NULL);
gtk_signal_connect (GTK_OBJECT (html_widget),
"object_requested",
c50641a800680906b35eb060f10fe6f24'>plain d---------alephone-scenarios217logstatsplain d---------alephone217logstatsplain d---------alienarena-data109logstatsplain d---------alienarena178logstatsplain d---------alienblaster146logstatsplain d---------alienwave109logstatsplain d---------allacrost217logstatsplain d---------amoebax178logstatsplain d---------an109logstatsplain d---------angband146logstatsplain d---------anki178logstatsplain d---------annelid178logstatsplain d---------antipolix178logstatsplain d---------aop178logstatsplain d---------apoolGL178logstatsplain d---------apricots141logstatsplain d---------arkanoidsb178logstatsplain d---------armagetron178logstatsplain d---------arx-libertatis178logstatsplain d---------asc148logstatsplain d---------asciiquarium109logstatsplain d---------assaultcube141logstatsplain d---------asteroid146logstatsplain d---------asteroids3d178logstatsplain d---------atanks178logstatsplain d---------atitd221logstatsplain d---------atomix185logstatsplain d---------atr3d178logstatsplain d---------atris-sounds146logstatsplain d---------atris146logstatsplain d---------avanor178logstatsplain d---------avoision109logstatsplain d---------avp-demo217logstatsplain d---------awale178logstatsplain d---------awele141logstatsplain d---------balazar178logstatsplain d---------balazarbrothers178logstatsplain d---------banihstypos141logstatsplain d---------barbie_seahorse_adventures178logstatsplain d---------barrage146logstatsplain d---------bass178logstatsplain d---------bastet141logstatsplain d---------battalion146logstatsplain d---------battletanks178logstatsplain d---------belooted146logstatsplain d---------biloba109logstatsplain d---------biniax2141logstatsplain d---------biorythm109logstatsplain d---------bitefusion141logstatsplain d---------black-box146logstatsplain d---------blackjackclient141logstatsplain d---------blackshadeselite180logstatsplain d---------blinken146logstatsplain d---------blinkensisters146logstatsplain d---------blobby178logstatsplain d---------bloboats178logstatsplain d---------blobwars178logstatsplain d---------block178logstatsplain d---------blockade141logstatsplain d---------blockout178logstatsplain d---------blockrage178logstatsplain d---------blokish109logstatsplain d---------bloodfrontier141logstatsplain d---------bluemoon141logstatsplain d---------bogged109logstatsplain d---------bomber146logstatsplain d---------bomberclone178logstatsplain d---------bomberinstinct178logstatsplain d---------bombherman178logstatsplain d---------bombz178logstatsplain d---------bomns146logstatsplain d---------boswars178logstatsplain d---------bouncy178logstatsplain d---------bovo146logstatsplain d---------braincurses146logstatsplain d---------brainparty141logstatsplain d---------brainworkshop178logstatsplain d---------brickshooter109logstatsplain d---------brikx109logstatsplain d---------briquolo178logstatsplain d---------brutalchess178logstatsplain d---------bs141logstatsplain d---------bsdgames178logstatsplain d---------bsdrain109logstatsplain d---------bsdtris178logstatsplain d---------bsp146logstatsplain d---------bubble-chains146logstatsplain d---------bubbros178logstatsplain d---------bugsquish146logstatsplain d---------bugsx141logstatsplain d---------bumprace109logstatsplain d---------burgerspace146logstatsplain d---------burrtools141logstatsplain d---------bygfoot178logstatsplain d---------bzflag178logstatsplain d---------cake180logstatsplain d---------caph109logstatsplain d---------capicity146logstatsplain d---------capitalism146logstatsplain d---------cardpics146logstatsplain d---------castlevox178logstatsplain d---------cave9141logstatsplain d---------cavezofphear146logstatsplain d---------ceferino178logstatsplain d---------cgoban141logstatsplain d---------chanta178logstatsplain d---------chapping141logstatsplain d---------cheech146logstatsplain d---------chessx178logstatsplain d---------childsplay146logstatsplain d---------childsplay_plugins178logstatsplain d---------chocolate-doom217logstatsplain d---------chroma141logstatsplain d---------chromium-bsu146logstatsplain d---------circuslinux178logstatsplain d---------cleanq3178logstatsplain d---------colorcode109logstatsplain d---------columns178logstatsplain d---------concentration141logstatsplain d---------connectagram146logstatsplain d---------connectfive141logstatsplain d---------conquest256logstatsplain d---------construo141logstatsplain d---------corewars178logstatsplain d---------corsix-th178logstatsplain d---------cosmo178logstatsplain d---------cosmosmash146logstatsplain d---------cowsay178logstatsplain d---------crack-attack141logstatsplain d---------crafty-open-enormous178logstatsplain d---------crafty-open-large178logstatsplain d---------crafty-open-medium178logstatsplain d---------crafty-tablebase-no-pawn219logstatsplain d---------crafty-tablebase-pawn219logstatsplain d---------crafty251logstatsplain d---------cre141logstatsplain d---------cretan-hubris109logstatsplain d---------crimson178logstatsplain d---------criticalmass141logstatsplain d---------critterding178logstatsplain d---------crossfire-client146logstatsplain d---------crossfire-server178logstatsplain d---------crrcsim141logstatsplain d---------cryptoslam109logstatsplain d---------csmash178logstatsplain d---------ctris109logstatsplain d---------cube178logstatsplain d---------cultivation178logstatsplain d---------cursive141logstatsplain d---------cutemaze146logstatsplain d---------cuyo146logstatsplain d---------d2x-xl178logstatsplain d---------d2x180logstatsplain d---------daimonin-music146logstatsplain d---------daimonin178logstatsplain d---------dangen109logstatsplain d---------dangerdeep-data109logstatsplain d---------dangerdeep141logstatsplain d---------darkplaces141logstatsplain d---------dcross178logstatsplain d---------deal109logstatsplain d---------defendguin178logstatsplain d---------diameter141logstatsplain d---------digger-vgl178logstatsplain d---------djgame2178logstatsplain d---------dmjava146logstatsplain d---------dodgindiamond2178logstatsplain d---------domination178logstatsplain d---------dontspace146logstatsplain d---------doom-data222logstatsplain d---------doom-freedoom109logstatsplain d---------doom-hacx109logstatsplain d---------doom-hr180logstatsplain d---------doom-hr2109logstatsplain d---------doom-wolfendoom146logstatsplain d---------doom178logstatsplain d---------doomlegacy141logstatsplain d---------doomsday217logstatsplain d---------dopewars146logstatsplain d---------drcreep178logstatsplain d---------drm178logstatsplain d---------dsnake146logstatsplain d---------duckmaze178logstatsplain d---------duel178logstatsplain d---------duke3d-data222logstatsplain d---------dungeon109logstatsplain d---------dungeoncrawl141logstatsplain d---------eboard217logstatsplain d---------edge141logstatsplain d---------editss178logstatsplain d---------eduke32146logstatsplain d---------egl178logstatsplain d---------egoboo180logstatsplain d---------eif146logstatsplain d---------eights141logstatsplain d---------einstein217logstatsplain d---------el-data109logstatsplain d---------el141logstatsplain d---------ember178logstatsplain d---------empire141logstatsplain d---------endgame-singularity-music146logstatsplain d---------endgame-singularity146logstatsplain d---------enigma178logstatsplain d---------ensemblist141logstatsplain d---------entombed146logstatsplain d---------enygma178logstatsplain d---------epiar178logstatsplain d---------etracer146logstatsplain d---------euchre109logstatsplain d---------evilfinder141logstatsplain d---------evq3178logstatsplain d---------excido178logstatsplain d---------exhaust-doc146logstatsplain d---------exhaust-ma180logstatsplain d---------exhaust180logstatsplain d---------exmars178logstatsplain d---------exult178logstatsplain d---------ezquake178logstatsplain d---------f1lt109logstatsplain d---------f1spirit-remake141logstatsplain d---------fairymax109logstatsplain d---------falconseye178logstatsplain d---------farblazer178logstatsplain d---------fargoal178logstatsplain d---------fbg2109logstatsplain d---------fgkicker185logstatsplain d---------fgrun178logstatsplain d---------fightorperish146logstatsplain d---------fillets-ng109logstatsplain d---------filters178logstatsplain d---------fishsupper109logstatsplain d---------fkiss109logstatsplain d---------flare-engine141logstatsplain d---------flare-game146logstatsplain d---------flightgear-aircraft109logstatsplain d---------flightgear-data109logstatsplain d---------flightgear-mb339-pan109logstatsplain d---------flightgear217logstatsplain d---------flobopuyo141logstatsplain d---------flyhard141logstatsplain d---------flying141logstatsplain d---------fmars178logstatsplain d---------foobillard178logstatsplain d---------formido141logstatsplain d---------fortunate146logstatsplain d---------fotaq178logstatsplain d---------freecell-solver178logstatsplain d---------freeciv-nox1136logstatsplain d---------freeciv-sounds146logstatsplain d---------freeciv146logstatsplain d---------freecol141logstatsplain d---------freedink-data178logstatsplain d---------freedink-dfarc178logstatsplain d---------freedink-engine178logstatsplain d---------freedink73logstatsplain d---------freedoko146logstatsplain d---------freedroid146logstatsplain d---------freedroidrpg146logstatsplain d---------freeminer-default109logstatsplain d---------freeminer217logstatsplain d---------freera141logstatsplain d---------freesweep141logstatsplain d---------freesynd178logstatsplain d---------freetennis141logstatsplain d---------fretsonfire-data146logstatsplain d---------fretsonfire178logstatsplain d---------frikqcc141logstatsplain d---------frobtads178logstatsplain d---------frogatto141logstatsplain d---------frotz109logstatsplain d---------frozen-bubble146logstatsplain d---------fteqw141logstatsplain d---------ftjava178logstatsplain d---------fuhquake178logstatsplain d---------funnyboat178logstatsplain d---------fxsudoku141logstatsplain d---------galaxis141logstatsplain d---------galaxyhack178logstatsplain d---------galaxymage178logstatsplain d---------garith109logstatsplain d---------gbottler146logstatsplain d---------gbrainy146logstatsplain d---------gcompris178logstatsplain d---------gdado178logstatsplain d---------gemdropx146logstatsplain d---------gemrb185logstatsplain d---------ggz-client-libs178logstatsplain d---------ggz-gtk-client146logstatsplain d---------ggz-gtk-games146logstatsplain d---------ggz-sdl-games178logstatsplain d---------ggz-txt-client178logstatsplain d---------gigalomania146logstatsplain d---------gillo178logstatsplain d---------gish-demo178logstatsplain d---------gl-117178logstatsplain d---------glaxium178logstatsplain d---------glbsp178logstatsplain d---------glchess185logstatsplain d---------glest-data109logstatsplain d---------glest178logstatsplain d---------glightoff146logstatsplain d---------glmaze141logstatsplain d---------glob2178logstatsplain d---------glsfcave109logstatsplain d---------gltron178logstatsplain d---------gma141logstatsplain d---------gmastermind178logstatsplain d---------gmines146logstatsplain d---------gnake109logstatsplain d---------gnarr146logstatsplain d---------gno3dtet178logstatsplain d---------gnome-games-extra-data146logstatsplain d---------gnome-games217logstatsplain d---------gnomeattacks178logstatsplain d---------gnomebreakout178logstatsplain d---------gnomechess146logstatsplain d---------gnomekiss178logstatsplain d---------gnomesudoku146logstatsplain d---------gnono146logstatsplain d---------gnubg178logstatsplain d---------gnuchess146logstatsplain d---------gnudoku146logstatsplain d---------gnugo141logstatsplain d---------gnurobbo109logstatsplain d---------gnurobots185logstatsplain d---------gnushogi221logstatsplain d---------gnustep-ladder178logstatsplain d---------gnustep-sudoku146logstatsplain d---------golddig185logstatsplain d---------golly178logstatsplain d---------gomoku146logstatsplain d---------gondola178logstatsplain d---------goonies141logstatsplain d---------gottet146logstatsplain d---------gracer178logstatsplain d---------granatier146logstatsplain d---------greed146logstatsplain d---------gretools146logstatsplain d---------grhino178logstatsplain d---------gru146logstatsplain d---------grubik146logstatsplain d---------gshisen146logstatsplain d---------gtetrinet178logstatsplain d---------gti109logstatsplain d---------gtkatlantic178logstatsplain d---------gtkballs178logstatsplain d---------gtkevemon146logstatsplain d---------gtklife146logstatsplain d---------gtkpool178logstatsplain d---------gtkradiant178logstatsplain d---------gtktetcolor146logstatsplain d---------gturing178logstatsplain d---------gtypist178logstatsplain d---------gunfudeadlands141logstatsplain d---------gweled217logstatsplain d---------hangman141logstatsplain d---------hedgewars109logstatsplain d---------help_hannahs_horse146logstatsplain d---------heretic178logstatsplain d---------heroes178logstatsplain d---------hex-a-hop178logstatsplain d---------hex178logstatsplain d---------hexalate146logstatsplain d---------hexglass109logstatsplain d---------hexxagon178logstatsplain d---------highmoon146logstatsplain d---------hinversi146logstatsplain d---------hitori178logstatsplain d---------hllib141logstatsplain d---------hlstats146logstatsplain d---------hlstatsx146logstatsplain d---------hohlin178logstatsplain d---------hoichess146logstatsplain d---------holotz-castle178logstatsplain d---------icbm3d141logstatsplain d---------icebreaker178logstatsplain d---------iceicepenguin178logstatsplain d---------ifm146logstatsplain d---------imaze178logstatsplain d---------impossible_mission_puzzle109logstatsplain d---------inform178logstatsplain d---------inform7178logstatsplain d---------instead178logstatsplain d---------interlogic109logstatsplain d---------ioquake3-devel-server36logstatsplain d---------ioquake3-devel148logstatsplain d---------ioquake3-server36logstatsplain d---------ioquake3180logstatsplain d---------iourbanterror-server36logstatsplain d---------iourbanterror144logstatsplain d---------irrlamb141logstatsplain d---------ishido146logstatsplain d---------ivan217logstatsplain d---------jag141logstatsplain d---------jaggedalliance2178logstatsplain d---------java-games-suite141logstatsplain d---------jchessboard141logstatsplain d---------jfk178logstatsplain d---------jfsw178logstatsplain d---------jigsaw146logstatsplain d---------jigzo141logstatsplain d---------jin178logstatsplain d---------jinput141logstatsplain d---------joequake217logstatsplain d---------jools178logstatsplain d---------jtans178logstatsplain d---------jutils109logstatsplain d---------jvgs141logstatsplain d---------jzip109logstatsplain d---------kajaani-kombat178logstatsplain d---------kajongg146logstatsplain d---------kanagram146logstatsplain d---------kanatest146logstatsplain d---------kapman146logstatsplain d---------kardsgt146logstatsplain d---------kartofel141logstatsplain d---------katomic146logstatsplain d---------kblackbox146logstatsplain d---------kblocks146logstatsplain d---------kbounce146logstatsplain d---------kbreakout146logstatsplain d---------kcheckers146logstatsplain d---------kdegames4116logstatsplain d---------kdiamond146logstatsplain d---------kevedit178logstatsplain d---------kfourinline146logstatsplain d---------kgoldrunner146logstatsplain d---------khangman146logstatsplain d---------kigo146logstatsplain d---------kiki141logstatsplain d---------killbots146logstatsplain d---------kiriki146logstatsplain d---------kjumpingcube146logstatsplain d---------klavaro146logstatsplain d---------klines146logstatsplain d---------klondike146logstatsplain d---------kmahjongg146logstatsplain d---------kmancala178logstatsplain d---------kmines146logstatsplain d---------knavalbattle146logstatsplain d---------knetwalk146logstatsplain d---------knights-kde4146logstatsplain d---------kobodeluxe146logstatsplain d---------kolf146logstatsplain d---------kollision146logstatsplain d---------konquest146logstatsplain d---------kpat146logstatsplain d---------krank178logstatsplain d---------kreversi146logstatsplain d---------kshisen146logstatsplain d---------ksirk146logstatsplain d---------ksnakeduel146logstatsplain d---------kspaceduel146logstatsplain d---------ksquares146logstatsplain d---------ksudoku146logstatsplain d---------ktuberling146logstatsplain d---------kubrick146logstatsplain d---------kuklomenos146logstatsplain d---------kye178logstatsplain d---------ladder178logstatsplain d---------lander146logstatsplain d---------lapispuzzle146logstatsplain d---------latrine178logstatsplain d---------lbreakout178logstatsplain d---------lbreakout2217logstatsplain d---------ldmud178logstatsplain d---------legend-of-edgar146logstatsplain d---------legends146logstatsplain d---------legesmotus178logstatsplain d---------lexter185logstatsplain d---------lgeneral146logstatsplain d---------lianliankan178logstatsplain d---------libdungeonmaker178logstatsplain d---------libfov146logstatsplain d---------libggz216logstatsplain d---------libkdegames146logstatsplain d---------libkmahjongg146logstatsplain d---------libmaitretarot146logstatsplain d---------libmt_client146logstatsplain d---------libshhcards178logstatsplain d---------lincity-ng178logstatsplain d---------lincity178logstatsplain d---------linux-americasarmy146logstatsplain d---------linux-candycruncher-demo178logstatsplain d---------linux-coldwar-demo178logstatsplain d---------linux-darwinia-demo217logstatsplain d---------linux-defcon217logstatsplain d---------linux-doom3-demo178logstatsplain d---------linux-doom3178logstatsplain d---------linux-enemyterritory-etpro146logstatsplain d---------linux-enemyterritory-jaymod-21146logstatsplain d---------linux-enemyterritory-jaymod146logstatsplain d---------linux-enemyterritory-omni-bot-0660146logstatsplain d---------linux-enemyterritory-omni-bot146logstatsplain d---------linux-enemyterritory-shrub109logstatsplain d---------linux-enemyterritory-tce146logstatsplain d---------linux-enemyterritory178logstatsplain d---------linux-etqw-demo-server178logstatsplain d---------linux-etqw-server178logstatsplain d---------linux-gorky17-demo178logstatsplain d---------linux-hdb-demo178logstatsplain d---------linux-majesty-demo178logstatsplain d---------linux-nerogame178logstatsplain d---------linux-ningpo-demo178logstatsplain d---------linux-nwnclient217logstatsplain d---------linux-nwserver178logstatsplain d---------linux-quake3-demo178logstatsplain d---------linux-quake3146logstatsplain d---------linux-quake4-demo178logstatsplain d---------linux-quake4178logstatsplain d---------linux-rtcw185logstatsplain d---------linux-savage217logstatsplain d---------linux-skulltag178logstatsplain d---------linux-sof178logstatsplain d---------linux-spheresofchaos-demo146logstatsplain d---------linux-ssamtfe178logstatsplain d---------linux-ssamtse178logstatsplain d---------linux-steam178logstatsplain d---------linux-unrealgold178logstatsplain d---------linux-uplink-demo217logstatsplain d---------linux-ut217logstatsplain d---------linux-ut2003-demo141logstatsplain d---------linux-ut2004-demo141logstatsplain d---------linux-virtual-jay-peak178logstatsplain d---------linux-warsow178logstatsplain d---------linux-worldofgoo-demo146logstatsplain d---------linwarrior141logstatsplain d---------liquidwar178logstatsplain d---------live-f1109logstatsplain d---------lm-solve146logstatsplain d---------lmarbles146logstatsplain d---------lmpc141logstatsplain d---------lolcat109logstatsplain d---------lordsawar178logstatsplain d---------lostfeathers178logstatsplain d---------lpairs178logstatsplain d---------lskat146logstatsplain d---------ltris146logstatsplain d---------lucidlife146logstatsplain d---------lugaru178logstatsplain d---------luola141logstatsplain d---------lwjgl141logstatsplain d---------macopix178logstatsplain d---------madbomber146logstatsplain d---------maelstrom178logstatsplain d---------magiccube4d178logstatsplain d---------magicor146logstatsplain d---------mahjong109logstatsplain d---------maitretarot109logstatsplain d---------manaplus146logstatsplain d---------mangband178logstatsplain d---------mangos178logstatsplain d---------marsnomercy141logstatsplain d---------masterserver178logstatsplain d---------maxr109logstatsplain d---------meandmyshadow109logstatsplain d---------megaglest-data109logstatsplain d---------megaglest178logstatsplain d---------megamario178logstatsplain d---------memonix141logstatsplain d---------meqcc141logstatsplain d---------meritous141logstatsplain d---------mindfocus178logstatsplain d---------mindguard178logstatsplain d---------minecraft-client146logstatsplain d---------minecraft-server178logstatsplain d---------minetest178logstatsplain d---------minetest_game109logstatsplain d---------mirrormagic178logstatsplain d---------miscom178logstatsplain d---------mkgichessclub178logstatsplain d---------mkhexgrid141logstatsplain d---------moagg178logstatsplain d---------monkeybubble178logstatsplain d---------monster-masher178logstatsplain d---------monsterz178logstatsplain d---------moon-buggy141logstatsplain d---------moonlander141logstatsplain d---------mopesnake178logstatsplain d---------moria178logstatsplain d---------motogt141logstatsplain d---------mt_dolphin_ia109logstatsplain d---------mt_gtk_client146logstatsplain d---------mtaserver178logstatsplain d---------mudmagic146logstatsplain d---------mvdsv180logstatsplain d---------nInvaders146logstatsplain d---------nadar178logstatsplain d---------naev-data109logstatsplain d---------naev141logstatsplain d---------nazghul178logstatsplain d---------nehquake178logstatsplain d---------nelly178logstatsplain d---------nethack32178logstatsplain d---------nethack33-nox1136logstatsplain d---------nethack33178logstatsplain d---------nethack34-nox1136logstatsplain d---------nethack34178logstatsplain d---------netherearth146logstatsplain d---------netpanzer178logstatsplain d---------netradiant178logstatsplain d---------netrek-BRMH-bin148logstatsplain d---------netrek-client-cow178logstatsplain d---------netris178logstatsplain d---------netspades109logstatsplain d---------nettoe109logstatsplain d---------netwalk146logstatsplain d---------neverball178logstatsplain d---------newvox178logstatsplain d---------nextgo178logstatsplain d---------nexuiz109logstatsplain d---------nibbles146logstatsplain d---------nighthawk217logstatsplain d---------nimuh109logstatsplain d---------ninix-aya146logstatsplain d---------njam178logstatsplain d---------nlarn178logstatsplain d---------noegnud-addons109logstatsplain d---------noegnud-data178logstatsplain d---------noegnud-littlehack178logstatsplain d---------noegnud-nethack-deet178logstatsplain d---------noegnud-nethack178logstatsplain d---------noegnud-slashem178logstatsplain d---------nonsense178logstatsplain d---------npush146logstatsplain d---------nsnake146logstatsplain d---------nuclearchess146logstatsplain d---------numptyphysics-npcomplete146logstatsplain d---------numptyphysics178logstatsplain d---------nwndata146logstatsplain d---------odamex178logstatsplain d---------oldrunner141logstatsplain d---------omega178logstatsplain d---------oneisenough178logstatsplain d---------oneko-sakura109logstatsplain d---------oneko146logstatsplain d---------oolite178logstatsplain d---------oonsoo141logstatsplain d---------openalchemist146logstatsplain d---------openarena-data146logstatsplain d---------openarena-oax146logstatsplain d---------openarena-server36logstatsplain d---------openarena224logstatsplain d---------openastromenace178logstatsplain d---------opencity146logstatsplain d---------opengfx146logstatsplain d---------openglad178logstatsplain d---------openjazz178logstatsplain d---------openlierox109logstatsplain d---------openmortal141logstatsplain d---------openmsx146logstatsplain d---------openpref146logstatsplain d---------opensfx146logstatsplain d---------opensonic178logstatsplain d---------openssn178logstatsplain d---------openttd178logstatsplain d---------openxcom141logstatsplain d---------openyahtzee109logstatsplain d---------optimax146logstatsplain d---------orbital_eunuchs_sniper178logstatsplain d---------osgg141logstatsplain d---------outerspace217logstatsplain d---------p5-Acme-GuessNumber146logstatsplain d---------p5-Algorithm-Pair-Best146logstatsplain d---------p5-Algorithm-Pair-Best2146logstatsplain d---------p5-Algorithm-Pair-Swiss146logstatsplain d---------p5-Baseball-Sabermetrics146logstatsplain d---------p5-Games-Alak146logstatsplain d---------p5-Games-AlphaBeta146logstatsplain d---------p5-Games-Bingo-Bot146logstatsplain d---------p5-Games-Bingo-Print146logstatsplain d---------p5-Games-Bingo146logstatsplain d---------p5-Games-Dice146logstatsplain d---------p5-Games-GuessWord146logstatsplain d---------p5-Games-Tournament-RoundRobin146logstatsplain d---------pachi185logstatsplain d---------pacmanarena146logstatsplain d---------paintown146logstatsplain d---------pairs146logstatsplain d---------palapeli146logstatsplain d---------palomino146logstatsplain