573
by Michael Vogt
merged from debian |
1 |
#ifdef HAVE_CONFIG_H
|
78
by mvo
* src/*.c: added #include "config.h" (/me <- stupid for forgeting it) |
2 |
#include "config.h" |
3 |
#endif
|
|
4 |
#ifdef HAVE_GDU
|
|
573
by Michael Vogt
merged from debian |
5 |
#include <glib.h> |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
6 |
#include <glib-object.h> |
474
by Michael Vogt
* src/hal.c: |
7 |
|
8 |
#include <sys/types.h> |
|
30
by mvo
* added basic hal support. |
9 |
#include <sys/wait.h> |
10 |
||
11 |
#include "update-notifier.h" |
|
35
by mvo
* big rename: upgrade-notifier -> update-notifier |
12 |
#define GDU_API_IS_SUBJECT_TO_CHANGE
|
573
by Michael Vogt
merged from debian |
13 |
#include <gdu/gdu.h> |
14 |
#include "gdu.h" |
|
480
by Michael Vogt
rename hal.{c,h} to gdu.{c,h} |
15 |
|
30
by mvo
* added basic hal support. |
16 |
#define CDROM_CHECKER PACKAGE_LIB_DIR"/update-notifier/apt-cdrom-check"
|
37
by mvo
* src/hal.c: another updgrade-notifier found |
17 |
|
30
by mvo
* added basic hal support. |
18 |
/* reposonses for the dialog */
|
33
by mvo
* cdrom detection dialog improved |
19 |
enum { |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
20 |
RES_START_PM=1, |
21 |
RES_DIST_UPGRADER=2, |
|
295
by Michael Vogt
* basic addon cd detection check added |
22 |
RES_ADDON_CD=3, |
324
by Michael Vogt
* fix incorrect desktop file name |
23 |
RES_APTONCD=4 |
24 |
};
|
|
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
25 |
|
26 |
/* Returnvalues from apt-cdrom-check:
|
|
27 |
# 0 - no ubuntu CD
|
|
28 |
# 1 - CD with packages
|
|
29 |
# 2 - dist-upgrader CD
|
|
30 |
# 3 - addon CD
|
|
295
by Michael Vogt
* basic addon cd detection check added |
31 |
# 4 - aptoncd media
|
324
by Michael Vogt
* fix incorrect desktop file name |
32 |
*/
|
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
33 |
enum { |
34 |
NO_CD, |
|
35 |
CD_WITH_PACKAGES, |
|
36 |
CD_WITH_DISTUPGRADER, |
|
295
by Michael Vogt
* basic addon cd detection check added |
37 |
CD_WITH_ADDONS, |
324
by Michael Vogt
* fix incorrect desktop file name |
38 |
CD_WITH_APTONCD
|
39 |
};
|
|
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
40 |
|
33
by mvo
* cdrom detection dialog improved |
41 |
void distro_cd_detected(UpgradeNotifier *un, |
475
by Michael Vogt
drop libgnome from the build-depends and switch to |
42 |
int cdtype, |
43 |
const char *mount_point) |
|
44 |
{
|
|
33
by mvo
* cdrom detection dialog improved |
45 |
GtkWidget *dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, |
46 |
GTK_MESSAGE_QUESTION, |
|
47 |
GTK_BUTTONS_NONE, |
|
48 |
NULL ); |
|
49 |
gchar *title, *markup; |
|
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
50 |
switch(cdtype) { |
51 |
case CD_WITH_PACKAGES: |
|
52 |
title = _("Software Packages Volume Detected"); |
|
424
by Michael Vogt
* src/hal.c: |
53 |
markup = _("<span weight=\"bold\" size=\"larger\">" |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
54 |
"A volume with software packages has "
|
55 |
"been detected.</span>\n\n" |
|
56 |
"Would you like to open it with the "
|
|
57 |
"package manager?"); |
|
58 |
gtk_dialog_add_buttons(GTK_DIALOG(dialog), |
|
59 |
GTK_STOCK_CANCEL, |
|
60 |
GTK_RESPONSE_REJECT, |
|
61 |
_("Start Package Manager"), |
|
424
by Michael Vogt
* src/hal.c: |
62 |
RES_START_PM, |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
63 |
NULL); |
64 |
gtk_dialog_set_default_response (GTK_DIALOG(dialog), RES_START_PM); |
|
365
by Michael Vogt
* src/update.c, src/crash.c, src/hooks.c: |
65 |
break; |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
66 |
case CD_WITH_DISTUPGRADER: |
67 |
title = _("Upgrade volume detected"); |
|
68 |
markup = _("<span weight=\"bold\" size=\"larger\">" |
|
69 |
"A distribution volume with software packages has "
|
|
70 |
"been detected.</span>\n\n" |
|
71 |
"Would you like to try to upgrade from it automatically? "); |
|
72 |
gtk_dialog_add_buttons(GTK_DIALOG(dialog), |
|
73 |
GTK_STOCK_CANCEL, |
|
74 |
GTK_RESPONSE_REJECT, |
|
75 |
_("Start package manager"), |
|
76 |
RES_START_PM, |
|
77 |
_("Run upgrade"), |
|
78 |
RES_DIST_UPGRADER, |
|
79 |
NULL); |
|
80 |
gtk_dialog_set_default_response (GTK_DIALOG(dialog), RES_DIST_UPGRADER); |
|
365
by Michael Vogt
* src/update.c, src/crash.c, src/hooks.c: |
81 |
break; |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
82 |
case CD_WITH_ADDONS: |
295
by Michael Vogt
* basic addon cd detection check added |
83 |
title = _("Addon volume detected"); |
84 |
markup = _("<span weight=\"bold\" size=\"larger\">" |
|
85 |
"An addon volume with software applications has "
|
|
322
by Michael Vogt
* fix spelling mistake in addon CD detection (LP#110352) |
86 |
"been detected.</span>\n\n" |
295
by Michael Vogt
* basic addon cd detection check added |
87 |
"Would you like to view/install the content? "); |
88 |
gtk_dialog_add_buttons(GTK_DIALOG(dialog), |
|
89 |
GTK_STOCK_CANCEL, |
|
90 |
GTK_RESPONSE_REJECT, |
|
91 |
_("Start package manager"), |
|
92 |
RES_START_PM, |
|
93 |
_("Start addon installer"), |
|
94 |
RES_ADDON_CD, |
|
95 |
NULL); |
|
96 |
gtk_dialog_set_default_response (GTK_DIALOG(dialog), RES_ADDON_CD); |
|
365
by Michael Vogt
* src/update.c, src/crash.c, src/hooks.c: |
97 |
break; |
295
by Michael Vogt
* basic addon cd detection check added |
98 |
|
324
by Michael Vogt
* fix incorrect desktop file name |
99 |
case CD_WITH_APTONCD: |
100 |
title = _("APTonCD volume detected"); |
|
101 |
markup = _("<span weight=\"bold\" size=\"larger\">" |
|
102 |
"A volume with unofficial software packages has "
|
|
103 |
"been detected.</span>\n\n" |
|
104 |
"Would you like to open it with the "
|
|
105 |
"package manager?"); |
|
106 |
gtk_dialog_add_buttons(GTK_DIALOG(dialog), |
|
107 |
GTK_STOCK_CANCEL, |
|
108 |
GTK_RESPONSE_REJECT, |
|
109 |
_("Start package manager"), |
|
110 |
RES_START_PM, |
|
111 |
NULL); |
|
112 |
gtk_dialog_set_default_response (GTK_DIALOG(dialog), RES_START_PM); |
|
365
by Michael Vogt
* src/update.c, src/crash.c, src/hooks.c: |
113 |
break; |
324
by Michael Vogt
* fix incorrect desktop file name |
114 |
default: |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
115 |
g_assert_not_reached(); |
116 |
}
|
|
117 |
||
118 |
gtk_window_set_title(GTK_WINDOW(dialog), title); |
|
119 |
gtk_window_set_skip_taskbar_hint (GTK_WINDOW(dialog), FALSE); |
|
366
by Michael Vogt
- do not keep the cdrom detected window on top of |
120 |
gtk_message_dialog_set_markup(GTK_MESSAGE_DIALOG(dialog), markup); |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
121 |
|
33
by mvo
* cdrom detection dialog improved |
122 |
int res = gtk_dialog_run (GTK_DIALOG (dialog)); |
123 |
char *cmd = NULL; |
|
295
by Michael Vogt
* basic addon cd detection check added |
124 |
switch(res) { |
92
by mvo
* configure.in: |
125 |
gchar *argv[3]; |
264.1.3
by Michael Vogt
* src/hal.c: |
126 |
case RES_START_PM: |
92
by mvo
* configure.in: |
127 |
cmd = g_strdup_printf("synaptic --add-cdrom '%s'",mount_point); |
316
by Michael Vogt
* fix cdrom detection for cdrom mountpoints with spaces (LP#114593) |
128 |
invoke_with_gksu(cmd, "/usr/share/applications/synaptic.desktop", FALSE); |
283
by Martin Pitt
* src/update-notifier.h: Add a third argument to invoke_with_gksu which uses |
129 |
break; |
92
by mvo
* configure.in: |
130 |
case RES_DIST_UPGRADER: |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
131 |
argv[0] = "/usr/lib/update-notifier/cddistupgrader"; |
264.1.2
by Michael Vogt
* data/apt-cdrom-check: |
132 |
argv[1] = (gchar *)mount_point; |
476
by Michael Vogt
fix -Wall errors |
133 |
argv[2] = NULL; |
264.1.2
by Michael Vogt
* data/apt-cdrom-check: |
134 |
g_spawn_async (NULL, argv, NULL, 0, NULL, NULL, NULL, NULL); |
135 |
break; |
|
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
136 |
case RES_ADDON_CD: |
295
by Michael Vogt
* basic addon cd detection check added |
137 |
cmd = g_strdup_printf("gnome-app-install --addon-cd='%s'", mount_point); |
316
by Michael Vogt
* fix cdrom detection for cdrom mountpoints with spaces (LP#114593) |
138 |
invoke_with_gksu(cmd, "/usr/share/applications/gnome-app-install.desktop", FALSE); |
323
by Michael Vogt
* fix incorrect desktop file name (thanks to cypherbios) |
139 |
break; |
295
by Michael Vogt
* basic addon cd detection check added |
140 |
default: |
264.1.3
by Michael Vogt
* src/hal.c: |
141 |
/* do nothing */
|
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
142 |
break; |
143 |
}
|
|
33
by mvo
* cdrom detection dialog improved |
144 |
g_free(cmd); |
295
by Michael Vogt
* basic addon cd detection check added |
145 |
gtk_widget_destroy (dialog); |
33
by mvo
* cdrom detection dialog improved |
146 |
}
|
147 |
||
148 |
void
|
|
474
by Michael Vogt
* src/hal.c: |
149 |
up_check_mount_point_for_packages (const char *mount_point, gpointer data) |
150 |
{
|
|
151 |
if (!mount_point) |
|
152 |
return; |
|
153 |
||
30
by mvo
* added basic hal support. |
154 |
char *ubuntu_dir = g_strdup_printf("%s/ubuntu",mount_point); |
155 |
char *aptoncd_file = g_strdup_printf("%s/aptoncd.info",mount_point); |
|
324
by Michael Vogt
* fix incorrect desktop file name |
156 |
if(! (g_file_test (ubuntu_dir, G_FILE_TEST_IS_SYMLINK) || |
157 |
g_file_test (aptoncd_file, G_FILE_TEST_IS_REGULAR) )) { |
|
158 |
g_free(ubuntu_dir); |
|
30
by mvo
* added basic hal support. |
159 |
g_free(aptoncd_file); |
324
by Michael Vogt
* fix incorrect desktop file name |
160 |
return; |
30
by mvo
* added basic hal support. |
161 |
}
|
162 |
g_free(ubuntu_dir); |
|
263
by Michael Vogt
* src/hal.c: |
163 |
g_free(aptoncd_file); |
324
by Michael Vogt
* fix incorrect desktop file name |
164 |
|
30
by mvo
* added basic hal support. |
165 |
/* this looks like a ubuntu CD, run the checker script to verify
|
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
166 |
* this. We expect the following return codes:
|
167 |
# 0 - no ubuntu CD
|
|
168 |
# 1 - CD with packages
|
|
169 |
# 2 - dist-upgrader CD
|
|
170 |
# 3 - addon CD
|
|
324
by Michael Vogt
* fix incorrect desktop file name |
171 |
# 4 - aptoncd media
|
172 |
* (see data/apt-cdrom-check)
|
|
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
173 |
*/
|
174 |
//g_print("this looks like a ubuntu-cdrom\n");
|
|
30
by mvo
* added basic hal support. |
175 |
char *cmd = g_strdup_printf(CDROM_CHECKER" '%s'",mount_point); |
316
by Michael Vogt
* fix cdrom detection for cdrom mountpoints with spaces (LP#114593) |
176 |
int retval=-1; |
30
by mvo
* added basic hal support. |
177 |
g_spawn_command_line_sync(cmd, NULL, NULL, &retval, NULL); |
178 |
||
179 |
//g_print("retval: %i \n", WEXITSTATUS(retval));
|
|
94
by mvo
* src/update-notifier.c: |
180 |
int cdtype = WEXITSTATUS(retval); |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
181 |
if(cdtype > 0) { |
182 |
distro_cd_detected(data, cdtype, mount_point); |
|
474
by Michael Vogt
* src/hal.c: |
183 |
}
|
30
by mvo
* added basic hal support. |
184 |
|
185 |
g_free(cmd); |
|
186 |
}
|
|
187 |
||
188 |
void
|
|
474
by Michael Vogt
* src/hal.c: |
189 |
up_device_changed (GduPool *pool, GduDevice *device, gpointer data) |
190 |
{
|
|
191 |
//g_print("up_device_changed %s\n", gdu_device_get_device_file (device));
|
|
192 |
||
193 |
// check if that is a removable device
|
|
194 |
if (!gdu_device_is_removable(device)) |
|
195 |
return; |
|
196 |
||
197 |
// we only care about the first mount point
|
|
198 |
const gchar *p = gdu_device_get_mount_path (device); |
|
476
by Michael Vogt
fix -Wall errors |
199 |
//g_print("checking mount point %s\n", p);
|
474
by Michael Vogt
* src/hal.c: |
200 |
up_check_mount_point_for_packages (p, data); |
201 |
}
|
|
202 |
||
203 |
||
204 |
void
|
|
205 |
up_check_mounted_devices (GduPool *pool, gpointer data) |
|
206 |
{
|
|
207 |
GList *devices = gdu_pool_get_devices (pool); |
|
208 |
||
209 |
while(devices != NULL) { |
|
210 |
up_device_changed (pool, devices->data, data); |
|
211 |
devices = g_list_next(devices); |
|
212 |
}
|
|
213 |
g_list_free(devices); |
|
214 |
}
|
|
215 |
||
216 |
gboolean
|
|
381
by Michael Vogt
* src/hal.c: |
217 |
up_do_hal_init (UpgradeNotifier *un) |
474
by Michael Vogt
* src/hal.c: |
218 |
{
|
219 |
GduPool *pool = gdu_pool_new (); |
|
220 |
if (pool == NULL) |
|
496
by Michael Vogt
* src/hal.c: |
221 |
return FALSE; |
222 |
||
223 |
g_signal_connect (pool, "device_changed", (GCallback)up_device_changed, un); |
|
476
by Michael Vogt
fix -Wall errors |
224 |
// now check what devices we have
|
474
by Michael Vogt
* src/hal.c: |
225 |
up_check_mounted_devices(pool, un); |
226 |
||
227 |
return TRUE; |
|
228 |
}
|
|
229 |
||
230 |
||
231 |
#else
|
|
573
by Michael Vogt
merged from debian |
232 |
#include <glib.h> |
233 |
||
234 |
#include "update-notifier.h" |
|
235 |
||
236 |
gboolean
|
|
237 |
up_do_hal_init (UpgradeNotifier *un) |
|
238 |
{
|
|
239 |
g_warning("Detection and monitoring of CD-ROMs disabled."); |
|
240 |
return FALSE; |
|
241 |
}
|
|
242 |
#endif // HAVE_GUDEV |
|
243 |