5
#include <glib-object.h>
6
#include <glib/gstdio.h>
8
#include "apt-cache-parser.h"
9
#include "unity-webapps-url-db.h"
11
static GMainLoop *main_loop = NULL;
12
static AptCacheParser *parser = NULL;
13
static UnityWebappsUrlDB *url_db = NULL;
16
spawn_apt_cache (GIOChannel **available, GError **error)
18
gchar *argv[] = {"apt-cache", "dumpavail", NULL};
21
g_spawn_async_with_pipes (NULL, argv, NULL,
22
G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL,
29
g_warning ("Failed to spawn apt-cache: %s\n", (*error)->message);
33
*available = g_io_channel_unix_new (cstdo);
39
package_info_available (GIOChannel *channel,
40
GIOCondition condition,
46
ret = G_IO_STATUS_NORMAL;
48
while (ret == G_IO_STATUS_NORMAL)
50
ret = g_io_channel_read_line (channel, &line, NULL, NULL, NULL);
54
apt_cache_parser_next_line (parser, line);
61
package_info_done (GIOChannel *channel,
62
GIOCondition condition,
67
infos= apt_cache_parser_get_webapp_infos (parser);
73
const gchar *package_name;
76
info = (WebappInfo *)infos->data;
78
package_name = webapp_info_get_package_name (info);
79
g_printf("Found webapp: %s \n", package_name);
82
urls = webapp_info_get_urls (info);
84
for (i = 0; i < urls->len; i++)
88
url = (gchar *)g_ptr_array_index (urls, i);
89
unity_webapps_url_db_insert_url (url_db, url, package_name);
93
g_main_loop_quit (main_loop);
98
list_available_webapps ()
100
GIOChannel *available;
106
spawned = spawn_apt_cache (&available, &error);
108
if (spawned == FALSE)
110
g_error ("Error listing available packages: %s \n", error->message);
111
g_error_free (error);
116
parser = apt_cache_parser_new ();
120
g_io_add_watch (available, G_IO_IN, package_info_available, parser);
121
g_io_add_watch (available, G_IO_HUP, package_info_done, NULL);
127
main (gint argc, gchar **argv)
129
url_db = unity_webapps_url_db_open_default (FALSE);
130
list_available_webapps();
132
main_loop = g_main_loop_new (NULL, FALSE);
133
g_main_loop_run (main_loop);