annotate main.c @ 58:017b0a4b6ec5 version-3

Release version 3
author Guido Berhoerster <guido+pk-update-icon@berhoerster.name>
date Mon, 02 Jul 2018 13:25:11 +0200
parents 7de92a24e86c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
1 /*
53
7de92a24e86c Update email address
Guido Berhoerster <guido+pk-update-icon@berhoerster.name>
parents: 46
diff changeset
2 * Copyright (C) 2011 Guido Berhoerster <guido+pk-update-icon@berhoerster.name>
2
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
3 *
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
4 * Licensed under the GNU General Public License Version 2
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
5 *
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
6 * This program is free software; you can redistribute it and/or modify
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
7 * it under the terms of the GNU General Public License as published by
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
9 * (at your option) any later version.
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
10 *
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
11 * This program is distributed in the hope that it will be useful,
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
14 * GNU General Public License for more details.
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
15 *
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
16 * You should have received a copy of the GNU General Public License
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
17 * along with this program; if not, write to the Free Software
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
19 */
847ae02bc13b added GPLv2 headers
Pavol Rusnak <stick@gk2.sk>
parents: 1
diff changeset
20
8
58a3312a1c59 add internationalization support
Guido Berhoerster <guido@berhoerster.name>
parents: 3
diff changeset
21 #include <locale.h>
58a3312a1c59 add internationalization support
Guido Berhoerster <guido@berhoerster.name>
parents: 3
diff changeset
22 #include <glib/gi18n.h>
0
f5e03fc667f8 initial commit
Pavol Rusnak <stick@gk2.sk>
parents:
diff changeset
23 #include <gtk/gtk.h>
9
0e50d3652326 use libunique to ensure that only a single instance of pk-update-icon can be run
Guido Berhoerster <guido@berhoerster.name>
parents: 8
diff changeset
24 #include <unique/unique.h>
14
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
25 #include <libnotify/notify.h>
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
26 #include "pkui-icon.h"
1
483f5fe9d2b2 change icon and tooltip of the tray icon
Pavol Rusnak <stick@gk2.sk>
parents: 0
diff changeset
27
14
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
28 int
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
29 main(int argc, char **argv)
0
f5e03fc667f8 initial commit
Pavol Rusnak <stick@gk2.sk>
parents:
diff changeset
30 {
14
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
31 PkuiIcon *icon;
16
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
32 UniqueApp *app = NULL;
14
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
33 int exitval = 0;
16
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
34 gboolean version = FALSE;
46
aa5d3752091d Make the update viewer command configurable
Guido Berhoerster <gber@opensuse.org>
parents: 31
diff changeset
35 gchar *update_viewer_command = NULL;
31
f549b75c3c22 increase the default update interval and delay before checking for updates
Guido Berhoerster <gber@opensuse.org>
parents: 16
diff changeset
36 gint startup_delay = 300;
f549b75c3c22 increase the default update interval and delay before checking for updates
Guido Berhoerster <gber@opensuse.org>
parents: 16
diff changeset
37 gint check_interval = 86400;
16
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
38 GOptionContext *context;
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
39 GError *error = NULL;
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
40 const GOptionEntry options[] = {
46
aa5d3752091d Make the update viewer command configurable
Guido Berhoerster <gber@opensuse.org>
parents: 31
diff changeset
41 { "command", 'c', 0, G_OPTION_ARG_STRING,
aa5d3752091d Make the update viewer command configurable
Guido Berhoerster <gber@opensuse.org>
parents: 31
diff changeset
42 &update_viewer_command, N_("Command for starting the "
aa5d3752091d Make the update viewer command configurable
Guido Berhoerster <gber@opensuse.org>
parents: 31
diff changeset
43 "software update viewer"), "command" },
16
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
44 { "delay", 'd', 0, G_OPTION_ARG_INT, &startup_delay,
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
45 N_("Set the delay in seconds before the first check for "
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
46 "updates"), "delay" },
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
47 { "interval", 'i', 0, G_OPTION_ARG_INT, &check_interval,
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
48 N_("Set the interval in seconds between checks for "
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
49 "updates"), "interval" },
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
50 { "version", 'v', 0, G_OPTION_ARG_NONE, &version,
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
51 N_("Print the version number and exit"), NULL },
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
52 { NULL, 0, 0, G_OPTION_ARG_NONE, NULL, NULL, 0 }
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
53 };
0
f5e03fc667f8 initial commit
Pavol Rusnak <stick@gk2.sk>
parents:
diff changeset
54
8
58a3312a1c59 add internationalization support
Guido Berhoerster <guido@berhoerster.name>
parents: 3
diff changeset
55 setlocale(LC_ALL, "");
14
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
56
8
58a3312a1c59 add internationalization support
Guido Berhoerster <guido@berhoerster.name>
parents: 3
diff changeset
57 bindtextdomain(PACKAGE, LOCALEDIR);
58a3312a1c59 add internationalization support
Guido Berhoerster <guido@berhoerster.name>
parents: 3
diff changeset
58 bind_textdomain_codeset(PACKAGE, "UTF-8");
58a3312a1c59 add internationalization support
Guido Berhoerster <guido@berhoerster.name>
parents: 3
diff changeset
59 textdomain(PACKAGE);
58a3312a1c59 add internationalization support
Guido Berhoerster <guido@berhoerster.name>
parents: 3
diff changeset
60
0
f5e03fc667f8 initial commit
Pavol Rusnak <stick@gk2.sk>
parents:
diff changeset
61 gtk_init(&argc, &argv);
14
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
62
16
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
63 context = g_option_context_new(_("- display notifications about "
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
64 "software updates"));
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
65 g_option_context_add_main_entries(context, options, PACKAGE);
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
66 g_option_context_parse(context, &argc, &argv, &error);
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
67 g_option_context_free(context);
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
68 if (error) {
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
69 g_printerr("Error parsing command line options: %s\n",
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
70 error->message);
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
71 g_error_free(error);
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
72 exitval = 1;
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
73 goto out;
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
74 }
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
75
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
76 if (startup_delay < 0) {
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
77 g_printerr("Error parsing command line options: delay must be "
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
78 "greater or equal to zero\n");
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
79 exitval = 1;
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
80 goto out;
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
81 }
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
82
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
83 if (check_interval < 0) {
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
84 g_printerr("Error parsing command line options: interval must "
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
85 "be greater or equal to zero\n");
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
86 exitval = 1;
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
87 goto out;
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
88 }
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
89
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
90 if (version) {
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
91 g_print("%s %s\n", PACKAGE, VERSION);
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
92 goto out;
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
93 }
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
94
9
0e50d3652326 use libunique to ensure that only a single instance of pk-update-icon can be run
Guido Berhoerster <guido@berhoerster.name>
parents: 8
diff changeset
95 app = unique_app_new(APP_NAME, NULL);
0e50d3652326 use libunique to ensure that only a single instance of pk-update-icon can be run
Guido Berhoerster <guido@berhoerster.name>
parents: 8
diff changeset
96 if (unique_app_is_running(app)) {
14
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
97 g_printerr("Another instance of pk-update-icon is already "
16
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
98 "running, exiting\n");
9
0e50d3652326 use libunique to ensure that only a single instance of pk-update-icon can be run
Guido Berhoerster <guido@berhoerster.name>
parents: 8
diff changeset
99 exitval = 1;
0e50d3652326 use libunique to ensure that only a single instance of pk-update-icon can be run
Guido Berhoerster <guido@berhoerster.name>
parents: 8
diff changeset
100 goto out;
0e50d3652326 use libunique to ensure that only a single instance of pk-update-icon can be run
Guido Berhoerster <guido@berhoerster.name>
parents: 8
diff changeset
101 }
0
f5e03fc667f8 initial commit
Pavol Rusnak <stick@gk2.sk>
parents:
diff changeset
102
14
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
103 notify_init(PACKAGE);
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
104
46
aa5d3752091d Make the update viewer command configurable
Guido Berhoerster <gber@opensuse.org>
parents: 31
diff changeset
105 icon = pkui_icon_new(startup_delay, check_interval,
aa5d3752091d Make the update viewer command configurable
Guido Berhoerster <gber@opensuse.org>
parents: 31
diff changeset
106 update_viewer_command);
0
f5e03fc667f8 initial commit
Pavol Rusnak <stick@gk2.sk>
parents:
diff changeset
107
f5e03fc667f8 initial commit
Pavol Rusnak <stick@gk2.sk>
parents:
diff changeset
108 gtk_main();
f5e03fc667f8 initial commit
Pavol Rusnak <stick@gk2.sk>
parents:
diff changeset
109
14
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
110 g_object_unref(icon);
9
0e50d3652326 use libunique to ensure that only a single instance of pk-update-icon can be run
Guido Berhoerster <guido@berhoerster.name>
parents: 8
diff changeset
111 out:
16
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
112 if (app != NULL)
7af115023d5a add CLI, make delay and interval configurable
Guido Berhoerster <guido@berhoerster.name>
parents: 14
diff changeset
113 g_object_unref(app);
14
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
114 if (notify_is_initted())
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
115 notify_uninit ();
46
aa5d3752091d Make the update viewer command configurable
Guido Berhoerster <gber@opensuse.org>
parents: 31
diff changeset
116 g_free(update_viewer_command);
9
0e50d3652326 use libunique to ensure that only a single instance of pk-update-icon can be run
Guido Berhoerster <guido@berhoerster.name>
parents: 8
diff changeset
117
14
64f05992d8ec GObject-based rewrite
Guido Berhoerster <guido@berhoerster.name>
parents: 9
diff changeset
118 return (exitval);
0
f5e03fc667f8 initial commit
Pavol Rusnak <stick@gk2.sk>
parents:
diff changeset
119 }