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 |
_("Run upgrade"), |
|
76 |
RES_DIST_UPGRADER, |
|
77 |
NULL); |
|
78 |
gtk_dialog_set_default_response (GTK_DIALOG(dialog), RES_DIST_UPGRADER); |
|
365
by Michael Vogt
* src/update.c, src/crash.c, src/hooks.c: |
79 |
break; |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
80 |
case CD_WITH_ADDONS: |
295
by Michael Vogt
* basic addon cd detection check added |
81 |
title = _("Addon volume detected"); |
82 |
markup = _("<span weight=\"bold\" size=\"larger\">" |
|
83 |
"An addon volume with software applications has "
|
|
322
by Michael Vogt
* fix spelling mistake in addon CD detection (LP#110352) |
84 |
"been detected.</span>\n\n" |
295
by Michael Vogt
* basic addon cd detection check added |
85 |
"Would you like to view/install the content? "); |
86 |
gtk_dialog_add_buttons(GTK_DIALOG(dialog), |
|
87 |
GTK_STOCK_CANCEL, |
|
88 |
GTK_RESPONSE_REJECT, |
|
89 |
_("Start package manager"), |
|
90 |
RES_START_PM, |
|
91 |
_("Start addon installer"), |
|
92 |
RES_ADDON_CD, |
|
93 |
NULL); |
|
94 |
gtk_dialog_set_default_response (GTK_DIALOG(dialog), RES_ADDON_CD); |
|
365
by Michael Vogt
* src/update.c, src/crash.c, src/hooks.c: |
95 |
break; |
295
by Michael Vogt
* basic addon cd detection check added |
96 |
|
324
by Michael Vogt
* fix incorrect desktop file name |
97 |
case CD_WITH_APTONCD: |
98 |
title = _("APTonCD volume detected"); |
|
99 |
markup = _("<span weight=\"bold\" size=\"larger\">" |
|
100 |
"A volume with unofficial software packages has "
|
|
101 |
"been detected.</span>\n\n" |
|
102 |
"Would you like to open it with the "
|
|
103 |
"package manager?"); |
|
104 |
gtk_dialog_add_buttons(GTK_DIALOG(dialog), |
|
105 |
GTK_STOCK_CANCEL, |
|
106 |
GTK_RESPONSE_REJECT, |
|
107 |
_("Start package manager"), |
|
108 |
RES_START_PM, |
|
109 |
NULL); |
|
110 |
gtk_dialog_set_default_response (GTK_DIALOG(dialog), RES_START_PM); |
|
365
by Michael Vogt
* src/update.c, src/crash.c, src/hooks.c: |
111 |
break; |
324
by Michael Vogt
* fix incorrect desktop file name |
112 |
default: |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
113 |
g_assert_not_reached(); |
114 |
}
|
|
115 |
||
116 |
gtk_window_set_title(GTK_WINDOW(dialog), title); |
|
117 |
gtk_window_set_skip_taskbar_hint (GTK_WINDOW(dialog), FALSE); |
|
366
by Michael Vogt
- do not keep the cdrom detected window on top of |
118 |
gtk_message_dialog_set_markup(GTK_MESSAGE_DIALOG(dialog), markup); |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
119 |
|
33
by mvo
* cdrom detection dialog improved |
120 |
int res = gtk_dialog_run (GTK_DIALOG (dialog)); |
121 |
char *cmd = NULL; |
|
295
by Michael Vogt
* basic addon cd detection check added |
122 |
switch(res) { |
92
by mvo
* configure.in: |
123 |
gchar *argv[3]; |
264.1.3
by Michael Vogt
* src/hal.c: |
124 |
case RES_START_PM: |
92
by mvo
* configure.in: |
125 |
cmd = g_strdup_printf("synaptic --add-cdrom '%s'",mount_point); |
316
by Michael Vogt
* fix cdrom detection for cdrom mountpoints with spaces (LP#114593) |
126 |
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 |
127 |
break; |
92
by mvo
* configure.in: |
128 |
case RES_DIST_UPGRADER: |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
129 |
argv[0] = "/usr/lib/update-notifier/cddistupgrader"; |
264.1.2
by Michael Vogt
* data/apt-cdrom-check: |
130 |
argv[1] = (gchar *)mount_point; |
476
by Michael Vogt
fix -Wall errors |
131 |
argv[2] = NULL; |
264.1.2
by Michael Vogt
* data/apt-cdrom-check: |
132 |
g_spawn_async (NULL, argv, NULL, 0, NULL, NULL, NULL, NULL); |
133 |
break; |
|
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
134 |
case RES_ADDON_CD: |
295
by Michael Vogt
* basic addon cd detection check added |
135 |
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) |
136 |
invoke_with_gksu(cmd, "/usr/share/applications/gnome-app-install.desktop", FALSE); |
323
by Michael Vogt
* fix incorrect desktop file name (thanks to cypherbios) |
137 |
break; |
295
by Michael Vogt
* basic addon cd detection check added |
138 |
default: |
264.1.3
by Michael Vogt
* src/hal.c: |
139 |
/* do nothing */
|
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
140 |
break; |
141 |
}
|
|
33
by mvo
* cdrom detection dialog improved |
142 |
g_free(cmd); |
295
by Michael Vogt
* basic addon cd detection check added |
143 |
gtk_widget_destroy (dialog); |
33
by mvo
* cdrom detection dialog improved |
144 |
}
|
145 |
||
146 |
void
|
|
474
by Michael Vogt
* src/hal.c: |
147 |
up_check_mount_point_for_packages (const char *mount_point, gpointer data) |
148 |
{
|
|
149 |
if (!mount_point) |
|
150 |
return; |
|
151 |
||
30
by mvo
* added basic hal support. |
152 |
char *ubuntu_dir = g_strdup_printf("%s/ubuntu",mount_point); |
153 |
char *cdromupgrade = g_strdup_printf("%s/cdromupgrade",mount_point); |
|
623
by Michael Vogt
* data/apt-cdrom-check, data/cddistupgrader: |
154 |
char *aptoncd_file = g_strdup_printf("%s/aptoncd.info",mount_point); |
324
by Michael Vogt
* fix incorrect desktop file name |
155 |
if(! (g_file_test (ubuntu_dir, G_FILE_TEST_IS_SYMLINK) || |
156 |
g_file_test (cdromupgrade, G_FILE_TEST_EXISTS) || |
|
623
by Michael Vogt
* data/apt-cdrom-check, data/cddistupgrader: |
157 |
g_file_test (aptoncd_file, G_FILE_TEST_IS_REGULAR) )) { |
324
by Michael Vogt
* fix incorrect desktop file name |
158 |
g_free(ubuntu_dir); |
30
by mvo
* added basic hal support. |
159 |
g_free(cdromupgrade); |
623
by Michael Vogt
* data/apt-cdrom-check, data/cddistupgrader: |
160 |
g_free(aptoncd_file); |
324
by Michael Vogt
* fix incorrect desktop file name |
161 |
return; |
30
by mvo
* added basic hal support. |
162 |
}
|
163 |
g_free(ubuntu_dir); |
|
263
by Michael Vogt
* src/hal.c: |
164 |
g_free(cdromupgrade); |
623
by Michael Vogt
* data/apt-cdrom-check, data/cddistupgrader: |
165 |
g_free(aptoncd_file); |
324
by Michael Vogt
* fix incorrect desktop file name |
166 |
|
30
by mvo
* added basic hal support. |
167 |
/* this looks like a ubuntu CD, run the checker script to verify
|
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
168 |
* this. We expect the following return codes:
|
169 |
# 0 - no ubuntu CD
|
|
170 |
# 1 - CD with packages
|
|
171 |
# 2 - dist-upgrader CD
|
|
172 |
# 3 - addon CD
|
|
324
by Michael Vogt
* fix incorrect desktop file name |
173 |
# 4 - aptoncd media
|
174 |
* (see data/apt-cdrom-check)
|
|
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
175 |
*/
|
176 |
//g_print("this looks like a ubuntu-cdrom\n");
|
|
30
by mvo
* added basic hal support. |
177 |
char *cmd = g_strdup_printf(CDROM_CHECKER" '%s'",mount_point); |
316
by Michael Vogt
* fix cdrom detection for cdrom mountpoints with spaces (LP#114593) |
178 |
int retval=-1; |
30
by mvo
* added basic hal support. |
179 |
g_spawn_command_line_sync(cmd, NULL, NULL, &retval, NULL); |
180 |
||
181 |
//g_print("retval: %i \n", WEXITSTATUS(retval));
|
|
94
by mvo
* src/update-notifier.c: |
182 |
int cdtype = WEXITSTATUS(retval); |
264.1.1
by Michael Vogt
* data/apt-cdrom-check: |
183 |
if(cdtype > 0) { |
184 |
distro_cd_detected(data, cdtype, mount_point); |
|
474
by Michael Vogt
* src/hal.c: |
185 |
}
|
30
by mvo
* added basic hal support. |
186 |
|
187 |
g_free(cmd); |
|
188 |
}
|
|
189 |
||
190 |
void
|
|
474
by Michael Vogt
* src/hal.c: |
191 |
up_device_changed (GduPool *pool, GduDevice *device, gpointer data) |
192 |
{
|
|
193 |
//g_print("up_device_changed %s\n", gdu_device_get_device_file (device));
|
|
194 |
||
195 |
// if its a partition, do the removable check on the parent
|
|
623
by Michael Vogt
* data/apt-cdrom-check, data/cddistupgrader: |
196 |
GduDevice *removable = NULL; |
197 |
if (gdu_device_is_partition(device)) { |
|
624
by Michael Vogt
src/gdu.c: fix ref counting |
198 |
removable = gdu_device_find_parent(device); |
623
by Michael Vogt
* data/apt-cdrom-check, data/cddistupgrader: |
199 |
} else { |
624
by Michael Vogt
src/gdu.c: fix ref counting |
200 |
removable = device; |
623
by Michael Vogt
* data/apt-cdrom-check, data/cddistupgrader: |
201 |
g_object_ref(device); |
624
by Michael Vogt
src/gdu.c: fix ref counting |
202 |
}
|
203 |
||
623
by Michael Vogt
* data/apt-cdrom-check, data/cddistupgrader: |
204 |
// check if that is a removable device
|
474
by Michael Vogt
* src/hal.c: |
205 |
if (!gdu_device_is_removable(removable)) { |
624
by Michael Vogt
src/gdu.c: fix ref counting |
206 |
g_object_unref(removable); |
207 |
return; |
|
474
by Michael Vogt
* src/hal.c: |
208 |
}
|
624
by Michael Vogt
src/gdu.c: fix ref counting |
209 |
|
474
by Michael Vogt
* src/hal.c: |
210 |
// we only care about the first mount point
|
211 |
const gchar *p = gdu_device_get_mount_path (device); |
|
476
by Michael Vogt
fix -Wall errors |
212 |
//g_print("checking mount point %s\n", p);
|
474
by Michael Vogt
* src/hal.c: |
213 |
up_check_mount_point_for_packages (p, data); |
214 |
}
|
|
215 |
||
216 |
||
217 |
void
|
|
218 |
up_check_mounted_devices (GduPool *pool, gpointer data) |
|
219 |
{
|
|
220 |
GList *devices = gdu_pool_get_devices (pool); |
|
221 |
||
222 |
while(devices != NULL) { |
|
223 |
up_device_changed (pool, devices->data, data); |
|
224 |
devices = g_list_next(devices); |
|
225 |
}
|
|
226 |
g_list_free(devices); |
|
227 |
}
|
|
228 |
||
229 |
gboolean
|
|
381
by Michael Vogt
* src/hal.c: |
230 |
up_do_hal_init (UpgradeNotifier *un) |
474
by Michael Vogt
* src/hal.c: |
231 |
{
|
232 |
GduPool *pool = gdu_pool_new (); |
|
233 |
if (pool == NULL) |
|
496
by Michael Vogt
* src/hal.c: |
234 |
return FALSE; |
235 |
||
236 |
g_signal_connect (pool, "device_changed", (GCallback)up_device_changed, un); |
|
476
by Michael Vogt
fix -Wall errors |
237 |
// now check what devices we have
|
474
by Michael Vogt
* src/hal.c: |
238 |
up_check_mounted_devices(pool, un); |
239 |
||
240 |
return TRUE; |
|
241 |
}
|
|
242 |
||
243 |
||
244 |
#else
|
|
573
by Michael Vogt
merged from debian |
245 |
#include <glib.h> |
246 |
||
247 |
#include "update-notifier.h" |
|
248 |
||
249 |
gboolean
|
|
250 |
up_do_hal_init (UpgradeNotifier *un) |
|
251 |
{
|
|
252 |
g_warning("Detection and monitoring of CD-ROMs disabled."); |
|
253 |
return FALSE; |
|
254 |
}
|
|
255 |
#endif // HAVE_GUDEV |
|
256 |