+ database_path = argv[1];
+
+ g_mime_init (0);
+
+ try {
+ Xapian::WritableDatabase db;
+ Xapian::TermGenerator term_gen;
+
+ db = Xapian::WritableDatabase (database_path,
+ Xapian::DB_CREATE_OR_OPEN);
+
+ term_gen = Xapian::TermGenerator ();
+
+ channel = g_io_channel_unix_new (fileno (stdin));
+
+ while (1) {
+ gio_status = g_io_channel_read_line (channel, &filename,
+ NULL, NULL, &error);
+ if (gio_status == G_IO_STATUS_EOF)
+ break;
+ if (gio_status != G_IO_STATUS_NORMAL) {
+ fprintf (stderr, "An error occurred reading from stdin: %s\n",
+ error->message);
+ exit (1);
+ }
+
+ g_strchomp (filename);
+ index_file (db, term_gen, filename);
+
+ g_free (filename);
+ }