~chromium-team/chromium-browser/artful-beta

« back to all changes in this revision

Viewing changes to debian/patches/xdg-utils-update.patch

* Merge with chromium-browser.stable #583

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
---
2
 
 chrome/chrome_exe.gypi                             |    1 
3
 
 chrome/chrome_installer.gypi                       |    1 
4
 
 third_party/xdg-utils/ChangeLog                    |  155 +++++++++++++
5
 
 third_party/xdg-utils/README.chromium              |   21 +
6
 
 third_party/xdg-utils/README.google                |   12 -
7
 
 third_party/xdg-utils/scripts/Makefile.in          |    4 
8
 
 third_party/xdg-utils/scripts/man/xdg-open.1       |    6 
9
 
 third_party/xdg-utils/scripts/xdg-copy             |    6 
10
 
 third_party/xdg-utils/scripts/xdg-copy.in          |    6 
11
 
 third_party/xdg-utils/scripts/xdg-desktop-icon     |   39 +--
12
 
 third_party/xdg-utils/scripts/xdg-desktop-icon.in  |   30 +-
13
 
 third_party/xdg-utils/scripts/xdg-desktop-menu     |   82 +------
14
 
 third_party/xdg-utils/scripts/xdg-desktop-menu.in  |   75 +-----
15
 
 third_party/xdg-utils/scripts/xdg-email            |  107 ++++++++-
16
 
 third_party/xdg-utils/scripts/xdg-email.in         |  100 +++++++-
17
 
 third_party/xdg-utils/scripts/xdg-file-dialog.in   |    2 
18
 
 third_party/xdg-utils/scripts/xdg-icon-resource    |   30 +-
19
 
 third_party/xdg-utils/scripts/xdg-icon-resource.in |   23 +-
20
 
 third_party/xdg-utils/scripts/xdg-mime             |  237 +++++++++++++++------
21
 
 third_party/xdg-utils/scripts/xdg-mime.in          |  230 +++++++++++++++-----
22
 
 third_party/xdg-utils/scripts/xdg-open             |  120 ++++++++--
23
 
 third_party/xdg-utils/scripts/xdg-open.in          |  113 +++++++---
24
 
 third_party/xdg-utils/scripts/xdg-screensaver      |  181 ++++++++++------
25
 
 third_party/xdg-utils/scripts/xdg-screensaver.in   |  128 +++++++----
26
 
 third_party/xdg-utils/scripts/xdg-settings         |   22 +
27
 
 third_party/xdg-utils/scripts/xdg-settings.in      |   17 -
28
 
 third_party/xdg-utils/scripts/xdg-su.in            |    2 
29
 
 third_party/xdg-utils/scripts/xdg-utils-common.in  |    5 
30
 
 28 files changed, 1237 insertions(+), 518 deletions(-)
31
 
 
32
 
Index: src/third_party/xdg-utils/ChangeLog
33
 
===================================================================
34
 
--- src.orig/third_party/xdg-utils/ChangeLog
35
 
+++ src/third_party/xdg-utils/ChangeLog
36
 
@@ -1,26 +1,167 @@
37
 
-=== xdg-utils 1.x.x ====
38
 
+=== xdg-utils 1.x.x ===
39
 
 
40
 
-2009-07-27 Fathi Boudra <fabo@debian.org>
41
 
+2010-07-09 Rex Dieter <rdieter@fedoraproject.org>
42
 
+    * xdg-screensaver: consider gnome-screensaver a separate DE (BR20027)
43
 
+
44
 
+2010-07-09 Rex Dieter <rdieter@fedoraproject.org>
45
 
+    * xdg-mime : use 'gnomevfs-info --slow-mime' (BR 13939)
46
 
+
47
 
+2010-07-09 Rex Dieter <rdieter@fedoraproject.org>
48
 
+    * xdg-desktop-icon :  use localized desktop folder name (BR19011)
49
 
+
50
 
+2010-07-09 Rex Dieter <rdieter@fedoraproject.org>
51
 
+    * xdg-open : use mimeopen -L (follow symlinks)
52
 
+
53
 
+2010-07-09 Rex Dieter <rdieter@fedoraproject.org>
54
 
+    * xdg-open.1 : add FILES, SEE ALSO sections
55
 
+
56
 
+2010-05-16 Rex Dieter <rdieter@fedoraproject.org>
57
 
+    * xdg-open: Spaces in filename (BR27959)
58
 
+
59
 
+2010-04-22 Fathi Boudra <fabo@freedesktop.org>
60
 
+    * xdg-email and xdg-open: perform BROWSER check in any case.
61
 
+      Thanks to Andrea Florio. (BR27551)
62
 
+
63
 
+2010-04-22 Fathi Boudra <fabo@freedesktop.org>
64
 
+    * xdg-email: try console mode browsers and update the browser list.
65
 
+
66
 
+2010-02-28 Fathi Boudra <fabo@freedesktop.org>
67
 
+    * xdg-utils-common: fix the comment of exit_failure_file_permission_write
68
 
+      function. (BR12821)
69
 
+
70
 
+2010-02-28 Fathi Boudra <fabo@freedesktop.org>
71
 
+    * xdg-open: fix regression in open_generic as xdg-mime doesn't handle
72
 
+      URLs (mimeopen and run-mailcap as well). Move xdg-mime call into
73
 
+      a new function (open_generic_xdg_mime). Check input file before
74
 
+      trying to open them with non-browsers.
75
 
+
76
 
+2010-02-28 Fathi Boudra <fabo@freedesktop.org>
77
 
+    * xdg-open: fix failure if $BROWSER has arguments. (BR14374)
78
 
+      Thanks to Johannes Wegener.
79
 
+
80
 
+2010-02-28 Fathi Boudra <fabo@freedesktop.org>
81
 
+    * xdg-open: try console mode browsers and update the browser list.
82
 
+      Thanks to Ville Skyttä and Pablo Castellano. (BR14361)
83
 
+
84
 
+2010-02-24 Fathi Boudra <fabo@freedesktop.org>
85
 
+    * xdg-screensaver: use dbus-send instead of qdbus for freedesktop
86
 
+      screensaver.
87
 
+
88
 
+2010-02-23 Fathi Boudra <fabo@freedesktop.org>
89
 
+    * xdg-mime: improve MIME string check when using gnomevfs-info. (BR12818)
90
 
+
91
 
+2010-02-23 Fathi Boudra <fabo@freedesktop.org>
92
 
+    * xdg-mime: report error on failure.
93
 
+
94
 
+2010-02-21 Fathi Boudra <fabo@freedesktop.org>
95
 
+    * xdg-open: in open_generic, use xdg-mime to lookup mime type and
96
 
+      association before the alternatives methods (mimeopen and run-mailcap).
97
 
+      (BR23280)
98
 
+
99
 
+2010-02-20 Fathi Boudra <fabo@freedesktop.org>
100
 
+    * Add gvfs-copy and gvfs-info support. (BR15828)
101
 
+
102
 
+2010-01-27 Rex Dieter <rdieter@fedoraproject.org>
103
 
+    * xdg-settings: Add %s to the command in the Gnome url handlers (BR26284)
104
 
+
105
 
+2010-01-18 Rex Dieter <rdieter@fedoraproject.org>
106
 
+    * xdg-screensaver resume activates the screensaver on KDE4 (BR26085)
107
 
+
108
 
+2009-10-16 Rex Dieter <rdieter@fedoraproject.org>
109
 
+    * prefer gvfs-open over gnome-open
110
 
+    * DE=gnome, if org.gnome.SessionManager exists on dbus
111
 
+
112
 
+2009-10-12 Fathi Boudra <fabo@freedesktop.org>
113
 
+    * Fix xdg-email --attach failure with Evolution. (BR23007)
114
 
+      Thanks to Dwayne Bailey <dwayne@translate.org.za>
115
 
+
116
 
+2009-10-12 Fathi Boudra <fabo@freedesktop.org>
117
 
+    * Add an extra check in xdg-open and call kfmclient openURL as a fallback
118
 
+         on KDE 4. Thanks to Nicolas Lécureil <neoclust@mandriva.org>
119
 
+
120
 
+2009-10-12 Fathi Boudra <fabo@freedesktop.org>
121
 
+    * Add email attachments support to Thunderbird from xdg-email. (BR13435)
122
 
+      Thanks to Lei Zhang <thestig@google.com>
123
 
+
124
 
+2009-10-12 Fathi Boudra <fabo@freedesktop.org>
125
 
+    * Fix xdg-open to handle URL with '#' symbol. (BR23319, BR24375)
126
 
+
127
 
+2009-10-12 Fathi Boudra <fabo@freedesktop.org>
128
 
+    * Remove bash requirement to xdg-open and xdg-email. (BR20015)
129
 
+
130
 
+2009-10-12 Fathi Boudra <fabo@freedesktop.org>
131
 
+    * Update xdg-settings - Thanks to Mike Mammarella:
132
 
+      This fixes some issues where user-generated icons would be detected as
133
 
+      the official .desktop file for a binary, rather than the actual version.
134
 
+      (It resolves forward and compares binaries rather than resolving backward
135
 
+      to a .desktop file from a binary)
136
 
+
137
 
+2009-09-28 Rex Dieter <rdieter@fedoraproject.org>
138
 
+    * Use kde-open, if available (ie, KDE 4)
139
 
+
140
 
+2009-09-13 Rex Dieter <rdieter@fedoraproject.org>
141
 
+    * detect_de: suppress xprop stderr.
142
 
+
143
 
+2009-08-25 Rex Dieter <rdieter@fedoraproject.org>
144
 
+    * fix build for missing manpages (eg. xdg-settings)
145
 
+
146
 
+2009-08-25 Fathi Boudra <fabo@freedesktop.org>
147
 
+    * Fix hardcoded KDE home directory. Use kde(4)-config to get path.
148
 
+
149
 
+2009-08-25 Fathi Boudra <fabo@freedesktop.org>
150
 
+    * Apply patch from Mike Mammarella <mdm@chromium.org> to fix 2 issues:
151
 
+      - skip invisible desktop files when looking up the default web browser in
152
 
+        GNOME. (http://codereview.chromium.org/159738)
153
 
+      - check for localized settings by hand in xdg-settings if kreadconfig
154
 
+        fails. (http://codereview.chromium.org/160376)
155
 
+
156
 
+2009-08-10 Fathi Boudra <fabo@freedesktop.org>
157
 
+    * Replace kfmclient by kioclient usage under KDE 4.
158
 
+      Thanks to Nicolas Lécureil <neoclust@mandriva.org>
159
 
+
160
 
+2009-08-03 Fathi Boudra <fabo@freedesktop.org>
161
 
+    * Remove fixup_mandriva_categories() function. It is not needed anymore
162
 
+      since a year. Thanks to Nicolas Lécureil <neoclust@mandriva.org>
163
 
+
164
 
+2009-07-29 Fathi Boudra <fabo@freedesktop.org>
165
 
+    * Merge xdg-settings utility: a script to get various settings from
166
 
+      the desktop environment. Thanks to Dan Kegel and Google Inc.
167
 
+
168
 
+2009-07-29 Fathi Boudra <fabo@freedesktop.org>
169
 
+    * Fix hardcoded path in make_default_kde() in xdg-mime unde KDE 3.
170
 
+      Add initial KDE 4 support to the function.
171
 
+
172
 
+2009-07-28 Fathi Boudra <fabo@freedesktop.org>
173
 
+    * Use kbuildsycoca4 under KDE 4 and kbuildsycoca under KDE 3.
174
 
+
175
 
+2009-07-28 Fathi Boudra <fabo@freedesktop.org>
176
 
+    * Use kmimetypefinder under KDE 4 and kfile under KDE 3.
177
 
+
178
 
+2009-07-28 Fathi Boudra <fabo@freedesktop.org>
179
 
+    * Add KDE 4 support to xdg-mime. kdetradertest was replaced by
180
 
+      ktraderclient under KDE 4. (BR22975)
181
 
+
182
 
+2009-07-27 Fathi Boudra <fabo@freedesktop.org>
183
 
     * Remove -u option from su. It doesn't have it.
184
 
 
185
 
-2009-07-27 Fathi Boudra <fabo@debian.org>
186
 
+2009-07-27 Fathi Boudra <fabo@freedesktop.org>
187
 
     * Add KDE 4 support to xdg-email (BR17268)
188
 
 
189
 
-2009-07-26 Fathi Boudra <fabo@debian.org>
190
 
+2009-07-26 Fathi Boudra <fabo@freedesktop.org>
191
 
     * Sleep for 50s instead of 59s to avoid to froze the seesion (BR19414)
192
 
 
193
 
-2009-07-26 Fathi Boudra <fabo@debian.org>
194
 
+2009-07-26 Fathi Boudra <fabo@freedesktop.org>
195
 
     * Fix a race condition in xdg-screensaver (BR19382)
196
 
 
197
 
-2009-07-26 Fathi Boudra <fabo@debian.org>
198
 
+2009-07-26 Fathi Boudra <fabo@freedesktop.org>
199
 
     * Fix basename usage when filename contains spaces (BR18567)
200
 
 
201
 
-2009-07-26 Fathi Boudra <fabo@debian.org>
202
 
+2009-07-26 Fathi Boudra <fabo@freedesktop.org>
203
 
     * Fix bashisms used in xdg-mime and xdg-screensaver (BR15827)
204
 
 
205
 
 2008-08-11 Rex Dieter <rdieter@fedoraproject.org>
206
 
     * initial support for KDE 4
207
 
     * Add dbus commands to xdg-screensaver for KDE 4 (BR17537)
208
 
 
209
 
 2008-01-24 Kevin Krammer <kevin.krammer@gmx.at>
210
 
     * Fixing security issue in xdg-email and xdg-open at replacing
211
 
Index: src/third_party/xdg-utils/README.chromium
212
 
===================================================================
213
 
--- /dev/null
214
 
+++ src/third_party/xdg-utils/README.chromium
215
 
@@ -0,0 +1,21 @@
216
 
+Name: xdg-utils
217
 
+URL: http://portland.freedesktop.org/wiki/
218
 
+
219
 
+This directory contains a copy of xdg-utils obtained from CVS on 2010-08-30,
220
 
+with this command:
221
 
+
222
 
+cvs -d:pserver:anoncvs@anoncvs.freedesktop.org:/cvs/portland co -d xdg-utils portland/xdg-utils
223
 
+
224
 
+The .cvsignore files were converted to svn:ignore properties to check it in.
225
 
+
226
 
+Originally, it had been modified to add the xdg-settings command for getting
227
 
+and, in some cases, setting various GNU/Linux desktop environment settings like
228
 
+the default web browser and proxy configuration.
229
 
+
230
 
+This change has since been incorporated upstream.
231
 
+
232
 
+We now have this copy only to allow us to ship our own copy of xdg-settings (and
233
 
+xdg-mime, because we need a newer version than some distributions include). When
234
 
+these are standard, we can delete our copy.
235
 
+
236
 
+The license for xdg-utils is in the LICENSE file and is similar to BSD-style.
237
 
Index: src/third_party/xdg-utils/README.google
238
 
===================================================================
239
 
--- src.orig/third_party/xdg-utils/README.google
240
 
+++ /dev/null
241
 
@@ -1,12 +0,0 @@
242
 
-This directory contains a copy of xdg-utils obtained from CVS on 2009-07-27,
243
 
-with this command:
244
 
-
245
 
-cvs -d:pserver:anoncvs@anoncvs.freedesktop.org:/cvs/portland co -d xdg-utils portland/xdg-utils
246
 
-
247
 
-The .cvsignore files were converted to svn:ignore properties to check it in.
248
 
-
249
 
-It has been modified to add the xdg-settings command for getting and, in some
250
 
-cases, setting various GNU/Linux desktop environment settings like the default
251
 
-web browser and proxy configuration.
252
 
-
253
 
-The license for xdg-utils is in the LICENSE file and is similar to BSD-style.
254
 
Index: src/third_party/xdg-utils/scripts/Makefile.in
255
 
===================================================================
256
 
--- src.orig/third_party/xdg-utils/scripts/Makefile.in
257
 
+++ src/third_party/xdg-utils/scripts/Makefile.in
258
 
@@ -61,17 +61,19 @@
259
 
 install:
260
 
        $(MKDIR) $(DESTDIR)$(bindir)
261
 
        for x in $(SCRIPTS) ; do \
262
 
            $(INSTALL_SCRIPT) $$x $(DESTDIR)$(bindir) ; \
263
 
        done
264
 
        $(MKDIR) $(DESTDIR)$(mandir)
265
 
        $(MKDIR) $(DESTDIR)$(mandir)/man1
266
 
        for x in $(MANPAGES) ; do \
267
 
-           $(INSTALL_DATA) $$x $(DESTDIR)$(mandir)/man1 ; \
268
 
+           if [ -f $$x ]; then \
269
 
+               $(INSTALL_DATA) $$x $(DESTDIR)$(mandir)/man1 ; \
270
 
+           fi ; \
271
 
        done
272
 
 
273
 
 uninstall:
274
 
        for x in $(MANPAGES) ; do \
275
 
            rm -f $(DESTDIR)$(mandir)/man1/`basename $$x` ; \
276
 
        done
277
 
        -$(RMDIR) $(DESTDIR)$(mandir)/man1
278
 
        -$(RMDIR) $(DESTDIR)$(mandir)
279
 
Index: src/third_party/xdg-utils/scripts/man/xdg-open.1
280
 
===================================================================
281
 
--- src.orig/third_party/xdg-utils/scripts/man/xdg-open.1
282
 
+++ src/third_party/xdg-utils/scripts/man/xdg-open.1
283
 
@@ -52,14 +52,20 @@
284
 
 .sp
285
 
 Opens the Freedesktop.org website in the user's default browser
286
 
 .PP
287
 
 .nf
288
 
 xdg\-open /tmp/foobar.png
289
 
 .fi
290
 
 .sp
291
 
 Opens the PNG image file /tmp/foobar.png in the user's default image viewing application.
292
 
+.SH "FILES"
293
 
+.PP
294
 
+\fI/usr/share/applications/defaults.list ~/.local/share/applications\fR
295
 
+.SH "SEE ALSO"
296
 
+.PP
297
 
+\fBxdg-mime\fR(1),
298
 
 .SH "AUTHOR"
299
 
 Kevin Krammer, Jeremy White. 
300
 
 .br
301
 
 <kevin.krammer@gmx.at>
302
 
 .br
303
 
 <jwhite@codeweavers.com>
304
 
Index: src/third_party/xdg-utils/scripts/xdg-copy
305
 
===================================================================
306
 
--- src.orig/third_party/xdg-utils/scripts/xdg-copy
307
 
+++ src/third_party/xdg-utils/scripts/xdg-copy
308
 
@@ -235,17 +235,21 @@
309
 
         exit_success
310
 
     else
311
 
         exit_failure_operation_failed
312
 
     fi
313
 
 }
314
 
 
315
 
 copy_gnome()
316
 
 {
317
 
-    gnomevfs-copy "$1" "$2"
318
 
+    if gvfs-copy --help 2>/dev/null 1>&2; then
319
 
+        gvfs-copy "$1" "$2"
320
 
+    else
321
 
+        gnomevfs-copy "$1" "$2"
322
 
+    fi
323
 
 
324
 
     if [ $? -eq 0 ]; then
325
 
         exit_success
326
 
     else
327
 
         exit_failure_operation_failed
328
 
     fi
329
 
 }
330
 
 
331
 
Index: src/third_party/xdg-utils/scripts/xdg-copy.in
332
 
===================================================================
333
 
--- src.orig/third_party/xdg-utils/scripts/xdg-copy.in
334
 
+++ src/third_party/xdg-utils/scripts/xdg-copy.in
335
 
@@ -36,17 +36,21 @@
336
 
         exit_success
337
 
     else
338
 
         exit_failure_operation_failed
339
 
     fi
340
 
 }
341
 
 
342
 
 copy_gnome()
343
 
 {
344
 
-    gnomevfs-copy "$1" "$2"
345
 
+    if gvfs-copy --help 2>/dev/null 1>&2; then
346
 
+        gvfs-copy "$1" "$2"
347
 
+    else
348
 
+        gnomevfs-copy "$1" "$2"
349
 
+    fi
350
 
 
351
 
     if [ $? -eq 0 ]; then
352
 
         exit_success
353
 
     else
354
 
         exit_failure_operation_failed
355
 
     fi
356
 
 }
357
 
 
358
 
Index: src/third_party/xdg-utils/scripts/xdg-desktop-icon
359
 
===================================================================
360
 
--- src.orig/third_party/xdg-utils/scripts/xdg-desktop-icon
361
 
+++ src/third_party/xdg-utils/scripts/xdg-desktop-icon
362
 
@@ -296,17 +296,17 @@
363
 
     if [ $# -gt 0 ]; then
364
 
         echo "xdg-desktop-icon: $@" >&2
365
 
     fi
366
 
 
367
 
     exit 5
368
 
 }
369
 
 
370
 
 #------------------------------------------------------------
371
 
-# Exit script on insufficient permission to read a specified file
372
 
+# Exit script on insufficient permission to write a specified file
373
 
 
374
 
 exit_failure_file_permission_write()
375
 
 {
376
 
     if [ $# -gt 0 ]; then
377
 
         echo "xdg-desktop-icon: $@" >&2
378
 
     fi
379
 
 
380
 
     exit 6
381
 
@@ -373,17 +373,17 @@
382
 
             ;;
383
 
 
384
 
             --manual)
385
 
             manualpage
386
 
             exit_success
387
 
             ;;
388
 
 
389
 
             --version)
390
 
-            echo "xdg-desktop-icon 1.0.1"
391
 
+            echo "xdg-desktop-icon 1.0.2"
392
 
             exit_success
393
 
             ;;
394
 
         esac
395
 
     done
396
 
 }
397
 
 
398
 
 check_common_commands "$@"
399
 
 
400
 
@@ -399,17 +399,18 @@
401
 
 #--------------------------------------
402
 
 # Checks for known desktop environments
403
 
 # set variable DE to the desktop environments name, lowercase
404
 
 
405
 
 detectDE()
406
 
 {
407
 
     if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
408
 
     elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
409
 
-    elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
410
 
+    elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
411
 
+    elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
412
 
     fi
413
 
 }
414
 
 
415
 
 #----------------------------------------------------------------------------
416
 
 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4
417
 
 # It also always returns 1 in KDE 3.4 and earlier
418
 
 # Simply return 0 in such case
419
 
 
420
 
@@ -420,17 +421,17 @@
421
 
     minor=`echo $version | sed 's/KDE: [0-9]*\.\([0-9]\).*/\1/'`
422
 
     release=`echo $version | sed 's/KDE: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'`
423
 
     test "$major" -gt 3 && return $1
424
 
     test "$minor" -gt 5 && return $1
425
 
     test "$release" -gt 4 && return $1
426
 
     return 0
427
 
 }
428
 
 
429
 
-[ x"$1" != x"" ] || exit_failure_syntax 
430
 
+[ x"$1" != x"" ] || exit_failure_syntax
431
 
 
432
 
 action=
433
 
 desktop_file=
434
 
 
435
 
 case $1 in
436
 
   install)
437
 
     action=install
438
 
     ;;
439
 
@@ -477,73 +478,77 @@
440
 
     exit_failure_syntax "command argument missing"
441
 
 fi
442
 
 
443
 
 if [ -z "$desktop_file" ] ; then
444
 
     exit_failure_syntax "FILE argument missing"
445
 
 fi
446
 
 
447
 
 filetype=
448
 
-case $desktop_file in
449
 
+case "$desktop_file" in
450
 
   *.desktop)
451
 
      filetype=desktop
452
 
      if [ "$vendor" = "true" -a "$action" = "install" ] ; then
453
 
         check_vendor_prefix "$desktop_file"
454
 
      fi
455
 
      ;;
456
 
   *)
457
 
      filetype=other
458
 
      ;;
459
 
 esac
460
 
 
461
 
 my_umask=077
462
 
-desktop_dir="$HOME/Desktop"
463
 
+if xdg-user-dir 2>/dev/null 1>&2; then
464
 
+  desktop_dir=`xdg-user-dir DESKTOP`
465
 
+fi
466
 
 desktop_dir_kde=`kde${KDE_SESSION_VERSION}-config --userpath desktop 2> /dev/null`
467
 
 if gconftool-2 -g /apps/nautilus/preferences/desktop_is_home_dir 2> /dev/null | grep true > /dev/null; then
468
 
     desktop_dir_gnome="$HOME"
469
 
     # Don't create $HOME/Desktop if it doesn't exist
470
 
-    [ -w $desktop_dir ] || desktop_dir=
471
 
+    [ -w "$desktop_dir" ] || desktop_dir=
472
 
 fi
473
 
 if [ -n "$desktop_dir_kde" ]; then
474
 
     if [ ! -d "$desktop_dir_kde" ]; then
475
 
         save_umask=`umask`
476
 
         umask $my_umask
477
 
-        mkdir -p $desktop_dir_kde
478
 
+        mkdir -p "$desktop_dir_kde"
479
 
         umask $save_umask
480
 
     fi
481
 
     # Is the KDE desktop dir != $HOME/Desktop ?
482
 
     if [ x`readlink -f "$desktop_dir"` != x`readlink -f "$desktop_dir_kde"` ]; then
483
 
         # If so, don't create $HOME/Desktop if it doesn't exist
484
 
-        [ -w $desktop_dir ] || desktop_dir=
485
 
+        [ -w "$desktop_dir" ] || desktop_dir=
486
 
     else
487
 
         desktop_dir_kde=
488
 
     fi
489
 
 fi
490
 
-desktop_dir="$desktop_dir $desktop_dir_kde $desktop_dir_gnome"
491
 
 
492
 
 basefile=`basename "$desktop_file"`
493
 
 
494
 
-DEBUG 1 "$action $desktop_file in $desktop_dir"
495
 
+DEBUG 1 "$action $desktop_file in $desktop_dir $desktop_dir_kde $desktop_dir_gnome"
496
 
 
497
 
 case $action in
498
 
     install)
499
 
         save_umask=`umask`
500
 
         umask $my_umask
501
 
 
502
 
-        for x in $desktop_dir ; do
503
 
-            mkdir -p $x
504
 
-            eval 'cp $desktop_file $x/$basefile'$xdg_redirect_output
505
 
+        for x in "$desktop_dir" "$desktop_dir_kde" "$desktop_dir_gnome" ; do
506
 
+            if [ -n "$x" ]; then
507
 
+                mkdir -p "$x"
508
 
+                eval 'cp "$desktop_file" "$x/$basefile"'$xdg_redirect_output
509
 
+            fi
510
 
         done
511
 
 
512
 
         umask $save_umask
513
 
         ;;
514
 
 
515
 
     uninstall)
516
 
-        for x in $desktop_dir ; do
517
 
-            rm -f $x/$basefile
518
 
+        for x in "$desktop_dir" "$desktop_dir_kde" "$desktop_dir_gnome" ; do
519
 
+            if [ -n "$x" ]; then
520
 
+                rm -f "$x/$basefile"
521
 
+            fi
522
 
         done
523
 
-
524
 
         ;;
525
 
 esac
526
 
 
527
 
 exit_success
528
 
 
529
 
 
530
 
Index: src/third_party/xdg-utils/scripts/xdg-desktop-icon.in
531
 
===================================================================
532
 
--- src.orig/third_party/xdg-utils/scripts/xdg-desktop-icon.in
533
 
+++ src/third_party/xdg-utils/scripts/xdg-desktop-icon.in
534
 
@@ -22,17 +22,17 @@
535
 
 manualpage()
536
 
 {
537
 
 cat << _MANUALPAGE
538
 
 _MANUALPAGE
539
 
 }
540
 
 
541
 
 #@xdg-utils-common@
542
 
 
543
 
-[ x"$1" != x"" ] || exit_failure_syntax 
544
 
+[ x"$1" != x"" ] || exit_failure_syntax
545
 
 
546
 
 action=
547
 
 desktop_file=
548
 
 
549
 
 case $1 in
550
 
   install)
551
 
     action=install
552
 
     ;;
553
 
@@ -79,73 +79,79 @@
554
 
     exit_failure_syntax "command argument missing"
555
 
 fi
556
 
 
557
 
 if [ -z "$desktop_file" ] ; then
558
 
     exit_failure_syntax "FILE argument missing"
559
 
 fi
560
 
 
561
 
 filetype=
562
 
-case $desktop_file in
563
 
+case "$desktop_file" in
564
 
   *.desktop)
565
 
      filetype=desktop
566
 
      if [ "$vendor" = "true" -a "$action" = "install" ] ; then
567
 
         check_vendor_prefix "$desktop_file"
568
 
      fi
569
 
      ;;
570
 
   *)
571
 
      filetype=other
572
 
      ;;
573
 
 esac
574
 
 
575
 
 my_umask=077
576
 
 desktop_dir="$HOME/Desktop"
577
 
+if xdg-user-dir 2>/dev/null 1>&2; then
578
 
+  desktop_dir=`xdg-user-dir DESKTOP`
579
 
+fi
580
 
 desktop_dir_kde=`kde${KDE_SESSION_VERSION}-config --userpath desktop 2> /dev/null`
581
 
 if gconftool-2 -g /apps/nautilus/preferences/desktop_is_home_dir 2> /dev/null | grep true > /dev/null; then
582
 
     desktop_dir_gnome="$HOME"
583
 
     # Don't create $HOME/Desktop if it doesn't exist
584
 
-    [ -w $desktop_dir ] || desktop_dir=
585
 
+    [ -w "$desktop_dir" ] || desktop_dir=
586
 
 fi
587
 
 if [ -n "$desktop_dir_kde" ]; then
588
 
     if [ ! -d "$desktop_dir_kde" ]; then
589
 
         save_umask=`umask`
590
 
         umask $my_umask
591
 
-        mkdir -p $desktop_dir_kde
592
 
+        mkdir -p "$desktop_dir_kde"
593
 
         umask $save_umask
594
 
     fi
595
 
     # Is the KDE desktop dir != $HOME/Desktop ?
596
 
     if [ x`readlink -f "$desktop_dir"` != x`readlink -f "$desktop_dir_kde"` ]; then
597
 
         # If so, don't create $HOME/Desktop if it doesn't exist
598
 
-        [ -w $desktop_dir ] || desktop_dir=
599
 
+        [ -w "$desktop_dir" ] || desktop_dir=
600
 
     else
601
 
         desktop_dir_kde=
602
 
     fi
603
 
 fi
604
 
-desktop_dir="$desktop_dir $desktop_dir_kde $desktop_dir_gnome"
605
 
 
606
 
 basefile=`basename "$desktop_file"`
607
 
 
608
 
-DEBUG 1 "$action $desktop_file in $desktop_dir"
609
 
+DEBUG 1 "$action $desktop_file in $desktop_dir $desktop_dir_kde $desktop_dir_gnome"
610
 
 
611
 
 case $action in
612
 
     install)
613
 
         save_umask=`umask`
614
 
         umask $my_umask
615
 
 
616
 
-        for x in $desktop_dir ; do
617
 
-            mkdir -p $x
618
 
-            eval 'cp $desktop_file $x/$basefile'$xdg_redirect_output
619
 
+        for x in "$desktop_dir" "$desktop_dir_kde" "$desktop_dir_gnome" ; do
620
 
+            if [ -n "$x" ]; then
621
 
+                mkdir -p "$x"
622
 
+                eval 'cp "$desktop_file" "$x/$basefile"'$xdg_redirect_output
623
 
+            fi
624
 
         done
625
 
 
626
 
         umask $save_umask
627
 
         ;;
628
 
 
629
 
     uninstall)
630
 
-        for x in $desktop_dir ; do
631
 
-            rm -f $x/$basefile
632
 
+        for x in "$desktop_dir" "$desktop_dir_kde" "$desktop_dir_gnome" ; do
633
 
+            if [ -n "$x" ]; then
634
 
+                rm -f "$x/$basefile"
635
 
+            fi
636
 
         done
637
 
 
638
 
         ;;
639
 
 esac
640
 
 
641
 
 exit_success
642
 
 
643
 
 
644
 
Index: src/third_party/xdg-utils/scripts/xdg-desktop-menu
645
 
===================================================================
646
 
--- src.orig/third_party/xdg-utils/scripts/xdg-desktop-menu
647
 
+++ src/third_party/xdg-utils/scripts/xdg-desktop-menu
648
 
@@ -492,17 +492,17 @@
649
 
     if [ $# -gt 0 ]; then
650
 
         echo "xdg-desktop-menu: $@" >&2
651
 
     fi
652
 
 
653
 
     exit 5
654
 
 }
655
 
 
656
 
 #------------------------------------------------------------
657
 
-# Exit script on insufficient permission to read a specified file
658
 
+# Exit script on insufficient permission to write a specified file
659
 
 
660
 
 exit_failure_file_permission_write()
661
 
 {
662
 
     if [ $# -gt 0 ]; then
663
 
         echo "xdg-desktop-menu: $@" >&2
664
 
     fi
665
 
 
666
 
     exit 6
667
 
@@ -569,17 +569,17 @@
668
 
             ;;
669
 
 
670
 
             --manual)
671
 
             manualpage
672
 
             exit_success
673
 
             ;;
674
 
 
675
 
             --version)
676
 
-            echo "xdg-desktop-menu 1.0.1"
677
 
+            echo "xdg-desktop-menu 1.0.2"
678
 
             exit_success
679
 
             ;;
680
 
         esac
681
 
     done
682
 
 }
683
 
 
684
 
 check_common_commands "$@"
685
 
 
686
 
@@ -595,17 +595,18 @@
687
 
 #--------------------------------------
688
 
 # Checks for known desktop environments
689
 
 # set variable DE to the desktop environments name, lowercase
690
 
 
691
 
 detectDE()
692
 
 {
693
 
     if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
694
 
     elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
695
 
-    elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
696
 
+    elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
697
 
+    elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
698
 
     fi
699
 
 }
700
 
 
701
 
 #----------------------------------------------------------------------------
702
 
 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4
703
 
 # It also always returns 1 in KDE 3.4 and earlier
704
 
 # Simply return 0 in such case
705
 
 
706
 
@@ -630,75 +631,39 @@
707
 
               DEBUG 1 "Running $x/update-desktop-database"
708
 
               eval '$x/update-desktop-database'$xdg_redirect_output
709
 
               return
710
 
            fi
711
 
         done
712
 
     fi
713
 
 }
714
 
 
715
 
-fixup_mandriva_categories()
716
 
-{
717
 
-    DEBUG 1 "fixup_mandriva_categories $1"
718
 
-    awk '
719
 
-BEGIN {
720
 
-    xlat["AudioVideo"]="X-Mandrakelinux-Multimedia;X-MandrivaLinux-Multimedia"
721
 
-    xlat["Development"]="X-Mandrakelinux-MoreApplications-Development;X-MandrivaLinux-MoreApplications-Development"
722
 
-    xlat["Education"]="X-Mandrakelinux-MoreApplications;X-MandrivaLinux-MoreApplications-Education"
723
 
-    xlat["Game"]="X-Mandrakelinux-MoreApplications;X-MandrivaLinux-MoreApplications-Games"
724
 
-    xlat["Graphics"]="X-Mandrakelinux-Multimedia-Graphics"
725
 
-    xlat["Network"]="X-Mandrakelinux-Internet;X-MandrivaLinux-Internet"
726
 
-    xlat["Office"]="X-Mandrakelinux-Office;X-MandrivaLinux-Office"
727
 
-    xlat["System"]="X-Mandrakelinux-System;X-MandrivaLinux-System"
728
 
-    xlat["Utility"]="X-Mandrakelinux-Office-Accessories;X-MandrivaLinux-Office-Accessories"
729
 
-}
730
 
-{
731
 
-    if (match($0,/Categories=/)) {
732
 
-        split(substr($0,RSTART+11),categories,";")
733
 
-        result=""
734
 
-        for (n in categories)
735
 
-        {
736
 
-               if (categories[n] in xlat)
737
 
-                 categories[n]=categories[n] ";" xlat[categories[n]]
738
 
-               if (categories[n])
739
 
-                 result=result categories[n] ";"
740
 
-        }
741
 
-        print "Categories=" result
742
 
-    }
743
 
-    else
744
 
-    {
745
 
-        print $0
746
 
-    }
747
 
-}' $1 > $1.new
748
 
-    mv $1.new $1
749
 
-}
750
 
-
751
 
 # Make application $1/$2 the default for all the mimetypes it support,
752
 
 # iff such mimetype didn't had a default application already.
753
 
 # $1 Install dir for desktop file
754
 
 # $2 base name of desktop file
755
 
 make_lazy_default()
756
 
 {
757
 
     local mimetypes
758
 
     local xdg_user_dir
759
 
     local xdg_default_dirs
760
 
-    
761
 
+
762
 
     DEBUG 1 "make_lazy_default $1/$2"
763
 
     mimetypes=`awk '
764
 
 {
765
 
     if (match($0,/MimeType=/)) {
766
 
         split(substr($0,RSTART+9),mimetypes,";")
767
 
         for (n in mimetypes)
768
 
         {
769
 
                if (mimetypes[n])
770
 
                  print mimetypes[n]
771
 
         }
772
 
     }
773
 
 }' "$1/$2" 2> /dev/null`
774
 
-    
775
 
+
776
 
     for MIME in $mimetypes ; do
777
 
         xdg_default_dirs="$XDG_DATA_DIRS"
778
 
         [ -n "$xdg_default_dirs" ] || xdg_default_dirs=/usr/local/share/:/usr/share/
779
 
         if [ x"$mode" = x"user" ] ; then
780
 
             xdg_user_dir="$XDG_DATA_HOME"
781
 
             [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share"
782
 
             xdg_default_dirs="$xdg_user_dir:$xdg_default_dirs"
783
 
         fi
784
 
@@ -745,17 +710,17 @@
785
 
         if [ -w $x/$xdg_dir_name ] ; then
786
 
             xdg_global_dir="$x/$xdg_dir_name"
787
 
             break
788
 
         fi
789
 
     done
790
 
     xdg_user_dir="$xdg_user_dir/applications-merged"
791
 
     xdg_global_dir="$xdg_global_dir/applications-merged"
792
 
 
793
 
-    DEBUG 3 "Install locations for *.menu file:" 
794
 
+    DEBUG 3 "Install locations for *.menu file:"
795
 
     DEBUG 3 "xdg_user_dir: $xdg_user_dir"
796
 
     DEBUG 3 "xdg_global_dir: $xdg_global_dir"
797
 
     DEBUG 3 "kde_user_dir: $kde_user_dir"
798
 
     DEBUG 3 "kde_global_dir: $kde_global_dir"
799
 
     DEBUG 3 "gnome_user_dir: $gnome_user_dir"
800
 
     DEBUG 3 "gnome_global_dir: $gnome_global_dir"
801
 
 
802
 
     if [ x"$mode" = x"user" ] ; then
803
 
@@ -808,17 +773,17 @@
804
 
     if [ $action = "install" -a x"$mode" = x"user" -a -d "/etc/xdg/menus/kde-applications-merged" ] ; then
805
 
         # Work around for Fedora Core 5 + patched KDE
806
 
         kde_xdg_dir=`echo "$xdg_dir" | sed -e 's^/applications-merged^/kde-applications-merged^'`
807
 
         if [ ! -e "$kde_xdg_dir" ] ; then
808
 
             DEBUG 1 "Fedora Workaround: Link '$xdg_dir' to '$kde_xdg_dir'"
809
 
             mkdir -p `dirname "$kde_xdg_dir"`
810
 
             eval 'ln -s "applications-merged" "$kde_xdg_dir"'$xdg_redirect_output
811
 
         fi
812
 
-    fi        
813
 
+    fi
814
 
     if [ $action = "install" -a x"$mode" = x"system" -a -d "/etc/xdg/menus/kde-applications-merged" -a ! -d "/etc/xdg/menus/applications-merged" ] ; then
815
 
         # Work around for Kubuntu 6.06
816
 
         kde_xdg_dir=`echo "$xdg_dir" | sed -e 's^/applications-merged^/kde-applications-merged^'`
817
 
         DEBUG 1 "Kubuntu Workaround: Link '$xdg_dir' to 'kde-applications-merged'"
818
 
         eval 'ln -s "kde-applications-merged" "$xdg_dir"'$xdg_redirect_output
819
 
     fi
820
 
 
821
 
     orig_menu_file=$xdg_dir/$menu_file
822
 
@@ -863,19 +828,19 @@
823
 
         for desktop_file in $orig_desktop_files; do
824
 
             if ! grep '^'$desktop_file'$' $tmpfile > /dev/null 2> /dev/null; then
825
 
                # Keep this file, it's not in the uninstall list
826
 
                new_desktop_files="$new_desktop_files $desktop_file"
827
 
             fi
828
 
         done
829
 
     fi
830
 
     rm -f "$tmpfile"
831
 
-    
832
 
+
833
 
     DEBUG 3 "Files to list in $menu_file: $new_desktop_files"
834
 
-    
835
 
+
836
 
     if [ -n "$new_desktop_files" ] ; then
837
 
         # Install/update
838
 
         test "${TMPDIR+set}" = set || TMPDIR=/tmp
839
 
         tmpfile=`mktemp $TMPDIR/tmp.XXXXXXXXXX`
840
 
         (
841
 
             echo '<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"'
842
 
             echo '    "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">'
843
 
             echo '<!-- Do not edit manually - generated and managed by xdg-desktop-menu -->'
844
 
@@ -895,33 +860,33 @@
845
 
                 echo "        <Filename>$desktop_file</Filename>"
846
 
             done
847
 
             echo "    </Include>"
848
 
 
849
 
             for desktop_file in $directory_files; do
850
 
                 echo "</Menu>"
851
 
             done
852
 
 
853
 
-            echo '</Menu>'                        
854
 
+            echo '</Menu>'
855
 
         ) > $tmpfile
856
 
         chmod $my_chmod $tmpfile
857
 
-    
858
 
+
859
 
         save_umask=`umask`
860
 
         umask $my_umask
861
 
 
862
 
         mkdir -p $xdg_dir
863
 
         eval 'cp $tmpfile $xdg_dir/$menu_file'$xdg_redirect_output
864
 
 
865
 
         umask $save_umask
866
 
        rm -f "$tmpfile"
867
 
     else
868
 
         # Uninstall
869
 
         rm -f $xdg_dir/$menu_file
870
 
     fi
871
 
-    
872
 
+
873
 
     # Uninstall .directory files only if no longer referenced
874
 
     if [ $action = "uninstall" ] ; then
875
 
         test "${TMPDIR+set}" = set || TMPDIR=/tmp
876
 
         tmpfile=`mktemp $TMPDIR/tmp.XXXXXXXXXX`
877
 
         for menu_file in $xdg_dir/*; do
878
 
             if grep 'generated and managed by xdg-desktop-menu' $menu_file > /dev/null 2> /dev/null; then
879
 
                 awk '
880
 
 # List all files within <Directory> tags
881
 
@@ -929,17 +894,17 @@
882
 
   RS="<"
883
 
 }
884
 
 /^Directory/ {
885
 
   if (match($0,/>/)) {
886
 
      print substr($0,RSTART+1)
887
 
   }
888
 
 }' $menu_file >> $tmpfile
889
 
             fi
890
 
-        done 
891
 
+        done
892
 
         orig_directory_files="$directory_files"
893
 
         directory_files=
894
 
         for desktop_file in $orig_directory_files; do
895
 
             if ! grep '^'$desktop_file'$' $tmpfile > /dev/null 2> /dev/null; then
896
 
                 # No longer in use, safe to delete
897
 
                directory_files="$directory_files $desktop_file"
898
 
             fi
899
 
         done
900
 
@@ -993,17 +958,17 @@
901
 
         case "$1" in
902
 
           user)
903
 
             mode="user"
904
 
             ;;
905
 
 
906
 
           system)
907
 
             mode="system"
908
 
             ;;
909
 
-            
910
 
+
911
 
           *)
912
 
             exit_failure_syntax "unknown mode '$1'"
913
 
             ;;
914
 
         esac
915
 
         shift
916
 
         ;;
917
 
 
918
 
       --novendor)
919
 
@@ -1106,17 +1071,17 @@
920
 
 xdg_global_dir=
921
 
 for x in `echo $xdg_system_dirs | sed 's/:/ /g'` ; do
922
 
     if [ -w $x/$xdg_dir_name ] ; then
923
 
         xdg_global_dir="$x/$xdg_dir_name"
924
 
         break
925
 
     fi
926
 
 done
927
 
 
928
 
-DEBUG 3 "Install locations for *.directory files:" 
929
 
+DEBUG 3 "Install locations for *.directory files:"
930
 
 DEBUG 3 "xdg_user_dir: $xdg_user_dir"
931
 
 DEBUG 3 "xdg_global_dir: $xdg_global_dir"
932
 
 DEBUG 3 "kde_user_dir: $kde_user_dir"
933
 
 DEBUG 3 "kde_global_dir: $kde_global_dir"
934
 
 DEBUG 3 "gnome_user_dir: $gnome_user_dir"
935
 
 DEBUG 3 "gnome_global_dir: $gnome_global_dir"
936
 
 
937
 
 if [ x"$mode" = x"user" ] ; then
938
 
@@ -1173,28 +1138,25 @@
939
 
 xdg_global_dir=
940
 
 for x in `echo $xdg_system_dirs | sed 's/:/ /g'` ; do
941
 
     if [ -w $x/$xdg_dir_name ] ; then
942
 
         xdg_global_dir="$x/$xdg_dir_name"
943
 
         break
944
 
     fi
945
 
 done
946
 
 
947
 
-kde_user_dir="$HOME/.kde/share/applnk"
948
 
-kde_global_dir="/usr/share/applnk"
949
 
+kde_user_dir=`kde${KDE_SESSION_VERSION}-config --path apps 2> /dev/null | cut -d ':' -f 1`
950
 
+kde_global_dir=`kde${KDE_SESSION_VERSION}-config --path apps 2> /dev/null | cut -d ':' -f 2`
951
 
 [ -w $kde_global_dir ] || kde_global_dir=
952
 
 
953
 
 gnome_user_dir="$HOME/.gnome/apps"
954
 
 gnome_global_dir="/usr/share/gnome/apps"
955
 
 [ -w $gnome_global_dir ] || gnome_global_dir=
956
 
 
957
 
-[ -f /etc/mandriva-release ] && need_mandriva_fix=true
958
 
-[ -n "$need_mandriva_fix" ] && DEBUG 1 "Fixing up .desktop categories (Mandriva work around)"
959
 
-
960
 
-DEBUG 3 "Install locations for *.desktop files:" 
961
 
+DEBUG 3 "Install locations for *.desktop files:"
962
 
 DEBUG 3 "xdg_user_dir: $xdg_user_dir"
963
 
 DEBUG 3 "xdg_global_dir: $xdg_global_dir"
964
 
 DEBUG 3 "kde_user_dir: $kde_user_dir"
965
 
 DEBUG 3 "kde_global_dir: $kde_global_dir"
966
 
 DEBUG 3 "gnome_user_dir: $gnome_user_dir"
967
 
 DEBUG 3 "gnome_global_dir: $gnome_global_dir"
968
 
 
969
 
 if [ x"$mode" = x"user" ] ; then
970
 
@@ -1226,28 +1188,24 @@
971
 
             save_umask=`umask`
972
 
             umask $my_umask
973
 
 
974
 
             for x in $xdg_dir $kde_dir $gnome_dir ; do
975
 
                 mkdir -p $x
976
 
                 eval 'cp $desktop_file $x/$basefile'$xdg_redirect_output
977
 
             done
978
 
 
979
 
-            if [ -n "$need_mandriva_fix" ] ; then
980
 
-               fixup_mandriva_categories $xdg_dir/$basefile
981
 
-            fi
982
 
-
983
 
             if [ -f $kde_dir/$basefile ] ; then
984
 
                 echo "OnlyShowIn=Old;" >> $kde_dir/$basefile
985
 
             fi
986
 
 
987
 
             if [ -f $gnome_dir/$basefile ] ; then
988
 
                 echo "OnlyShowIn=Old;" >> $gnome_dir/$basefile
989
 
             fi
990
 
-            
991
 
+
992
 
             make_lazy_default "$xdg_dir" "$basefile"
993
 
 
994
 
             umask $save_umask
995
 
             ;;
996
 
 
997
 
         uninstall)
998
 
             for x in $xdg_dir $kde_dir $gnome_dir ; do
999
 
                 rm -f $x/$basefile
1000
 
Index: src/third_party/xdg-utils/scripts/xdg-desktop-menu.in
1001
 
===================================================================
1002
 
--- src.orig/third_party/xdg-utils/scripts/xdg-desktop-menu.in
1003
 
+++ src/third_party/xdg-utils/scripts/xdg-desktop-menu.in
1004
 
@@ -35,75 +35,39 @@
1005
 
               DEBUG 1 "Running $x/update-desktop-database"
1006
 
               eval '$x/update-desktop-database'$xdg_redirect_output
1007
 
               return
1008
 
            fi
1009
 
         done
1010
 
     fi
1011
 
 }
1012
 
 
1013
 
-fixup_mandriva_categories()
1014
 
-{
1015
 
-    DEBUG 1 "fixup_mandriva_categories $1"
1016
 
-    awk '
1017
 
-BEGIN {
1018
 
-    xlat["AudioVideo"]="X-Mandrakelinux-Multimedia;X-MandrivaLinux-Multimedia"
1019
 
-    xlat["Development"]="X-Mandrakelinux-MoreApplications-Development;X-MandrivaLinux-MoreApplications-Development"
1020
 
-    xlat["Education"]="X-Mandrakelinux-MoreApplications;X-MandrivaLinux-MoreApplications-Education"
1021
 
-    xlat["Game"]="X-Mandrakelinux-MoreApplications;X-MandrivaLinux-MoreApplications-Games"
1022
 
-    xlat["Graphics"]="X-Mandrakelinux-Multimedia-Graphics"
1023
 
-    xlat["Network"]="X-Mandrakelinux-Internet;X-MandrivaLinux-Internet"
1024
 
-    xlat["Office"]="X-Mandrakelinux-Office;X-MandrivaLinux-Office"
1025
 
-    xlat["System"]="X-Mandrakelinux-System;X-MandrivaLinux-System"
1026
 
-    xlat["Utility"]="X-Mandrakelinux-Office-Accessories;X-MandrivaLinux-Office-Accessories"
1027
 
-}
1028
 
-{
1029
 
-    if (match($0,/Categories=/)) {
1030
 
-        split(substr($0,RSTART+11),categories,";")
1031
 
-        result=""
1032
 
-        for (n in categories)
1033
 
-        {
1034
 
-               if (categories[n] in xlat)
1035
 
-                 categories[n]=categories[n] ";" xlat[categories[n]]
1036
 
-               if (categories[n])
1037
 
-                 result=result categories[n] ";"
1038
 
-        }
1039
 
-        print "Categories=" result
1040
 
-    }
1041
 
-    else
1042
 
-    {
1043
 
-        print $0
1044
 
-    }
1045
 
-}' $1 > $1.new
1046
 
-    mv $1.new $1
1047
 
-}
1048
 
-
1049
 
 # Make application $1/$2 the default for all the mimetypes it support,
1050
 
 # iff such mimetype didn't had a default application already.
1051
 
 # $1 Install dir for desktop file
1052
 
 # $2 base name of desktop file
1053
 
 make_lazy_default()
1054
 
 {
1055
 
     local mimetypes
1056
 
     local xdg_user_dir
1057
 
     local xdg_default_dirs
1058
 
-    
1059
 
+
1060
 
     DEBUG 1 "make_lazy_default $1/$2"
1061
 
     mimetypes=`awk '
1062
 
 {
1063
 
     if (match($0,/MimeType=/)) {
1064
 
         split(substr($0,RSTART+9),mimetypes,";")
1065
 
         for (n in mimetypes)
1066
 
         {
1067
 
                if (mimetypes[n])
1068
 
                  print mimetypes[n]
1069
 
         }
1070
 
     }
1071
 
 }' "$1/$2" 2> /dev/null`
1072
 
-    
1073
 
+
1074
 
     for MIME in $mimetypes ; do
1075
 
         xdg_default_dirs="$XDG_DATA_DIRS"
1076
 
         [ -n "$xdg_default_dirs" ] || xdg_default_dirs=/usr/local/share/:/usr/share/
1077
 
         if [ x"$mode" = x"user" ] ; then
1078
 
             xdg_user_dir="$XDG_DATA_HOME"
1079
 
             [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share"
1080
 
             xdg_default_dirs="$xdg_user_dir:$xdg_default_dirs"
1081
 
         fi
1082
 
@@ -150,17 +114,17 @@
1083
 
         if [ -w $x/$xdg_dir_name ] ; then
1084
 
             xdg_global_dir="$x/$xdg_dir_name"
1085
 
             break
1086
 
         fi
1087
 
     done
1088
 
     xdg_user_dir="$xdg_user_dir/applications-merged"
1089
 
     xdg_global_dir="$xdg_global_dir/applications-merged"
1090
 
 
1091
 
-    DEBUG 3 "Install locations for *.menu file:" 
1092
 
+    DEBUG 3 "Install locations for *.menu file:"
1093
 
     DEBUG 3 "xdg_user_dir: $xdg_user_dir"
1094
 
     DEBUG 3 "xdg_global_dir: $xdg_global_dir"
1095
 
     DEBUG 3 "kde_user_dir: $kde_user_dir"
1096
 
     DEBUG 3 "kde_global_dir: $kde_global_dir"
1097
 
     DEBUG 3 "gnome_user_dir: $gnome_user_dir"
1098
 
     DEBUG 3 "gnome_global_dir: $gnome_global_dir"
1099
 
 
1100
 
     if [ x"$mode" = x"user" ] ; then
1101
 
@@ -213,17 +177,17 @@
1102
 
     if [ $action = "install" -a x"$mode" = x"user" -a -d "/etc/xdg/menus/kde-applications-merged" ] ; then
1103
 
         # Work around for Fedora Core 5 + patched KDE
1104
 
         kde_xdg_dir=`echo "$xdg_dir" | sed -e 's^/applications-merged^/kde-applications-merged^'`
1105
 
         if [ ! -e "$kde_xdg_dir" ] ; then
1106
 
             DEBUG 1 "Fedora Workaround: Link '$xdg_dir' to '$kde_xdg_dir'"
1107
 
             mkdir -p `dirname "$kde_xdg_dir"`
1108
 
             eval 'ln -s "applications-merged" "$kde_xdg_dir"'$xdg_redirect_output
1109
 
         fi
1110
 
-    fi        
1111
 
+    fi
1112
 
     if [ $action = "install" -a x"$mode" = x"system" -a -d "/etc/xdg/menus/kde-applications-merged" -a ! -d "/etc/xdg/menus/applications-merged" ] ; then
1113
 
         # Work around for Kubuntu 6.06
1114
 
         kde_xdg_dir=`echo "$xdg_dir" | sed -e 's^/applications-merged^/kde-applications-merged^'`
1115
 
         DEBUG 1 "Kubuntu Workaround: Link '$xdg_dir' to 'kde-applications-merged'"
1116
 
         eval 'ln -s "kde-applications-merged" "$xdg_dir"'$xdg_redirect_output
1117
 
     fi
1118
 
 
1119
 
     orig_menu_file=$xdg_dir/$menu_file
1120
 
@@ -268,19 +232,19 @@
1121
 
         for desktop_file in $orig_desktop_files; do
1122
 
             if ! grep '^'$desktop_file'$' $tmpfile > /dev/null 2> /dev/null; then
1123
 
                # Keep this file, it's not in the uninstall list
1124
 
                new_desktop_files="$new_desktop_files $desktop_file"
1125
 
             fi
1126
 
         done
1127
 
     fi
1128
 
     rm -f "$tmpfile"
1129
 
-    
1130
 
+
1131
 
     DEBUG 3 "Files to list in $menu_file: $new_desktop_files"
1132
 
-    
1133
 
+
1134
 
     if [ -n "$new_desktop_files" ] ; then
1135
 
         # Install/update
1136
 
         test "${TMPDIR+set}" = set || TMPDIR=/tmp
1137
 
         tmpfile=`mktemp $TMPDIR/tmp.XXXXXXXXXX`
1138
 
         (
1139
 
             echo '<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"'
1140
 
             echo '    "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">'
1141
 
             echo '<!-- Do not edit manually - generated and managed by @NAME@ -->'
1142
 
@@ -300,33 +264,33 @@
1143
 
                 echo "        <Filename>$desktop_file</Filename>"
1144
 
             done
1145
 
             echo "    </Include>"
1146
 
 
1147
 
             for desktop_file in $directory_files; do
1148
 
                 echo "</Menu>"
1149
 
             done
1150
 
 
1151
 
-            echo '</Menu>'                        
1152
 
+            echo '</Menu>'
1153
 
         ) > $tmpfile
1154
 
         chmod $my_chmod $tmpfile
1155
 
-    
1156
 
+
1157
 
         save_umask=`umask`
1158
 
         umask $my_umask
1159
 
 
1160
 
         mkdir -p $xdg_dir
1161
 
         eval 'cp $tmpfile $xdg_dir/$menu_file'$xdg_redirect_output
1162
 
 
1163
 
         umask $save_umask
1164
 
        rm -f "$tmpfile"
1165
 
     else
1166
 
         # Uninstall
1167
 
         rm -f $xdg_dir/$menu_file
1168
 
     fi
1169
 
-    
1170
 
+
1171
 
     # Uninstall .directory files only if no longer referenced
1172
 
     if [ $action = "uninstall" ] ; then
1173
 
         test "${TMPDIR+set}" = set || TMPDIR=/tmp
1174
 
         tmpfile=`mktemp $TMPDIR/tmp.XXXXXXXXXX`
1175
 
         for menu_file in $xdg_dir/*; do
1176
 
             if grep 'generated and managed by @NAME@' $menu_file > /dev/null 2> /dev/null; then
1177
 
                 awk '
1178
 
 # List all files within <Directory> tags
1179
 
@@ -334,17 +298,17 @@
1180
 
   RS="<"
1181
 
 }
1182
 
 /^Directory/ {
1183
 
   if (match($0,/>/)) {
1184
 
      print substr($0,RSTART+1)
1185
 
   }
1186
 
 }' $menu_file >> $tmpfile
1187
 
             fi
1188
 
-        done 
1189
 
+        done
1190
 
         orig_directory_files="$directory_files"
1191
 
         directory_files=
1192
 
         for desktop_file in $orig_directory_files; do
1193
 
             if ! grep '^'$desktop_file'$' $tmpfile > /dev/null 2> /dev/null; then
1194
 
                 # No longer in use, safe to delete
1195
 
                directory_files="$directory_files $desktop_file"
1196
 
             fi
1197
 
         done
1198
 
@@ -398,17 +362,17 @@
1199
 
         case "$1" in
1200
 
           user)
1201
 
             mode="user"
1202
 
             ;;
1203
 
 
1204
 
           system)
1205
 
             mode="system"
1206
 
             ;;
1207
 
-            
1208
 
+
1209
 
           *)
1210
 
             exit_failure_syntax "unknown mode '$1'"
1211
 
             ;;
1212
 
         esac
1213
 
         shift
1214
 
         ;;
1215
 
 
1216
 
       --novendor)
1217
 
@@ -511,17 +475,17 @@
1218
 
 xdg_global_dir=
1219
 
 for x in `echo $xdg_system_dirs | sed 's/:/ /g'` ; do
1220
 
     if [ -w $x/$xdg_dir_name ] ; then
1221
 
         xdg_global_dir="$x/$xdg_dir_name"
1222
 
         break
1223
 
     fi
1224
 
 done
1225
 
 
1226
 
-DEBUG 3 "Install locations for *.directory files:" 
1227
 
+DEBUG 3 "Install locations for *.directory files:"
1228
 
 DEBUG 3 "xdg_user_dir: $xdg_user_dir"
1229
 
 DEBUG 3 "xdg_global_dir: $xdg_global_dir"
1230
 
 DEBUG 3 "kde_user_dir: $kde_user_dir"
1231
 
 DEBUG 3 "kde_global_dir: $kde_global_dir"
1232
 
 DEBUG 3 "gnome_user_dir: $gnome_user_dir"
1233
 
 DEBUG 3 "gnome_global_dir: $gnome_global_dir"
1234
 
 
1235
 
 if [ x"$mode" = x"user" ] ; then
1236
 
@@ -578,28 +542,25 @@
1237
 
 xdg_global_dir=
1238
 
 for x in `echo $xdg_system_dirs | sed 's/:/ /g'` ; do
1239
 
     if [ -w $x/$xdg_dir_name ] ; then
1240
 
         xdg_global_dir="$x/$xdg_dir_name"
1241
 
         break
1242
 
     fi
1243
 
 done
1244
 
 
1245
 
-kde_user_dir="$HOME/.kde/share/applnk"
1246
 
-kde_global_dir="/usr/share/applnk"
1247
 
+kde_user_dir=`kde${KDE_SESSION_VERSION}-config --path apps 2> /dev/null | cut -d ':' -f 1`
1248
 
+kde_global_dir=`kde${KDE_SESSION_VERSION}-config --path apps 2> /dev/null | cut -d ':' -f 2`
1249
 
 [ -w $kde_global_dir ] || kde_global_dir=
1250
 
 
1251
 
 gnome_user_dir="$HOME/.gnome/apps"
1252
 
 gnome_global_dir="/usr/share/gnome/apps"
1253
 
 [ -w $gnome_global_dir ] || gnome_global_dir=
1254
 
 
1255
 
-[ -f /etc/mandriva-release ] && need_mandriva_fix=true
1256
 
-[ -n "$need_mandriva_fix" ] && DEBUG 1 "Fixing up .desktop categories (Mandriva work around)"
1257
 
-
1258
 
-DEBUG 3 "Install locations for *.desktop files:" 
1259
 
+DEBUG 3 "Install locations for *.desktop files:"
1260
 
 DEBUG 3 "xdg_user_dir: $xdg_user_dir"
1261
 
 DEBUG 3 "xdg_global_dir: $xdg_global_dir"
1262
 
 DEBUG 3 "kde_user_dir: $kde_user_dir"
1263
 
 DEBUG 3 "kde_global_dir: $kde_global_dir"
1264
 
 DEBUG 3 "gnome_user_dir: $gnome_user_dir"
1265
 
 DEBUG 3 "gnome_global_dir: $gnome_global_dir"
1266
 
 
1267
 
 if [ x"$mode" = x"user" ] ; then
1268
 
@@ -631,28 +592,24 @@
1269
 
             save_umask=`umask`
1270
 
             umask $my_umask
1271
 
 
1272
 
             for x in $xdg_dir $kde_dir $gnome_dir ; do
1273
 
                 mkdir -p $x
1274
 
                 eval 'cp $desktop_file $x/$basefile'$xdg_redirect_output
1275
 
             done
1276
 
 
1277
 
-            if [ -n "$need_mandriva_fix" ] ; then
1278
 
-               fixup_mandriva_categories $xdg_dir/$basefile
1279
 
-            fi
1280
 
-
1281
 
             if [ -f $kde_dir/$basefile ] ; then
1282
 
                 echo "OnlyShowIn=Old;" >> $kde_dir/$basefile
1283
 
             fi
1284
 
 
1285
 
             if [ -f $gnome_dir/$basefile ] ; then
1286
 
                 echo "OnlyShowIn=Old;" >> $gnome_dir/$basefile
1287
 
             fi
1288
 
-            
1289
 
+
1290
 
             make_lazy_default "$xdg_dir" "$basefile"
1291
 
 
1292
 
             umask $save_umask
1293
 
             ;;
1294
 
 
1295
 
         uninstall)
1296
 
             for x in $xdg_dir $kde_dir $gnome_dir ; do
1297
 
                 rm -f $x/$basefile
1298
 
Index: src/third_party/xdg-utils/scripts/xdg-email
1299
 
===================================================================
1300
 
--- src.orig/third_party/xdg-utils/scripts/xdg-email
1301
 
+++ src/third_party/xdg-utils/scripts/xdg-email
1302
 
@@ -1,9 +1,9 @@
1303
 
-#!/bin/bash
1304
 
+#!/bin/sh
1305
 
 #---------------------------------------------
1306
 
 #   xdg-email
1307
 
 #
1308
 
 #   Utility script to open the users favorite email program, using the
1309
 
 #       RFC 2368 mailto: URI spec
1310
 
 #
1311
 
 #   Refer to the usage() function below for usage.
1312
 
 #
1313
 
@@ -248,17 +248,17 @@
1314
 
     if [ $# -gt 0 ]; then
1315
 
         echo "xdg-email: $@" >&2
1316
 
     fi
1317
 
 
1318
 
     exit 5
1319
 
 }
1320
 
 
1321
 
 #------------------------------------------------------------
1322
 
-# Exit script on insufficient permission to read a specified file
1323
 
+# Exit script on insufficient permission to write a specified file
1324
 
 
1325
 
 exit_failure_file_permission_write()
1326
 
 {
1327
 
     if [ $# -gt 0 ]; then
1328
 
         echo "xdg-email: $@" >&2
1329
 
     fi
1330
 
 
1331
 
     exit 6
1332
 
@@ -325,17 +325,17 @@
1333
 
             ;;
1334
 
 
1335
 
             --manual)
1336
 
             manualpage
1337
 
             exit_success
1338
 
             ;;
1339
 
 
1340
 
             --version)
1341
 
-            echo "xdg-email 1.0.1"
1342
 
+            echo "xdg-email 1.0.2"
1343
 
             exit_success
1344
 
             ;;
1345
 
         esac
1346
 
     done
1347
 
 }
1348
 
 
1349
 
 check_common_commands "$@"
1350
 
 
1351
 
@@ -351,17 +351,18 @@
1352
 
 #--------------------------------------
1353
 
 # Checks for known desktop environments
1354
 
 # set variable DE to the desktop environments name, lowercase
1355
 
 
1356
 
 detectDE()
1357
 
 {
1358
 
     if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
1359
 
     elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
1360
 
-    elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
1361
 
+    elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
1362
 
+    elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
1363
 
     fi
1364
 
 }
1365
 
 
1366
 
 #----------------------------------------------------------------------------
1367
 
 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4
1368
 
 # It also always returns 1 in KDE 3.4 and earlier
1369
 
 # Simply return 0 in such case
1370
 
 
1371
 
@@ -372,24 +373,81 @@
1372
 
     minor=`echo $version | sed 's/KDE: [0-9]*\.\([0-9]\).*/\1/'`
1373
 
     release=`echo $version | sed 's/KDE: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'`
1374
 
     test "$major" -gt 3 && return $1
1375
 
     test "$minor" -gt 5 && return $1
1376
 
     test "$release" -gt 4 && return $1
1377
 
     return 0
1378
 
 }
1379
 
 
1380
 
+run_thunderbird()
1381
 
+{
1382
 
+    local THUNDERBIRD MAILTO NEWMAILTO TO CC BCC SUBJECT BODY ATTACH
1383
 
+    THUNDERBIRD="$1"
1384
 
+    MAILTO=$(echo "$2" | sed 's/^mailto://')
1385
 
+    echo "$MAILTO" | grep -qs "^?"
1386
 
+    if [ "$?" = "0" ] ; then
1387
 
+        MAILTO=$(echo "$MAILTO" | sed 's/^?//')
1388
 
+    else
1389
 
+        MAILTO=$(echo "$MAILTO" | sed 's/^/to=/' | sed 's/?/\&/')
1390
 
+    fi
1391
 
+
1392
 
+    MAILTO=$(echo "$MAILTO" | sed 's/&/\n/g')
1393
 
+    TO=$(echo "$MAILTO" | grep '^to=' | sed 's/^to=//' | awk '{ printf "%s,",$0 }')
1394
 
+    CC=$(echo "$MAILTO" | grep '^cc=' | sed 's/^cc=//' | awk '{ printf "%s,",$0 }')
1395
 
+    BCC=$(echo "$MAILTO" | grep '^bcc=' | sed 's/^bcc=//' | awk '{ printf "%s,",$0 }')
1396
 
+    SUBJECT=$(echo "$MAILTO" | grep '^subject=' | tail -n 1)
1397
 
+    BODY=$(echo "$MAILTO" | grep '^body=' | tail -n 1)
1398
 
+    ATTACH=$(echo "$MAILTO" | sed 's/^attach=/\n\nfile:\/\//g' | awk '/^file:/ { printf "%s,",$0 }')
1399
 
+
1400
 
+    if [ -z "$TO" ] ; then
1401
 
+        NEWMAILTO=
1402
 
+    else
1403
 
+        NEWMAILTO="to='$TO'"
1404
 
+    fi
1405
 
+    if [ -n "$CC" ] ; then
1406
 
+        NEWMAILTO="${NEWMAILTO},cc='$CC'"
1407
 
+    fi
1408
 
+    if [ -n "$BCC" ] ; then
1409
 
+        NEWMAILTO="${NEWMAILTO},bcc='$BCC'"
1410
 
+    fi
1411
 
+    if [ -n "$SUBJECT" ] ; then
1412
 
+        NEWMAILTO="${NEWMAILTO},$SUBJECT"
1413
 
+    fi
1414
 
+    if [ -n "$BODY" ] ; then
1415
 
+        NEWMAILTO="${NEWMAILTO},$BODY"
1416
 
+    fi
1417
 
+
1418
 
+    if [ -n "$ATTACH" ] ; then
1419
 
+        NEWMAILTO="${NEWMAILTO},attachment='${ATTACH}'"
1420
 
+    fi
1421
 
+
1422
 
+    NEWMAILTO=$(echo "$NEWMAILTO" | sed 's/^,//')
1423
 
+    DEBUG 1 "Running $THUNDERBIRD -compose \"$NEWMAILTO\""
1424
 
+    "$THUNDERBIRD" -compose "$NEWMAILTO"
1425
 
+    if [ $? -eq 0 ]; then
1426
 
+        exit_success
1427
 
+    else
1428
 
+        exit_failure_operation_failed
1429
 
+    fi
1430
 
+}
1431
 
+
1432
 
 open_kde()
1433
 
 {
1434
 
     local client
1435
 
+    client=`kreadconfig --file emaildefaults --group PROFILE_Default --key EmailClient | cut -d ' ' -f 1`
1436
 
+    echo $client | grep thunderbird > /dev/null 2>&1
1437
 
+    if [ $? -eq 0 ] ; then
1438
 
+        run_thunderbird "$client" "$1"
1439
 
+    fi
1440
 
+
1441
 
     if [ -f /etc/SuSE-release ] ; then
1442
 
         # Workaround for SUSE 10.0
1443
 
-        client=`kreadconfig --file emaildefaults --group PROFILE_Default --key EmailClient| cut -d ' ' -f 1`
1444
 
-        [ -z $client ] && client="kmail"
1445
 
-        if ! which $client > /dev/null 2> /dev/null; then
1446
 
+        [ -z "$client" ] && client="kmail"
1447
 
+        if ! which "$client" > /dev/null 2> /dev/null; then
1448
 
             DEBUG 3 "KDE has $client configured as email client which isn't installed"
1449
 
             if which gnome-open > /dev/null 2> /dev/null && which evolution > /dev/null 2> /dev/null; then
1450
 
                DEBUG 3 "Try gnome-open instead"
1451
 
                open_gnome "$1"
1452
 
             fi
1453
 
         fi
1454
 
     fi
1455
 
     DEBUG 1 "Running kmailservice \"$1\""
1456
 
@@ -406,18 +464,30 @@
1457
 
         exit_success
1458
 
     else
1459
 
         exit_failure_operation_failed
1460
 
     fi
1461
 
 }
1462
 
 
1463
 
 open_gnome()
1464
 
 {
1465
 
-    DEBUG 1 "Running gnome-open \"$1\""
1466
 
-    gnome-open "$1"
1467
 
+    local client
1468
 
+    client=`gconftool-2 --get /desktop/gnome/url-handlers/mailto/command | cut -d ' ' -f 1` || ""
1469
 
+    echo $client | grep thunderbird > /dev/null 2>&1
1470
 
+    if [ $? -eq 0 ] ; then
1471
 
+        run_thunderbird "$client" "$1"
1472
 
+    fi
1473
 
+
1474
 
+    if gvfs-open --help 2>/dev/null 1>&2; then
1475
 
+        DEBUG 1 "Running gvfs-open \"$1\""
1476
 
+        gvfs-open "$1"
1477
 
+    else
1478
 
+        DEBUG 1 "Running gnome-open \"$1\""
1479
 
+        gnome-open "$1"
1480
 
+    fi
1481
 
 
1482
 
     if [ $? -eq 0 ]; then
1483
 
         exit_success
1484
 
     else
1485
 
         exit_failure_operation_failed
1486
 
     fi
1487
 
 }
1488
 
 
1489
 
@@ -435,18 +505,19 @@
1490
 
 }
1491
 
 
1492
 
 open_generic()
1493
 
 {
1494
 
     IFS=":"
1495
 
     for browser in $BROWSER; do
1496
 
         if [ x"$browser" != x"" ]; then
1497
 
 
1498
 
-            IFS=' '
1499
 
-            browser_with_arg=${browser//'%s'/"$1"}
1500
 
+            browser_with_arg=`printf "$browser" "$1" 2>/dev/null`
1501
 
+            if [ $? -ne 0 ]; then browser_with_arg=$browser;
1502
 
+            fi
1503
 
 
1504
 
             if [ x"$browser_with_arg" = x"$browser" ]; then "$browser" "$1";
1505
 
             else $browser_with_arg;
1506
 
             fi
1507
 
 
1508
 
             if [ $? -eq 0 ]; then exit_success;
1509
 
             fi
1510
 
         fi
1511
 
@@ -466,17 +537,17 @@
1512
 
     {
1513
 
         if ( linenr++ != 1 ) {
1514
 
             e = e "%0D%0A"
1515
 
         }
1516
 
         for ( i=1; i<=length ($0); ++i ) {
1517
 
             c = substr ($0, i, 1)
1518
 
             if ( ord [c] > 127 ) {
1519
 
                 e = e "%" sprintf("%02X", ord [c])
1520
 
-            } else if ( c ~ /[@a-zA-Z0-9.-]/ ) {
1521
 
+            } else if ( c ~ /[@a-zA-Z0-9.-\\/]/ ) {
1522
 
                 e = e c
1523
 
             } else {
1524
 
                 e = e "%" sprintf("%02X", ord [c])
1525
 
             }
1526
 
         }
1527
 
     }
1528
 
     END {
1529
 
         print e
1530
 
@@ -611,23 +682,27 @@
1531
 
     else
1532
 
         exit_failure_operation_failed
1533
 
     fi
1534
 
 fi
1535
 
 
1536
 
 detectDE
1537
 
 
1538
 
 if [ x"$DE" = x"" ]; then
1539
 
-    # if BROWSER variable is not set, check some well known browsers instead
1540
 
-    if [ x"$BROWSER" = x"" ]; then
1541
 
-        BROWSER=firefox:mozilla:netscape
1542
 
-    fi
1543
 
     DE=generic
1544
 
 fi
1545
 
 
1546
 
+# if BROWSER variable is not set, check some well known browsers instead
1547
 
+if [ x"$BROWSER" = x"" ]; then
1548
 
+    BROWSER=links2:links:lynx:w3m
1549
 
+    if [ -n "$DISPLAY" ]; then
1550
 
+        BROWSER=firefox:mozilla:epiphany:konqueror:chromium-browser:google-chrome:$BROWSER
1551
 
+    fi
1552
 
+fi
1553
 
+
1554
 
 case "$DE" in
1555
 
     kde)
1556
 
     open_kde "${mailto}"
1557
 
     ;;
1558
 
 
1559
 
     gnome)
1560
 
     open_gnome "${mailto}"
1561
 
     ;;
1562
 
Index: src/third_party/xdg-utils/scripts/xdg-email.in
1563
 
===================================================================
1564
 
--- src.orig/third_party/xdg-utils/scripts/xdg-email.in
1565
 
+++ src/third_party/xdg-utils/scripts/xdg-email.in
1566
 
@@ -1,9 +1,9 @@
1567
 
-#!/bin/bash
1568
 
+#!/bin/sh
1569
 
 #---------------------------------------------
1570
 
 #   xdg-email
1571
 
 #
1572
 
 #   Utility script to open the users favorite email program, using the
1573
 
 #       RFC 2368 mailto: URI spec
1574
 
 #
1575
 
 #   Refer to the usage() function below for usage.
1576
 
 #
1577
 
@@ -23,24 +23,81 @@
1578
 
 usage()
1579
 
 {
1580
 
 cat << _USAGE
1581
 
 _USAGE
1582
 
 }
1583
 
 
1584
 
 #@xdg-utils-common@
1585
 
 
1586
 
+run_thunderbird()
1587
 
+{
1588
 
+    local THUNDERBIRD MAILTO NEWMAILTO TO CC BCC SUBJECT BODY ATTACH
1589
 
+    THUNDERBIRD="$1"
1590
 
+    MAILTO=$(echo "$2" | sed 's/^mailto://')
1591
 
+    echo "$MAILTO" | grep -qs "^?"
1592
 
+    if [ "$?" = "0" ] ; then
1593
 
+        MAILTO=$(echo "$MAILTO" | sed 's/^?//')
1594
 
+    else
1595
 
+        MAILTO=$(echo "$MAILTO" | sed 's/^/to=/' | sed 's/?/\&/')
1596
 
+    fi
1597
 
+
1598
 
+    MAILTO=$(echo "$MAILTO" | sed 's/&/\n/g')
1599
 
+    TO=$(echo "$MAILTO" | grep '^to=' | sed 's/^to=//' | awk '{ printf "%s,",$0 }')
1600
 
+    CC=$(echo "$MAILTO" | grep '^cc=' | sed 's/^cc=//' | awk '{ printf "%s,",$0 }')
1601
 
+    BCC=$(echo "$MAILTO" | grep '^bcc=' | sed 's/^bcc=//' | awk '{ printf "%s,",$0 }')
1602
 
+    SUBJECT=$(echo "$MAILTO" | grep '^subject=' | tail -n 1)
1603
 
+    BODY=$(echo "$MAILTO" | grep '^body=' | tail -n 1)
1604
 
+    ATTACH=$(echo "$MAILTO" | sed 's/^attach=/\n\nfile:\/\//g' | awk '/^file:/ { printf "%s,",$0 }')
1605
 
+
1606
 
+    if [ -z "$TO" ] ; then
1607
 
+        NEWMAILTO=
1608
 
+    else
1609
 
+        NEWMAILTO="to='$TO'"
1610
 
+    fi
1611
 
+    if [ -n "$CC" ] ; then
1612
 
+        NEWMAILTO="${NEWMAILTO},cc='$CC'"
1613
 
+    fi
1614
 
+    if [ -n "$BCC" ] ; then
1615
 
+        NEWMAILTO="${NEWMAILTO},bcc='$BCC'"
1616
 
+    fi
1617
 
+    if [ -n "$SUBJECT" ] ; then
1618
 
+        NEWMAILTO="${NEWMAILTO},$SUBJECT"
1619
 
+    fi
1620
 
+    if [ -n "$BODY" ] ; then
1621
 
+        NEWMAILTO="${NEWMAILTO},$BODY"
1622
 
+    fi
1623
 
+
1624
 
+    if [ -n "$ATTACH" ] ; then
1625
 
+        NEWMAILTO="${NEWMAILTO},attachment='${ATTACH}'"
1626
 
+    fi
1627
 
+
1628
 
+    NEWMAILTO=$(echo "$NEWMAILTO" | sed 's/^,//')
1629
 
+    DEBUG 1 "Running $THUNDERBIRD -compose \"$NEWMAILTO\""
1630
 
+    "$THUNDERBIRD" -compose "$NEWMAILTO"
1631
 
+    if [ $? -eq 0 ]; then
1632
 
+        exit_success
1633
 
+    else
1634
 
+        exit_failure_operation_failed
1635
 
+    fi
1636
 
+}
1637
 
+
1638
 
 open_kde()
1639
 
 {
1640
 
     local client
1641
 
+    client=`kreadconfig --file emaildefaults --group PROFILE_Default --key EmailClient | cut -d ' ' -f 1`
1642
 
+    echo $client | grep thunderbird > /dev/null 2>&1
1643
 
+    if [ $? -eq 0 ] ; then
1644
 
+        run_thunderbird "$client" "$1"
1645
 
+    fi
1646
 
+
1647
 
     if [ -f /etc/SuSE-release ] ; then
1648
 
         # Workaround for SUSE 10.0
1649
 
-        client=`kreadconfig --file emaildefaults --group PROFILE_Default --key EmailClient| cut -d ' ' -f 1`
1650
 
-        [ -z $client ] && client="kmail"
1651
 
-        if ! which $client > /dev/null 2> /dev/null; then
1652
 
+        [ -z "$client" ] && client="kmail"
1653
 
+        if ! which "$client" > /dev/null 2> /dev/null; then
1654
 
             DEBUG 3 "KDE has $client configured as email client which isn't installed"
1655
 
             if which gnome-open > /dev/null 2> /dev/null && which evolution > /dev/null 2> /dev/null; then
1656
 
                DEBUG 3 "Try gnome-open instead"
1657
 
                open_gnome "$1"
1658
 
             fi
1659
 
         fi
1660
 
     fi
1661
 
     DEBUG 1 "Running kmailservice \"$1\""
1662
 
@@ -57,18 +114,30 @@
1663
 
         exit_success
1664
 
     else
1665
 
         exit_failure_operation_failed
1666
 
     fi
1667
 
 }
1668
 
 
1669
 
 open_gnome()
1670
 
 {
1671
 
-    DEBUG 1 "Running gnome-open \"$1\""
1672
 
-    gnome-open "$1"
1673
 
+    local client
1674
 
+    client=`gconftool-2 --get /desktop/gnome/url-handlers/mailto/command | cut -d ' ' -f 1` || ""
1675
 
+    echo $client | grep thunderbird > /dev/null 2>&1
1676
 
+    if [ $? -eq 0 ] ; then
1677
 
+        run_thunderbird "$client" "$1"
1678
 
+    fi
1679
 
+
1680
 
+    if gvfs-open --help 2>/dev/null 1>&2; then
1681
 
+        DEBUG 1 "Running gvfs-open \"$1\""
1682
 
+        gvfs-open "$1"
1683
 
+    else
1684
 
+        DEBUG 1 "Running gnome-open \"$1\""
1685
 
+        gnome-open "$1"
1686
 
+    fi
1687
 
 
1688
 
     if [ $? -eq 0 ]; then
1689
 
         exit_success
1690
 
     else
1691
 
         exit_failure_operation_failed
1692
 
     fi
1693
 
 }
1694
 
 
1695
 
@@ -86,18 +155,19 @@
1696
 
 }
1697
 
 
1698
 
 open_generic()
1699
 
 {
1700
 
     IFS=":"
1701
 
     for browser in $BROWSER; do
1702
 
         if [ x"$browser" != x"" ]; then
1703
 
 
1704
 
-            IFS=' '
1705
 
-            browser_with_arg=${browser//'%s'/"$1"}
1706
 
+            browser_with_arg=`printf "$browser" "$1" 2>/dev/null`
1707
 
+            if [ $? -ne 0 ]; then browser_with_arg=$browser;
1708
 
+            fi
1709
 
 
1710
 
             if [ x"$browser_with_arg" = x"$browser" ]; then "$browser" "$1";
1711
 
             else $browser_with_arg;
1712
 
             fi
1713
 
 
1714
 
             if [ $? -eq 0 ]; then exit_success;
1715
 
             fi
1716
 
         fi
1717
 
@@ -117,17 +187,17 @@
1718
 
     {
1719
 
         if ( linenr++ != 1 ) {
1720
 
             e = e "%0D%0A"
1721
 
         }
1722
 
         for ( i=1; i<=length ($0); ++i ) {
1723
 
             c = substr ($0, i, 1)
1724
 
             if ( ord [c] > 127 ) {
1725
 
                 e = e "%" sprintf("%02X", ord [c])
1726
 
-            } else if ( c ~ /[@a-zA-Z0-9.-]/ ) {
1727
 
+            } else if ( c ~ /[@a-zA-Z0-9.-\\/]/ ) {
1728
 
                 e = e c
1729
 
             } else {
1730
 
                 e = e "%" sprintf("%02X", ord [c])
1731
 
             }
1732
 
         }
1733
 
     }
1734
 
     END {
1735
 
         print e
1736
 
@@ -262,23 +332,27 @@
1737
 
     else
1738
 
         exit_failure_operation_failed
1739
 
     fi
1740
 
 fi
1741
 
 
1742
 
 detectDE
1743
 
 
1744
 
 if [ x"$DE" = x"" ]; then
1745
 
-    # if BROWSER variable is not set, check some well known browsers instead
1746
 
-    if [ x"$BROWSER" = x"" ]; then
1747
 
-        BROWSER=firefox:mozilla:netscape
1748
 
-    fi
1749
 
     DE=generic
1750
 
 fi
1751
 
 
1752
 
+# if BROWSER variable is not set, check some well known browsers instead
1753
 
+if [ x"$BROWSER" = x"" ]; then
1754
 
+    BROWSER=links2:links:lynx:w3m
1755
 
+    if [ -n "$DISPLAY" ]; then
1756
 
+        BROWSER=firefox:mozilla:epiphany:konqueror:chromium-browser:google-chrome:$BROWSER
1757
 
+    fi
1758
 
+fi
1759
 
+
1760
 
 case "$DE" in
1761
 
     kde)
1762
 
     open_kde "${mailto}"
1763
 
     ;;
1764
 
 
1765
 
     gnome)
1766
 
     open_gnome "${mailto}"
1767
 
     ;;
1768
 
Index: src/third_party/xdg-utils/scripts/xdg-file-dialog.in
1769
 
===================================================================
1770
 
--- src.orig/third_party/xdg-utils/scripts/xdg-file-dialog.in
1771
 
+++ src/third_party/xdg-utils/scripts/xdg-file-dialog.in
1772
 
@@ -254,17 +254,17 @@
1773
 
 
1774
 
   openfilenamelist)
1775
 
     action=openfilenamelist
1776
 
     ;;
1777
 
 
1778
 
   savefilename)
1779
 
     action=savefilename
1780
 
     ;;
1781
 
-    
1782
 
+
1783
 
   directory)
1784
 
     action=directory
1785
 
     ;;
1786
 
 
1787
 
   *)
1788
 
   exit_failure_syntax "unknown command '$1'"
1789
 
   ;;
1790
 
 esac
1791
 
Index: src/third_party/xdg-utils/scripts/xdg-icon-resource
1792
 
===================================================================
1793
 
--- src.orig/third_party/xdg-utils/scripts/xdg-icon-resource
1794
 
+++ src/third_party/xdg-utils/scripts/xdg-icon-resource
1795
 
@@ -288,17 +288,17 @@
1796
 
     if [ $# -gt 0 ]; then
1797
 
         echo "xdg-icon-resource: $@" >&2
1798
 
     fi
1799
 
 
1800
 
     exit 5
1801
 
 }
1802
 
 
1803
 
 #------------------------------------------------------------
1804
 
-# Exit script on insufficient permission to read a specified file
1805
 
+# Exit script on insufficient permission to write a specified file
1806
 
 
1807
 
 exit_failure_file_permission_write()
1808
 
 {
1809
 
     if [ $# -gt 0 ]; then
1810
 
         echo "xdg-icon-resource: $@" >&2
1811
 
     fi
1812
 
 
1813
 
     exit 6
1814
 
@@ -365,17 +365,17 @@
1815
 
             ;;
1816
 
 
1817
 
             --manual)
1818
 
             manualpage
1819
 
             exit_success
1820
 
             ;;
1821
 
 
1822
 
             --version)
1823
 
-            echo "xdg-icon-resource 1.0.1"
1824
 
+            echo "xdg-icon-resource 1.0.2"
1825
 
             exit_success
1826
 
             ;;
1827
 
         esac
1828
 
     done
1829
 
 }
1830
 
 
1831
 
 check_common_commands "$@"
1832
 
 
1833
 
@@ -391,17 +391,18 @@
1834
 
 #--------------------------------------
1835
 
 # Checks for known desktop environments
1836
 
 # set variable DE to the desktop environments name, lowercase
1837
 
 
1838
 
 detectDE()
1839
 
 {
1840
 
     if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
1841
 
     elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
1842
 
-    elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
1843
 
+    elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
1844
 
+    elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
1845
 
     fi
1846
 
 }
1847
 
 
1848
 
 #----------------------------------------------------------------------------
1849
 
 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4
1850
 
 # It also always returns 1 in KDE 3.4 and earlier
1851
 
 # Simply return 0 in such case
1852
 
 
1853
 
@@ -418,18 +419,18 @@
1854
 
 }
1855
 
 
1856
 
 # Set GTK_UPDATE_ICON_CACHE to gtk-update-icon-cache executable path or
1857
 
 # to "-" if not found.
1858
 
 GTK_UPDATE_ICON_CACHE=
1859
 
 find_gtk_update_icon_cache()
1860
 
 {
1861
 
     [ -n "$GTK_UPDATE_ICON_CACHE" ] && return;
1862
 
1863
 
-    GTK_UPDATE_ICON_CACHE="-"   
1864
 
+
1865
 
+    GTK_UPDATE_ICON_CACHE="-"
1866
 
     for x in `echo "$PATH:/opt/gnome/bin" | sed 's/:/ /g'`; do
1867
 
         DEBUG 3 "Checking $x for gtk-update-icon-cache"
1868
 
         if [ -x "$x/gtk-update-icon-cache" ] ; then
1869
 
             DEBUG 1 "Found $x/gtk-update-icon-cache"
1870
 
             GTK_UPDATE_ICON_CACHE="$x/gtk-update-icon-cache"
1871
 
             return
1872
 
         fi
1873
 
     done
1874
 
@@ -437,30 +438,30 @@
1875
 
 
1876
 
 # Start GNOME legacy workaround section
1877
 
 need_dot_icon_path()
1878
 
 {
1879
 
   # GTK < 2.6 uses ~/.icons but not XDG_DATA_HOME/icons
1880
 
   # The availability of gtk-update-icon-cache is used as indication
1881
 
   # of whether the system is using GTK 2.6 or later
1882
 
   find_gtk_update_icon_cache
1883
 
-  [ "$GTK_UPDATE_ICON_CACHE" != "-" ] && return 1; 
1884
 
+  [ "$GTK_UPDATE_ICON_CACHE" != "-" ] && return 1;
1885
 
   return 0;
1886
 
 }
1887
 
 
1888
 
 update_icon_database()
1889
 
 {
1890
 
    # Touch me, I'm dirty
1891
 
    touch "$1/.xdg-icon-resource-dummy"
1892
 
    rm -f "$1/.xdg-icon-resource-dummy"
1893
 
 
1894
 
    # Don't create a cache if there wan't one already
1895
 
    if [ -f "$1/icon-theme.cache" ] ; then
1896
 
       find_gtk_update_icon_cache
1897
 
-      if [ "$GTK_UPDATE_ICON_CACHE" != "-" ] ; then 
1898
 
+      if [ "$GTK_UPDATE_ICON_CACHE" != "-" ] ; then
1899
 
          DEBUG 1 "Running $GTK_UPDATE_ICON_CACHE -f -t \"$1\""
1900
 
          eval '$GTK_UPDATE_ICON_CACHE -f -t "$1"'$xdg_redirect_output
1901
 
          return
1902
 
       fi
1903
 
    fi
1904
 
 }
1905
 
 
1906
 
 [ x"$1" != x"" ] || exit_failure_syntax
1907
 
@@ -511,17 +512,17 @@
1908
 
         case "$1" in
1909
 
           user)
1910
 
             mode="user"
1911
 
             ;;
1912
 
 
1913
 
           system)
1914
 
             mode="system"
1915
 
             ;;
1916
 
-            
1917
 
+
1918
 
           *)
1919
 
             exit_failure_syntax "unknown mode '$1'"
1920
 
             ;;
1921
 
         esac
1922
 
         shift
1923
 
         ;;
1924
 
 
1925
 
       --theme)
1926
 
@@ -729,19 +730,20 @@
1927
 
   return $needed
1928
 
 }
1929
 
 
1930
 
 kde_dir=
1931
 
 if [ x"$mode" = x"user" ] ; then
1932
 
     xdg_dir="$xdg_base_dir/$xdg_size_name/$context"
1933
 
     #KDE 3.x doesn't support XDG_DATA_HOME for icons
1934
 
     #Check if xdg_dir prefix is listed by kde-config --path icon
1935
 
-    #If not, install additional symlink to kdedir 
1936
 
+    #If not, install additional symlink to kdedir
1937
 
     if need_kde_icon_path "$xdg_user_prefix" ; then
1938
 
-        kde_user_dir="$HOME/.kde/share/icons/$theme"
1939
 
+        kde_user_icon_dir=`kde${KDE_SESSION_VERSION}-config --path icon | cut -d ':' -f 1`
1940
 
+        kde_user_dir="$kde_user_icon_dir/$theme"
1941
 
         kde_dir="$kde_user_dir/$xdg_size_name/$context"
1942
 
     fi
1943
 
     #Gnome 2.8 supports ~/.icons but not XDG_DATA_HOME
1944
 
     if [ -n "$dot_icon_dir" ] ; then
1945
 
         if [ -L "$dot_icon_dir" ] ; then
1946
 
             # Don't do anything
1947
 
             dot_icon_dir=
1948
 
         elif [ ! -d "$dot_icon_dir/" ] ; then
1949
 
@@ -752,28 +754,28 @@
1950
 
             dot_icon_dir="$dot_icon_dir/$theme/$xdg_size_name/$context"
1951
 
         fi
1952
 
     fi
1953
 
     my_umask=077
1954
 
 else
1955
 
     xdg_dir="$xdg_base_dir/$xdg_size_name/$context"
1956
 
     #KDE 3.x doesn't support XDG_DATA_DIRS for icons
1957
 
     #Check if xdg_dir prefix is listed by kde-config --path icon
1958
 
-    #If not, install additional symlink to kdedir 
1959
 
+    #If not, install additional symlink to kdedir
1960
 
     if need_kde_icon_path "$xdg_global_prefix" ; then
1961
 
         kde_global_dir="$kde_global_prefix/$theme"
1962
 
         kde_dir="$kde_global_dir/$xdg_size_name/$context"
1963
 
     fi
1964
 
     my_umask=022
1965
 
 fi
1966
 
 # End KDE legacy workaround section
1967
 
 
1968
 
 # Start GNOME legacy workaround section
1969
 
 need_gnome_mime=
1970
 
-[ $context = "mimetypes" ] && need_gnome_mime=true 
1971
 
+[ $context = "mimetypes" ] && need_gnome_mime=true
1972
 
 # End GNOME legacy workaround section
1973
 
 
1974
 
 [ -n "$icon_name" ] || icon_name=`basename "$icon_file" | sed 's/\.[a-z][a-z][a-z]$//'`
1975
 
 
1976
 
 if [ "$vendor" = "true" -a "$action" = "install" -a "$context" = "apps" ] ; then
1977
 
     check_vendor_prefix "$icon_name" "icon name"
1978
 
 fi
1979
 
 
1980
 
@@ -809,18 +811,18 @@
1981
 
         umask $save_umask
1982
 
         ;;
1983
 
 
1984
 
     uninstall)
1985
 
         for icon_dir in $xdg_dir $dot_icon_dir; do
1986
 
             rm -f "$icon_dir/$icon_name.xpm" "$icon_dir/$icon_name.png"
1987
 
             rm -f "$icon_dir/$icon_icon_name"
1988
 
             if [ -n "$need_gnome_mime" ] ; then
1989
 
-                rm -f "$icon_dir/gnome-mime-$icon_name.xpm" 
1990
 
-                rm -f "$icon_dir/gnome-mime-$icon_name.png" 
1991
 
+                rm -f "$icon_dir/gnome-mime-$icon_name.xpm"
1992
 
+                rm -f "$icon_dir/gnome-mime-$icon_name.png"
1993
 
             fi
1994
 
         done
1995
 
         if [ -n "$kde_dir" ] ; then
1996
 
             rm -f "$kde_dir/$icon_name.xpm" "$kde_dir/$icon_name.png"
1997
 
         fi
1998
 
 
1999
 
         ;;
2000
 
 esac
2001
 
Index: src/third_party/xdg-utils/scripts/xdg-icon-resource.in
2002
 
===================================================================
2003
 
--- src.orig/third_party/xdg-utils/scripts/xdg-icon-resource.in
2004
 
+++ src/third_party/xdg-utils/scripts/xdg-icon-resource.in
2005
 
@@ -28,18 +28,18 @@
2006
 
 #@xdg-utils-common@
2007
 
 
2008
 
 # Set GTK_UPDATE_ICON_CACHE to gtk-update-icon-cache executable path or
2009
 
 # to "-" if not found.
2010
 
 GTK_UPDATE_ICON_CACHE=
2011
 
 find_gtk_update_icon_cache()
2012
 
 {
2013
 
     [ -n "$GTK_UPDATE_ICON_CACHE" ] && return;
2014
 
2015
 
-    GTK_UPDATE_ICON_CACHE="-"   
2016
 
+
2017
 
+    GTK_UPDATE_ICON_CACHE="-"
2018
 
     for x in `echo "$PATH:/opt/gnome/bin" | sed 's/:/ /g'`; do
2019
 
         DEBUG 3 "Checking $x for gtk-update-icon-cache"
2020
 
         if [ -x "$x/gtk-update-icon-cache" ] ; then
2021
 
             DEBUG 1 "Found $x/gtk-update-icon-cache"
2022
 
             GTK_UPDATE_ICON_CACHE="$x/gtk-update-icon-cache"
2023
 
             return
2024
 
         fi
2025
 
     done
2026
 
@@ -47,30 +47,30 @@
2027
 
 
2028
 
 # Start GNOME legacy workaround section
2029
 
 need_dot_icon_path()
2030
 
 {
2031
 
   # GTK < 2.6 uses ~/.icons but not XDG_DATA_HOME/icons
2032
 
   # The availability of gtk-update-icon-cache is used as indication
2033
 
   # of whether the system is using GTK 2.6 or later
2034
 
   find_gtk_update_icon_cache
2035
 
-  [ "$GTK_UPDATE_ICON_CACHE" != "-" ] && return 1; 
2036
 
+  [ "$GTK_UPDATE_ICON_CACHE" != "-" ] && return 1;
2037
 
   return 0;
2038
 
 }
2039
 
 
2040
 
 update_icon_database()
2041
 
 {
2042
 
    # Touch me, I'm dirty
2043
 
    touch "$1/.@NAME@-dummy"
2044
 
    rm -f "$1/.@NAME@-dummy"
2045
 
 
2046
 
    # Don't create a cache if there wan't one already
2047
 
    if [ -f "$1/icon-theme.cache" ] ; then
2048
 
       find_gtk_update_icon_cache
2049
 
-      if [ "$GTK_UPDATE_ICON_CACHE" != "-" ] ; then 
2050
 
+      if [ "$GTK_UPDATE_ICON_CACHE" != "-" ] ; then
2051
 
          DEBUG 1 "Running $GTK_UPDATE_ICON_CACHE -f -t \"$1\""
2052
 
          eval '$GTK_UPDATE_ICON_CACHE -f -t "$1"'$xdg_redirect_output
2053
 
          return
2054
 
       fi
2055
 
    fi
2056
 
 }
2057
 
 
2058
 
 [ x"$1" != x"" ] || exit_failure_syntax
2059
 
@@ -121,17 +121,17 @@
2060
 
         case "$1" in
2061
 
           user)
2062
 
             mode="user"
2063
 
             ;;
2064
 
 
2065
 
           system)
2066
 
             mode="system"
2067
 
             ;;
2068
 
-            
2069
 
+
2070
 
           *)
2071
 
             exit_failure_syntax "unknown mode '$1'"
2072
 
             ;;
2073
 
         esac
2074
 
         shift
2075
 
         ;;
2076
 
 
2077
 
       --theme)
2078
 
@@ -339,19 +339,20 @@
2079
 
   return $needed
2080
 
 }
2081
 
 
2082
 
 kde_dir=
2083
 
 if [ x"$mode" = x"user" ] ; then
2084
 
     xdg_dir="$xdg_base_dir/$xdg_size_name/$context"
2085
 
     #KDE 3.x doesn't support XDG_DATA_HOME for icons
2086
 
     #Check if xdg_dir prefix is listed by kde-config --path icon
2087
 
-    #If not, install additional symlink to kdedir 
2088
 
+    #If not, install additional symlink to kdedir
2089
 
     if need_kde_icon_path "$xdg_user_prefix" ; then
2090
 
-        kde_user_dir="$HOME/.kde/share/icons/$theme"
2091
 
+        kde_user_icon_dir=`kde${KDE_SESSION_VERSION}-config --path icon | cut -d ':' -f 1`
2092
 
+        kde_user_dir="$kde_user_icon_dir/$theme"
2093
 
         kde_dir="$kde_user_dir/$xdg_size_name/$context"
2094
 
     fi
2095
 
     #Gnome 2.8 supports ~/.icons but not XDG_DATA_HOME
2096
 
     if [ -n "$dot_icon_dir" ] ; then
2097
 
         if [ -L "$dot_icon_dir" ] ; then
2098
 
             # Don't do anything
2099
 
             dot_icon_dir=
2100
 
         elif [ ! -d "$dot_icon_dir/" ] ; then
2101
 
@@ -362,28 +363,28 @@
2102
 
             dot_icon_dir="$dot_icon_dir/$theme/$xdg_size_name/$context"
2103
 
         fi
2104
 
     fi
2105
 
     my_umask=077
2106
 
 else
2107
 
     xdg_dir="$xdg_base_dir/$xdg_size_name/$context"
2108
 
     #KDE 3.x doesn't support XDG_DATA_DIRS for icons
2109
 
     #Check if xdg_dir prefix is listed by kde-config --path icon
2110
 
-    #If not, install additional symlink to kdedir 
2111
 
+    #If not, install additional symlink to kdedir
2112
 
     if need_kde_icon_path "$xdg_global_prefix" ; then
2113
 
         kde_global_dir="$kde_global_prefix/$theme"
2114
 
         kde_dir="$kde_global_dir/$xdg_size_name/$context"
2115
 
     fi
2116
 
     my_umask=022
2117
 
 fi
2118
 
 # End KDE legacy workaround section
2119
 
 
2120
 
 # Start GNOME legacy workaround section
2121
 
 need_gnome_mime=
2122
 
-[ $context = "mimetypes" ] && need_gnome_mime=true 
2123
 
+[ $context = "mimetypes" ] && need_gnome_mime=true
2124
 
 # End GNOME legacy workaround section
2125
 
 
2126
 
 [ -n "$icon_name" ] || icon_name=`basename "$icon_file" | sed 's/\.[a-z][a-z][a-z]$//'`
2127
 
 
2128
 
 if [ "$vendor" = "true" -a "$action" = "install" -a "$context" = "apps" ] ; then
2129
 
     check_vendor_prefix "$icon_name" "icon name"
2130
 
 fi
2131
 
 
2132
 
@@ -419,18 +420,18 @@
2133
 
         umask $save_umask
2134
 
         ;;
2135
 
 
2136
 
     uninstall)
2137
 
         for icon_dir in $xdg_dir $dot_icon_dir; do
2138
 
             rm -f "$icon_dir/$icon_name.xpm" "$icon_dir/$icon_name.png"
2139
 
             rm -f "$icon_dir/$icon_icon_name"
2140
 
             if [ -n "$need_gnome_mime" ] ; then
2141
 
-                rm -f "$icon_dir/gnome-mime-$icon_name.xpm" 
2142
 
-                rm -f "$icon_dir/gnome-mime-$icon_name.png" 
2143
 
+                rm -f "$icon_dir/gnome-mime-$icon_name.xpm"
2144
 
+                rm -f "$icon_dir/gnome-mime-$icon_name.png"
2145
 
             fi
2146
 
         done
2147
 
         if [ -n "$kde_dir" ] ; then
2148
 
             rm -f "$kde_dir/$icon_name.xpm" "$kde_dir/$icon_name.png"
2149
 
         fi
2150
 
 
2151
 
         ;;
2152
 
 esac
2153
 
Index: src/third_party/xdg-utils/scripts/xdg-mime
2154
 
===================================================================
2155
 
--- src.orig/third_party/xdg-utils/scripts/xdg-mime
2156
 
+++ src/third_party/xdg-utils/scripts/xdg-mime
2157
 
@@ -317,17 +317,17 @@
2158
 
     if [ $# -gt 0 ]; then
2159
 
         echo "xdg-mime: $@" >&2
2160
 
     fi
2161
 
 
2162
 
     exit 5
2163
 
 }
2164
 
 
2165
 
 #------------------------------------------------------------
2166
 
-# Exit script on insufficient permission to read a specified file
2167
 
+# Exit script on insufficient permission to write a specified file
2168
 
 
2169
 
 exit_failure_file_permission_write()
2170
 
 {
2171
 
     if [ $# -gt 0 ]; then
2172
 
         echo "xdg-mime: $@" >&2
2173
 
     fi
2174
 
 
2175
 
     exit 6
2176
 
@@ -394,17 +394,17 @@
2177
 
             ;;
2178
 
 
2179
 
             --manual)
2180
 
             manualpage
2181
 
             exit_success
2182
 
             ;;
2183
 
 
2184
 
             --version)
2185
 
-            echo "xdg-mime 1.0.1"
2186
 
+            echo "xdg-mime 1.0.2"
2187
 
             exit_success
2188
 
             ;;
2189
 
         esac
2190
 
     done
2191
 
 }
2192
 
 
2193
 
 check_common_commands "$@"
2194
 
 
2195
 
@@ -420,17 +420,18 @@
2196
 
 #--------------------------------------
2197
 
 # Checks for known desktop environments
2198
 
 # set variable DE to the desktop environments name, lowercase
2199
 
 
2200
 
 detectDE()
2201
 
 {
2202
 
     if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
2203
 
     elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
2204
 
-    elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
2205
 
+    elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
2206
 
+    elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
2207
 
     fi
2208
 
 }
2209
 
 
2210
 
 #----------------------------------------------------------------------------
2211
 
 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4
2212
 
 # It also always returns 1 in KDE 3.4 and earlier
2213
 
 # Simply return 0 in such case
2214
 
 
2215
 
@@ -447,105 +448,213 @@
2216
 
 }
2217
 
 
2218
 
 update_mime_database()
2219
 
 {
2220
 
    if [ x"$mode" = x"user" -a -n "$DISPLAY" ] ; then
2221
 
       detectDE
2222
 
       if [ x"$DE" = x"kde" ] ; then
2223
 
          DEBUG 1 "Running kbuildsycoca"
2224
 
-         eval 'kbuildsycoca'$xdg_redirect_output
2225
 
+         if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
2226
 
+             eval 'kbuildsycoca4'$xdg_redirect_output
2227
 
+         else
2228
 
+             eval 'kbuildsycoca'$xdg_redirect_output
2229
 
+         fi
2230
 
       fi
2231
 
    fi
2232
 
    for x in `echo "$PATH:/opt/gnome/bin" | sed 's/:/ /g'`; do
2233
 
       if [ -x $x/update-mime-database ] ; then
2234
 
          DEBUG 1 "Running $x/update-mime-database $1"
2235
 
          eval '$x/update-mime-database $1'$xdg_redirect_output
2236
 
          return
2237
 
       fi
2238
 
    done
2239
 
 }
2240
 
 
2241
 
 info_kde()
2242
 
 {
2243
 
-    if which "kmimetypefinder" > /dev/null 2>/dev/null; then
2244
 
+    if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
2245
 
         DEBUG 1 "Running kmimetypefinder \"$1\""
2246
 
-        kmimetypefinder "$1" 2>/dev/null | head -n 1
2247
 
+        KMIMETYPEFINDER=`which kmimetypefinder 2>/dev/null`
2248
 
+        $KMIMETYPEFINDER "$1" 2>/dev/null | head -n 1
2249
 
     else
2250
 
         DEBUG 1 "Running kfile \"$1\""
2251
 
-        kfile "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1
2252
 
+        KFILE=`which kfile 2>/dev/null`
2253
 
+        $KFILE "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1
2254
 
     fi
2255
 
 
2256
 
-    exit_success
2257
 
+    if [ $? -eq 0 ]; then
2258
 
+        exit_success
2259
 
+    else
2260
 
+        exit_failure_operation_failed
2261
 
+    fi
2262
 
 }
2263
 
 
2264
 
 info_gnome()
2265
 
 {
2266
 
     file=`readlink -f "$1"` # Normalize path
2267
 
-    DEBUG 1 "Running gnomevfs-info \"$file\""
2268
 
-    gnomevfs-info "$file" 2> /dev/null | grep MIME | cut -d ":" -f 2 | sed s/"^ "//
2269
 
 
2270
 
-    exit_success
2271
 
+    if gvfs-info --help 2>/dev/null 1>&2; then
2272
 
+        DEBUG 1 "Running gvfs-info \"$file\""
2273
 
+        gvfs-info "$file" 2> /dev/null | grep standard::content-type | cut -d' ' -f4
2274
 
+    else
2275
 
+       DEBUG 1 "Running gnomevfs-info \"$file\""
2276
 
+       gnomevfs-info --slow-mime "$file" 2> /dev/null | grep "^MIME" | cut -d ":" -f 2 | sed s/"^ "//
2277
 
+    fi
2278
 
+
2279
 
+    if [ $? -eq 0 ]; then
2280
 
+        exit_success
2281
 
+    else
2282
 
+        exit_failure_operation_failed
2283
 
+    fi
2284
 
 }
2285
 
 
2286
 
 info_generic()
2287
 
 {
2288
 
-    DEBUG 1 "Running /usr/bin/file -i \"$1\"" 
2289
 
+    DEBUG 1 "Running file -i \"$1\""
2290
 
     /usr/bin/file -i "$1" 2> /dev/null | cut -d ":" -f 2 | sed s/"^ "//
2291
 
 
2292
 
-    exit_success
2293
 
+    if [ $? -eq 0 ]; then
2294
 
+        exit_success
2295
 
+    else
2296
 
+        exit_failure_operation_failed
2297
 
+    fi
2298
 
 }
2299
 
 
2300
 
 make_default_kde()
2301
 
 {
2302
 
     # $1 is vendor-name.desktop
2303
 
-    # $2 is mime/type 
2304
 
-    # Add to $KDE_HOME/share/config/profilerc:
2305
 
+    # $2 is mime/type
2306
 
+    #
2307
 
+    # On KDE 3, add to $KDE_CONFIG_PATH/profilerc:
2308
 
     # [$2 - 1]
2309
 
     # Application=$1
2310
 
     #
2311
 
     # Remove all [$2 - *] sections, or even better,
2312
 
     # renumber [$2 - *] sections and remove duplicate
2313
 
-    
2314
 
-    default_file="$HOME/.kde/share/config/profilerc"
2315
 
-    DEBUG 2 "make_default_kde $1 $2"
2316
 
+    #
2317
 
+    # On KDE 4, add $2=$1 to $XDG_DATA_APPS/mimeapps.list
2318
 
+    #
2319
 
+    # Example file:
2320
 
+    #
2321
 
+    # [Added Associations]
2322
 
+    # text/plain=kde4-kate.desktop;kde4-kwrite.desktop;
2323
 
+    #
2324
 
+    # [Removed Associations]
2325
 
+    # text/plain=gnome-gedit.desktop;gnu-emacs.desktop;
2326
 
+    vendor="$1"
2327
 
+    mimetype="$2"
2328
 
+    if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
2329
 
+        default_dir=`kde4-config --path xdgdata-apps 2> /dev/null | cut -d ':' -f 1`
2330
 
+        default_file="$default_dir/mimeapps.list"
2331
 
+    else
2332
 
+        default_dir=`kde-config --path config 2> /dev/null | cut -d ':' -f 1`
2333
 
+        default_file="$default_dir/profilerc"
2334
 
+    fi
2335
 
+    if [ -z "$default_dir" ]; then
2336
 
+        DEBUG 2 "make_default_kde: No kde runtime detected"
2337
 
+        return
2338
 
+    fi
2339
 
+    DEBUG 2 "make_default_kde $vendor $mimetype"
2340
 
     DEBUG 1 "Updating $default_file"
2341
 
-    mkdir -p "$HOME/.kde/share/config"
2342
 
+    mkdir -p "$default_dir"
2343
 
     [ -f $default_file ] || touch $default_file
2344
 
-    awk -v application="$1" -v mimetype="$2" '
2345
 
+    if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
2346
 
+        [ -f $default_file ] || touch $default_file
2347
 
+        awk -v application="$vendor" -v mimetype="$mimetype" '
2348
 
+    BEGIN {
2349
 
+        prefix=mimetype "="
2350
 
+        associations=0
2351
 
+        found=0
2352
 
+        blanks=0
2353
 
+    }
2354
 
+    {
2355
 
+        suppress=0
2356
 
+        if (index($0, "[Added Associations]") == 1) {
2357
 
+            associations=1
2358
 
+        } else if (index($0, "[") == 1) {
2359
 
+            if (associations && !found) {
2360
 
+                print prefix application
2361
 
+                found=1
2362
 
+            }
2363
 
+            associations=0
2364
 
+        } else if ($0 == "") {
2365
 
+            blanks++
2366
 
+            suppress=1
2367
 
+        } else if (associations && index($0, prefix) == 1) {
2368
 
+            value=substr($0, length(prefix) + 1, length)
2369
 
+            split(value, apps, ";")
2370
 
+            value=application ";"
2371
 
+            count=0
2372
 
+            for (i in apps) {
2373
 
+              count++
2374
 
+            }
2375
 
+            for (i=0; i < count; i++) {
2376
 
+                if (apps[i] != application && apps[i] != "") {
2377
 
+                    value=value apps[i] ";"
2378
 
+                }
2379
 
+            }
2380
 
+            $0=prefix value
2381
 
+            found=1
2382
 
+        }
2383
 
+        if (!suppress) {
2384
 
+            while (blanks > 0) {
2385
 
+                print ""
2386
 
+                blanks--
2387
 
+            }
2388
 
+            print $0
2389
 
+        }
2390
 
+    }
2391
 
+    END {
2392
 
+        if (!found) {
2393
 
+            if (!associations) {
2394
 
+                print "[Added Associations]"
2395
 
+            }
2396
 
+            print prefix application
2397
 
+        }
2398
 
+        while (blanks > 0) {
2399
 
+            print ""
2400
 
+            blanks--
2401
 
+        }
2402
 
+    }
2403
 
+' $default_file > ${default_file}.new && mv ${default_file}.new $default_file
2404
 
+        eval 'kbuildsycoca4'$xdg_redirect_output
2405
 
+    else
2406
 
+        awk -v application="$vendor" -v mimetype="$mimetype" '
2407
 
     BEGIN {
2408
 
         header_start="[" mimetype " - "
2409
 
-        supress=0
2410
 
+        suppress=0
2411
 
     }
2412
 
-    {  
2413
 
+    {
2414
 
         if (index($0, header_start) == 1 )
2415
 
-            supress=1
2416
 
+            suppress=1
2417
 
         else
2418
 
-            if (/^\[/) { supress=0 }
2419
 
+            if (/^\[/) { suppress=0 }
2420
 
 
2421
 
-        if (!supress) {
2422
 
+        if (!suppress) {
2423
 
             print $0
2424
 
         }
2425
 
     }
2426
 
     END {
2427
 
-        print "" 
2428
 
+        print ""
2429
 
         print "[" mimetype " - 1]"
2430
 
         print "Application=" application
2431
 
         print "AllowAsDefault=true"
2432
 
         print "GenericServiceType=Application"
2433
 
         print "Preference=1"
2434
 
         print "ServiceType=" mimetype
2435
 
     }
2436
 
 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file
2437
 
+    fi
2438
 
 }
2439
 
 
2440
 
 make_default_generic()
2441
 
 {
2442
 
     # $1 is vendor-name.desktop
2443
 
-    # $2 is mime/type 
2444
 
+    # $2 is mime/type
2445
 
     # Add $2=$1 to XDG_DATA_HOME/applications/defaults.list
2446
 
     xdg_user_dir="$XDG_DATA_HOME"
2447
 
     [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share"
2448
 
     default_file="$xdg_user_dir/applications/defaults.list"
2449
 
     DEBUG 2 "make_default_generic $1 $2"
2450
 
     DEBUG 1 "Updating $default_file"
2451
 
     grep -v "$2=" $default_file > ${default_file}.new 2> /dev/null
2452
 
     if ! grep "[Default Applications]" ${default_file}.new > /dev/null; then
2453
 
@@ -573,21 +682,27 @@
2454
 
        fi
2455
 
     done
2456
 
     exit_success
2457
 
 }
2458
 
 
2459
 
 defapp_kde()
2460
 
 {
2461
 
     MIME="$1"
2462
 
-    ktradertest=`which ktradertest 2> /dev/null`
2463
 
-    if [ -n "$ktradertest" ] ; then
2464
 
-        DEBUG 1 "Running ktradertest \"$MIME\" Application"
2465
 
-        trader_result=`ktradertest "$MIME" Application 2>/dev/null | grep DesktopEntryPath \
2466
 
-            | head -n 1 | cut -d ':' -f 2 | cut -d \' -f 2`
2467
 
+    if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
2468
 
+        KTRADER=`which ktraderclient 2> /dev/null`
2469
 
+        MIMETYPE="--mimetype"
2470
 
+        SERVICETYPE="--servicetype"
2471
 
+    else
2472
 
+        KTRADER=`which ktradertest 2> /dev/null`
2473
 
+    fi
2474
 
+    if [ -n "$KTRADER" ] ; then
2475
 
+        DEBUG 1 "Running KDE trader query \"$MIME\" mimetype and \"Application\" servicetype"
2476
 
+        trader_result=`$KTRADER $MIMETYPE "$MIME" $SERVICETYPE Application 2>/dev/null \
2477
 
+            | grep DesktopEntryPath | head -n 1 | cut -d ':' -f 2 | cut -d \' -f 2`
2478
 
         if [ -n "$trader_result" ] ; then
2479
 
             basename "$trader_result"
2480
 
             exit_success
2481
 
         else
2482
 
             exit_failure_operation_failed
2483
 
         fi
2484
 
     else
2485
 
         defapp_generic "$1"
2486
 
@@ -608,40 +723,40 @@
2487
 
 
2488
 
   uninstall)
2489
 
     action=uninstall
2490
 
     ;;
2491
 
 
2492
 
   query)
2493
 
     shift
2494
 
 
2495
 
-    if [ -z "$1" ] ; then 
2496
 
+    if [ -z "$1" ] ; then
2497
 
         exit_failure_syntax "query type argument missing"
2498
 
     fi
2499
 
-    
2500
 
+
2501
 
     case $1 in
2502
 
       filetype)
2503
 
         action=info
2504
 
 
2505
 
         filename="$2"
2506
 
-        if [ -z "$filename" ] ; then 
2507
 
+        if [ -z "$filename" ] ; then
2508
 
             exit_failure_syntax "FILE argument missing"
2509
 
         fi
2510
 
         case $filename in
2511
 
           -*)
2512
 
             exit_failure_syntax "unexpected option '$filename'"
2513
 
             ;;
2514
 
         esac
2515
 
         check_input_file "$filename"
2516
 
         ;;
2517
 
 
2518
 
       default)
2519
 
         action=defapp
2520
 
         mimetype="$2"
2521
 
-        if [ -z "$mimetype" ] ; then 
2522
 
+        if [ -z "$mimetype" ] ; then
2523
 
             exit_failure_syntax "mimetype argument missing"
2524
 
         fi
2525
 
         case $mimetype in
2526
 
           -*)
2527
 
             exit_failure_syntax "unexpected option '$mimetype'"
2528
 
             ;;
2529
 
 
2530
 
           */*)
2531
 
@@ -659,17 +774,17 @@
2532
 
       ;;
2533
 
     esac
2534
 
     ;;
2535
 
 
2536
 
   default)
2537
 
     action=makedefault
2538
 
     shift
2539
 
 
2540
 
-    if [ -z "$1" ] ; then 
2541
 
+    if [ -z "$1" ] ; then
2542
 
         exit_failure_syntax "application argument missing"
2543
 
     fi
2544
 
     case $1 in
2545
 
       -*)
2546
 
         exit_failure_syntax "unexpected option '$1'"
2547
 
         ;;
2548
 
 
2549
 
       *.desktop)
2550
 
@@ -686,29 +801,29 @@
2551
 
   exit_failure_syntax "unknown command '$1'"
2552
 
   ;;
2553
 
 esac
2554
 
 
2555
 
 shift
2556
 
 
2557
 
 
2558
 
 if [ "$action" = "makedefault" ]; then
2559
 
-    if [ -z "$1" ] ; then 
2560
 
+    if [ -z "$1" ] ; then
2561
 
         exit_failure_syntax "mimetype argument missing"
2562
 
     fi
2563
 
 
2564
 
     while [ $# -gt 0 ] ; do
2565
 
         case $1 in
2566
 
           -*)
2567
 
             exit_failure_syntax "unexpected option '$1'"
2568
 
             ;;
2569
 
         esac
2570
 
         mimetype="$1"
2571
 
         shift
2572
 
-        
2573
 
+
2574
 
         make_default_kde "$filename" "$mimetype"
2575
 
         make_default_generic "$filename" "$mimetype"
2576
 
     done
2577
 
     exit_success
2578
 
 fi
2579
 
 
2580
 
 if [ "$action" = "info" ]; then
2581
 
     detectDE
2582
 
@@ -763,17 +878,17 @@
2583
 
         case "$1" in
2584
 
           user)
2585
 
             mode="user"
2586
 
             ;;
2587
 
 
2588
 
           system)
2589
 
             mode="system"
2590
 
             ;;
2591
 
-            
2592
 
+
2593
 
           *)
2594
 
             exit_failure_syntax "unknown mode '$1'"
2595
 
             ;;
2596
 
         esac
2597
 
         shift
2598
 
         ;;
2599
 
 
2600
 
       --novendor)
2601
 
@@ -894,34 +1009,34 @@
2602
 
 
2603
 
 mimetypes=
2604
 
 if [ -n "$kde_dir" ] ; then
2605
 
     DEBUG 2 "KDE3 mimelnk directory found, extracting mimetypes from XML file"
2606
 
 
2607
 
     mimetypes=`awk < "$filename" '
2608
 
 # Strip XML comments
2609
 
 BEGIN {
2610
 
- supress=0
2611
 
+ suppress=0
2612
 
 }
2613
 
 {
2614
 
- do 
2615
 
-    if (supress) {
2616
 
+ do
2617
 
+    if (suppress) {
2618
 
        if (match($0,/-->/)) {
2619
 
            $0=substr($0,RSTART+RLENGTH)
2620
 
-           supress=0
2621
 
+           suppress=0
2622
 
        }
2623
 
        else {
2624
 
            break
2625
 
        }
2626
 
     }
2627
 
     else {
2628
 
        if (match($0,/<!--/)) {
2629
 
            if (RSTART>1) print substr($0,0,RSTART)
2630
 
            $0=substr($0,RSTART+RLENGTH)
2631
 
-           supress=1
2632
 
+           suppress=1
2633
 
        }
2634
 
        else {
2635
 
            if ($0) print $0
2636
 
            break
2637
 
        }
2638
 
     }
2639
 
  while(1)
2640
 
 }
2641
 
@@ -932,67 +1047,67 @@
2642
 
 }
2643
 
 /^mime-info/, /^\/mime-info/ {
2644
 
   if (match($0,/^mime-type/)) {
2645
 
     if (match($0,/type="[^"]*/) || match($0,/type='"'"'[^'"'"']*/)) {
2646
 
       print substr($0,RSTART+6,RLENGTH-6)
2647
 
     }
2648
 
   }
2649
 
 }'`
2650
 
-fi  
2651
 
+fi
2652
 
 
2653
 
 DEBUG 1 "$action mimetype in $xdg_dir"
2654
 
 
2655
 
 case $action in
2656
 
     install)
2657
 
         save_umask=`umask`
2658
 
         umask $my_umask
2659
 
 
2660
 
         for x in $xdg_dir ; do
2661
 
             mkdir -p $x
2662
 
             eval 'cp $filename $x/$basefile'$xdg_redirect_output
2663
 
         done
2664
 
 
2665
 
         if [ -n "$mimetypes" ] ; then
2666
 
             # No quotes around $mimetypes
2667
 
-            for x in $mimetypes ; do 
2668
 
+            for x in $mimetypes ; do
2669
 
                 DEBUG 1 "Installing $kde_dir/$x.desktop (KDE 3.x support)"
2670
 
                 mkdir -p `dirname $kde_dir/$x.desktop`
2671
 
                 awk < "$filename" '
2672
 
 # Strip XML comments
2673
 
 BEGIN {
2674
 
- supress=0
2675
 
+ suppress=0
2676
 
 }
2677
 
 {
2678
 
- do 
2679
 
-    if (supress) {
2680
 
+ do
2681
 
+    if (suppress) {
2682
 
        if (match($0,/-->/)) {
2683
 
            $0=substr($0,RSTART+RLENGTH)
2684
 
-           supress=0
2685
 
+           suppress=0
2686
 
        }
2687
 
        else {
2688
 
            break
2689
 
        }
2690
 
     }
2691
 
     else {
2692
 
        if (match($0,/<!--/)) {
2693
 
            if (RSTART>1) print substr($0,0,RSTART)
2694
 
            $0=substr($0,RSTART+RLENGTH)
2695
 
-           supress=1
2696
 
+           suppress=1
2697
 
        }
2698
 
        else {
2699
 
            if ($0) print $0
2700
 
            break
2701
 
        }
2702
 
     }
2703
 
  while(1)
2704
 
 }
2705
 
 ' | awk > $kde_dir/$x.desktop '
2706
 
 # Extract mimetype $x from the XML file $filename
2707
 
-# Note that bash requires us to escape a single quote as '"'"' 
2708
 
+# Note that bash requires us to escape a single quote as '"'"'
2709
 
 BEGIN {
2710
 
   the_type=ARGV[1]
2711
 
   the_source=ARGV[2]
2712
 
   ARGC=1
2713
 
   RS="<"
2714
 
   found=0
2715
 
   glob_patterns=""
2716
 
 }
2717
 
@@ -1002,47 +1117,47 @@
2718
 
       if (substr($0,RSTART+6,RLENGTH-6) == the_type) {
2719
 
         found=1
2720
 
         print "[Desktop Entry]"
2721
 
         print "# Installed by xdg-mime from " the_source
2722
 
         print "Type=MimeType"
2723
 
         print "MimeType=" the_type
2724
 
         the_icon=the_type
2725
 
         sub("/", "-", the_icon)
2726
 
-        print "Icon=" the_icon 
2727
 
+        print "Icon=" the_icon
2728
 
       }
2729
 
     }
2730
 
   }
2731
 
   else if (found) {
2732
 
     if (match($0,/^\/mime-type/)) {
2733
 
       if (glob_patterns)
2734
 
          print "Patterns=" glob_patterns
2735
 
       exit 0
2736
 
     }
2737
 
 
2738
 
     if (match($0,/^sub-class-of/)) {
2739
 
-      if (match($0,/type="[^"]*/) || match($0,/type='"'"'[^'"'"']*/)) {    
2740
 
+      if (match($0,/type="[^"]*/) || match($0,/type='"'"'[^'"'"']*/)) {
2741
 
         print "X-KDE-IsAlso=" substr($0,RSTART+6,RLENGTH-6)
2742
 
       }
2743
 
       else {
2744
 
         print "Error: '"'"'type'"'"' argument missing in " RS $0
2745
 
-        exit 1 
2746
 
+        exit 1
2747
 
       }
2748
 
     }
2749
 
     if (match($0,/^glob/)) {
2750
 
-      if (match($0,/pattern="[^"]*/) || match($0,/pattern='"'"'[^'"'"']*/)) {    
2751
 
+      if (match($0,/pattern="[^"]*/) || match($0,/pattern='"'"'[^'"'"']*/)) {
2752
 
         glob_patterns = glob_patterns substr($0,RSTART+9,RLENGTH-9) ";"
2753
 
       }
2754
 
       else {
2755
 
         print "Error: '"'"'pattern'"'"' argument missing in " RS $0
2756
 
-        exit 1 
2757
 
+        exit 1
2758
 
       }
2759
 
     }
2760
 
     if (match($0,/^comment/)) {
2761
 
-      if (match($0,/xml:lang="[^"]*/) || match($0,/xml:lang='"'"'[^'"'"']*/)) {    
2762
 
+      if (match($0,/xml:lang="[^"]*/) || match($0,/xml:lang='"'"'[^'"'"']*/)) {
2763
 
         lang=substr($0,RSTART+10,RLENGTH-10)
2764
 
       }
2765
 
       else {
2766
 
         lang=""
2767
 
       }
2768
 
       if (match($0,/>/)) {
2769
 
         comment=substr($0,RSTART+1)
2770
 
         sub("&lt;", "<", comment)
2771
 
@@ -1061,31 +1176,31 @@
2772
 
     print "Error: Mimetype '"'"'" the_type "'"'"' not found"
2773
 
     exit 1
2774
 
   }
2775
 
 }
2776
 
 ' $x $basefile
2777
 
                 if [ "$?" = "1" ] ; then
2778
 
                     grep -A 10 "^Error:" $kde_dir/$x.desktop >&2
2779
 
                     rm $kde_dir/$x.desktop
2780
 
-                    exit 1  
2781
 
+                    exit 1
2782
 
                 fi
2783
 
             done
2784
 
         fi
2785
 
 
2786
 
         umask $save_umask
2787
 
         ;;
2788
 
 
2789
 
     uninstall)
2790
 
         for x in $xdg_dir ; do
2791
 
             rm -f $x/$basefile
2792
 
         done
2793
 
 
2794
 
         # No quotes around $mimetypes
2795
 
-        for x in $mimetypes ; do 
2796
 
+        for x in $mimetypes ; do
2797
 
             if grep '^# Installed by xdg-mime' $kde_dir/$x.desktop >/dev/null 2>&1; then
2798
 
                 DEBUG 1 "Removing $kde_dir/$x.desktop (KDE 3.x support)"
2799
 
                 rm -f $kde_dir/$x.desktop
2800
 
             fi
2801
 
         done
2802
 
         ;;
2803
 
 esac
2804
 
 
2805
 
Index: src/third_party/xdg-utils/scripts/xdg-mime.in
2806
 
===================================================================
2807
 
--- src.orig/third_party/xdg-utils/scripts/xdg-mime.in
2808
 
+++ src/third_party/xdg-utils/scripts/xdg-mime.in
2809
 
@@ -29,105 +29,213 @@
2810
 
 #@xdg-utils-common@
2811
 
 
2812
 
 update_mime_database()
2813
 
 {
2814
 
    if [ x"$mode" = x"user" -a -n "$DISPLAY" ] ; then
2815
 
       detectDE
2816
 
       if [ x"$DE" = x"kde" ] ; then
2817
 
          DEBUG 1 "Running kbuildsycoca"
2818
 
-         eval 'kbuildsycoca'$xdg_redirect_output
2819
 
+         if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
2820
 
+             eval 'kbuildsycoca4'$xdg_redirect_output
2821
 
+         else
2822
 
+             eval 'kbuildsycoca'$xdg_redirect_output
2823
 
+         fi
2824
 
       fi
2825
 
    fi
2826
 
    for x in `echo "$PATH:/opt/gnome/bin" | sed 's/:/ /g'`; do
2827
 
       if [ -x $x/update-mime-database ] ; then
2828
 
          DEBUG 1 "Running $x/update-mime-database $1"
2829
 
          eval '$x/update-mime-database $1'$xdg_redirect_output
2830
 
          return
2831
 
       fi
2832
 
    done
2833
 
 }
2834
 
 
2835
 
 info_kde()
2836
 
 {
2837
 
-    if which "kmimetypefinder" > /dev/null 2>/dev/null; then
2838
 
+    if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
2839
 
         DEBUG 1 "Running kmimetypefinder \"$1\""
2840
 
-        kmimetypefinder "$1" 2>/dev/null | head -n 1
2841
 
+        KMIMETYPEFINDER=`which kmimetypefinder 2>/dev/null`
2842
 
+        $KMIMETYPEFINDER "$1" 2>/dev/null | head -n 1
2843
 
     else
2844
 
         DEBUG 1 "Running kfile \"$1\""
2845
 
-        kfile "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1
2846
 
+        KFILE=`which kfile 2>/dev/null`
2847
 
+        $KFILE "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1
2848
 
     fi
2849
 
 
2850
 
-    exit_success
2851
 
+    if [ $? -eq 0 ]; then
2852
 
+        exit_success
2853
 
+    else
2854
 
+        exit_failure_operation_failed
2855
 
+    fi
2856
 
 }
2857
 
 
2858
 
 info_gnome()
2859
 
 {
2860
 
     file=`readlink -f "$1"` # Normalize path
2861
 
-    DEBUG 1 "Running gnomevfs-info \"$file\""
2862
 
-    gnomevfs-info "$file" 2> /dev/null | grep MIME | cut -d ":" -f 2 | sed s/"^ "//
2863
 
 
2864
 
-    exit_success
2865
 
+    if gvfs-info --help 2>/dev/null 1>&2; then
2866
 
+        DEBUG 1 "Running gvfs-info \"$file\""
2867
 
+        gvfs-info "$file" 2> /dev/null | grep standard::content-type | cut -d' ' -f4
2868
 
+    else
2869
 
+       DEBUG 1 "Running gnomevfs-info \"$file\""
2870
 
+       gnomevfs-info --slow-mime "$file" 2> /dev/null | grep "^MIME" | cut -d ":" -f 2 | sed s/"^ "//
2871
 
+    fi
2872
 
+
2873
 
+    if [ $? -eq 0 ]; then
2874
 
+        exit_success
2875
 
+    else
2876
 
+        exit_failure_operation_failed
2877
 
+    fi
2878
 
 }
2879
 
 
2880
 
 info_generic()
2881
 
 {
2882
 
-    DEBUG 1 "Running /usr/bin/file -i \"$1\"" 
2883
 
+    DEBUG 1 "Running file -i \"$1\""
2884
 
     /usr/bin/file -i "$1" 2> /dev/null | cut -d ":" -f 2 | sed s/"^ "//
2885
 
 
2886
 
-    exit_success
2887
 
+    if [ $? -eq 0 ]; then
2888
 
+        exit_success
2889
 
+    else
2890
 
+        exit_failure_operation_failed
2891
 
+    fi
2892
 
 }
2893
 
 
2894
 
 make_default_kde()
2895
 
 {
2896
 
     # $1 is vendor-name.desktop
2897
 
-    # $2 is mime/type 
2898
 
-    # Add to $KDE_HOME/share/config/profilerc:
2899
 
+    # $2 is mime/type
2900
 
+    #
2901
 
+    # On KDE 3, add to $KDE_CONFIG_PATH/profilerc:
2902
 
     # [$2 - 1]
2903
 
     # Application=$1
2904
 
     #
2905
 
     # Remove all [$2 - *] sections, or even better,
2906
 
     # renumber [$2 - *] sections and remove duplicate
2907
 
-    
2908
 
-    default_file="$HOME/.kde/share/config/profilerc"
2909
 
-    DEBUG 2 "make_default_kde $1 $2"
2910
 
+    #
2911
 
+    # On KDE 4, add $2=$1 to $XDG_DATA_APPS/mimeapps.list
2912
 
+    #
2913
 
+    # Example file:
2914
 
+    #
2915
 
+    # [Added Associations]
2916
 
+    # text/plain=kde4-kate.desktop;kde4-kwrite.desktop;
2917
 
+    #
2918
 
+    # [Removed Associations]
2919
 
+    # text/plain=gnome-gedit.desktop;gnu-emacs.desktop;
2920
 
+    vendor="$1"
2921
 
+    mimetype="$2"
2922
 
+    if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
2923
 
+        default_dir=`kde4-config --path xdgdata-apps 2> /dev/null | cut -d ':' -f 1`
2924
 
+        default_file="$default_dir/mimeapps.list"
2925
 
+    else
2926
 
+        default_dir=`kde-config --path config 2> /dev/null | cut -d ':' -f 1`
2927
 
+        default_file="$default_dir/profilerc"
2928
 
+    fi
2929
 
+    if [ -z "$default_dir" ]; then
2930
 
+        DEBUG 2 "make_default_kde: No kde runtime detected"
2931
 
+        return
2932
 
+    fi
2933
 
+    DEBUG 2 "make_default_kde $vendor $mimetype"
2934
 
     DEBUG 1 "Updating $default_file"
2935
 
-    mkdir -p "$HOME/.kde/share/config"
2936
 
+    mkdir -p "$default_dir"
2937
 
     [ -f $default_file ] || touch $default_file
2938
 
-    awk -v application="$1" -v mimetype="$2" '
2939
 
+    if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
2940
 
+        [ -f $default_file ] || touch $default_file
2941
 
+        awk -v application="$vendor" -v mimetype="$mimetype" '
2942
 
+    BEGIN {
2943
 
+        prefix=mimetype "="
2944
 
+        associations=0
2945
 
+        found=0
2946
 
+        blanks=0
2947
 
+    }
2948
 
+    {
2949
 
+        suppress=0
2950
 
+        if (index($0, "[Added Associations]") == 1) {
2951
 
+            associations=1
2952
 
+        } else if (index($0, "[") == 1) {
2953
 
+            if (associations && !found) {
2954
 
+                print prefix application
2955
 
+                found=1
2956
 
+            }
2957
 
+            associations=0
2958
 
+        } else if ($0 == "") {
2959
 
+            blanks++
2960
 
+            suppress=1
2961
 
+        } else if (associations && index($0, prefix) == 1) {
2962
 
+            value=substr($0, length(prefix) + 1, length)
2963
 
+            split(value, apps, ";")
2964
 
+            value=application ";"
2965
 
+            count=0
2966
 
+            for (i in apps) {
2967
 
+              count++
2968
 
+            }
2969
 
+            for (i=0; i < count; i++) {
2970
 
+                if (apps[i] != application && apps[i] != "") {
2971
 
+                    value=value apps[i] ";"
2972
 
+                }
2973
 
+            }
2974
 
+            $0=prefix value
2975
 
+            found=1
2976
 
+        }
2977
 
+        if (!suppress) {
2978
 
+            while (blanks > 0) {
2979
 
+                print ""
2980
 
+                blanks--
2981
 
+            }
2982
 
+            print $0
2983
 
+        }
2984
 
+    }
2985
 
+    END {
2986
 
+        if (!found) {
2987
 
+            if (!associations) {
2988
 
+                print "[Added Associations]"
2989
 
+            }
2990
 
+            print prefix application
2991
 
+        }
2992
 
+        while (blanks > 0) {
2993
 
+            print ""
2994
 
+            blanks--
2995
 
+        }
2996
 
+    }
2997
 
+' $default_file > ${default_file}.new && mv ${default_file}.new $default_file
2998
 
+        eval 'kbuildsycoca4'$xdg_redirect_output
2999
 
+    else
3000
 
+        awk -v application="$vendor" -v mimetype="$mimetype" '
3001
 
     BEGIN {
3002
 
         header_start="[" mimetype " - "
3003
 
-        supress=0
3004
 
+        suppress=0
3005
 
     }
3006
 
-    {  
3007
 
+    {
3008
 
         if (index($0, header_start) == 1 )
3009
 
-            supress=1
3010
 
+            suppress=1
3011
 
         else
3012
 
-            if (/^\[/) { supress=0 }
3013
 
+            if (/^\[/) { suppress=0 }
3014
 
 
3015
 
-        if (!supress) {
3016
 
+        if (!suppress) {
3017
 
             print $0
3018
 
         }
3019
 
     }
3020
 
     END {
3021
 
-        print "" 
3022
 
+        print ""
3023
 
         print "[" mimetype " - 1]"
3024
 
         print "Application=" application
3025
 
         print "AllowAsDefault=true"
3026
 
         print "GenericServiceType=Application"
3027
 
         print "Preference=1"
3028
 
         print "ServiceType=" mimetype
3029
 
     }
3030
 
 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file
3031
 
+    fi
3032
 
 }
3033
 
 
3034
 
 make_default_generic()
3035
 
 {
3036
 
     # $1 is vendor-name.desktop
3037
 
-    # $2 is mime/type 
3038
 
+    # $2 is mime/type
3039
 
     # Add $2=$1 to XDG_DATA_HOME/applications/defaults.list
3040
 
     xdg_user_dir="$XDG_DATA_HOME"
3041
 
     [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share"
3042
 
     default_file="$xdg_user_dir/applications/defaults.list"
3043
 
     DEBUG 2 "make_default_generic $1 $2"
3044
 
     DEBUG 1 "Updating $default_file"
3045
 
     grep -v "$2=" $default_file > ${default_file}.new 2> /dev/null
3046
 
     if ! grep "[Default Applications]" ${default_file}.new > /dev/null; then
3047
 
@@ -155,21 +263,27 @@
3048
 
        fi
3049
 
     done
3050
 
     exit_success
3051
 
 }
3052
 
 
3053
 
 defapp_kde()
3054
 
 {
3055
 
     MIME="$1"
3056
 
-    ktradertest=`which ktradertest 2> /dev/null`
3057
 
-    if [ -n "$ktradertest" ] ; then
3058
 
-        DEBUG 1 "Running ktradertest \"$MIME\" Application"
3059
 
-        trader_result=`ktradertest "$MIME" Application 2>/dev/null | grep DesktopEntryPath \
3060
 
-            | head -n 1 | cut -d ':' -f 2 | cut -d \' -f 2`
3061
 
+    if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
3062
 
+        KTRADER=`which ktraderclient 2> /dev/null`
3063
 
+        MIMETYPE="--mimetype"
3064
 
+        SERVICETYPE="--servicetype"
3065
 
+    else
3066
 
+        KTRADER=`which ktradertest 2> /dev/null`
3067
 
+    fi
3068
 
+    if [ -n "$KTRADER" ] ; then
3069
 
+        DEBUG 1 "Running KDE trader query \"$MIME\" mimetype and \"Application\" servicetype"
3070
 
+        trader_result=`$KTRADER $MIMETYPE "$MIME" $SERVICETYPE Application 2>/dev/null \
3071
 
+            | grep DesktopEntryPath | head -n 1 | cut -d ':' -f 2 | cut -d \' -f 2`
3072
 
         if [ -n "$trader_result" ] ; then
3073
 
             basename "$trader_result"
3074
 
             exit_success
3075
 
         else
3076
 
             exit_failure_operation_failed
3077
 
         fi
3078
 
     else
3079
 
         defapp_generic "$1"
3080
 
@@ -190,40 +304,40 @@
3081
 
 
3082
 
   uninstall)
3083
 
     action=uninstall
3084
 
     ;;
3085
 
 
3086
 
   query)
3087
 
     shift
3088
 
 
3089
 
-    if [ -z "$1" ] ; then 
3090
 
+    if [ -z "$1" ] ; then
3091
 
         exit_failure_syntax "query type argument missing"
3092
 
     fi
3093
 
-    
3094
 
+
3095
 
     case $1 in
3096
 
       filetype)
3097
 
         action=info
3098
 
 
3099
 
         filename="$2"
3100
 
-        if [ -z "$filename" ] ; then 
3101
 
+        if [ -z "$filename" ] ; then
3102
 
             exit_failure_syntax "FILE argument missing"
3103
 
         fi
3104
 
         case $filename in
3105
 
           -*)
3106
 
             exit_failure_syntax "unexpected option '$filename'"
3107
 
             ;;
3108
 
         esac
3109
 
         check_input_file "$filename"
3110
 
         ;;
3111
 
 
3112
 
       default)
3113
 
         action=defapp
3114
 
         mimetype="$2"
3115
 
-        if [ -z "$mimetype" ] ; then 
3116
 
+        if [ -z "$mimetype" ] ; then
3117
 
             exit_failure_syntax "mimetype argument missing"
3118
 
         fi
3119
 
         case $mimetype in
3120
 
           -*)
3121
 
             exit_failure_syntax "unexpected option '$mimetype'"
3122
 
             ;;
3123
 
 
3124
 
           */*)
3125
 
@@ -241,17 +355,17 @@
3126
 
       ;;
3127
 
     esac
3128
 
     ;;
3129
 
 
3130
 
   default)
3131
 
     action=makedefault
3132
 
     shift
3133
 
 
3134
 
-    if [ -z "$1" ] ; then 
3135
 
+    if [ -z "$1" ] ; then
3136
 
         exit_failure_syntax "application argument missing"
3137
 
     fi
3138
 
     case $1 in
3139
 
       -*)
3140
 
         exit_failure_syntax "unexpected option '$1'"
3141
 
         ;;
3142
 
 
3143
 
       *.desktop)
3144
 
@@ -268,29 +382,29 @@
3145
 
   exit_failure_syntax "unknown command '$1'"
3146
 
   ;;
3147
 
 esac
3148
 
 
3149
 
 shift
3150
 
 
3151
 
 
3152
 
 if [ "$action" = "makedefault" ]; then
3153
 
-    if [ -z "$1" ] ; then 
3154
 
+    if [ -z "$1" ] ; then
3155
 
         exit_failure_syntax "mimetype argument missing"
3156
 
     fi
3157
 
 
3158
 
     while [ $# -gt 0 ] ; do
3159
 
         case $1 in
3160
 
           -*)
3161
 
             exit_failure_syntax "unexpected option '$1'"
3162
 
             ;;
3163
 
         esac
3164
 
         mimetype="$1"
3165
 
         shift
3166
 
-        
3167
 
+
3168
 
         make_default_kde "$filename" "$mimetype"
3169
 
         make_default_generic "$filename" "$mimetype"
3170
 
     done
3171
 
     exit_success
3172
 
 fi
3173
 
 
3174
 
 if [ "$action" = "info" ]; then
3175
 
     detectDE
3176
 
@@ -345,17 +459,17 @@
3177
 
         case "$1" in
3178
 
           user)
3179
 
             mode="user"
3180
 
             ;;
3181
 
 
3182
 
           system)
3183
 
             mode="system"
3184
 
             ;;
3185
 
-            
3186
 
+
3187
 
           *)
3188
 
             exit_failure_syntax "unknown mode '$1'"
3189
 
             ;;
3190
 
         esac
3191
 
         shift
3192
 
         ;;
3193
 
 
3194
 
       --novendor)
3195
 
@@ -476,34 +590,34 @@
3196
 
 
3197
 
 mimetypes=
3198
 
 if [ -n "$kde_dir" ] ; then
3199
 
     DEBUG 2 "KDE3 mimelnk directory found, extracting mimetypes from XML file"
3200
 
 
3201
 
     mimetypes=`awk < "$filename" '
3202
 
 # Strip XML comments
3203
 
 BEGIN {
3204
 
- supress=0
3205
 
+ suppress=0
3206
 
 }
3207
 
 {
3208
 
- do 
3209
 
-    if (supress) {
3210
 
+ do
3211
 
+    if (suppress) {
3212
 
        if (match($0,/-->/)) {
3213
 
            $0=substr($0,RSTART+RLENGTH)
3214
 
-           supress=0
3215
 
+           suppress=0
3216
 
        }
3217
 
        else {
3218
 
            break
3219
 
        }
3220
 
     }
3221
 
     else {
3222
 
        if (match($0,/<!--/)) {
3223
 
            if (RSTART>1) print substr($0,0,RSTART)
3224
 
            $0=substr($0,RSTART+RLENGTH)
3225
 
-           supress=1
3226
 
+           suppress=1
3227
 
        }
3228
 
        else {
3229
 
            if ($0) print $0
3230
 
            break
3231
 
        }
3232
 
     }
3233
 
  while(1)
3234
 
 }
3235
 
@@ -514,67 +628,67 @@
3236
 
 }
3237
 
 /^mime-info/, /^\/mime-info/ {
3238
 
   if (match($0,/^mime-type/)) {
3239
 
     if (match($0,/type="[^"]*/) || match($0,/type='"'"'[^'"'"']*/)) {
3240
 
       print substr($0,RSTART+6,RLENGTH-6)
3241
 
     }
3242
 
   }
3243
 
 }'`
3244
 
-fi  
3245
 
+fi
3246
 
 
3247
 
 DEBUG 1 "$action mimetype in $xdg_dir"
3248
 
 
3249
 
 case $action in
3250
 
     install)
3251
 
         save_umask=`umask`
3252
 
         umask $my_umask
3253
 
 
3254
 
         for x in $xdg_dir ; do
3255
 
             mkdir -p $x
3256
 
             eval 'cp $filename $x/$basefile'$xdg_redirect_output
3257
 
         done
3258
 
 
3259
 
         if [ -n "$mimetypes" ] ; then
3260
 
             # No quotes around $mimetypes
3261
 
-            for x in $mimetypes ; do 
3262
 
+            for x in $mimetypes ; do
3263
 
                 DEBUG 1 "Installing $kde_dir/$x.desktop (KDE 3.x support)"
3264
 
                 mkdir -p `dirname $kde_dir/$x.desktop`
3265
 
                 awk < "$filename" '
3266
 
 # Strip XML comments
3267
 
 BEGIN {
3268
 
- supress=0
3269
 
+ suppress=0
3270
 
 }
3271
 
 {
3272
 
- do 
3273
 
-    if (supress) {
3274
 
+ do
3275
 
+    if (suppress) {
3276
 
        if (match($0,/-->/)) {
3277
 
            $0=substr($0,RSTART+RLENGTH)
3278
 
-           supress=0
3279
 
+           suppress=0
3280
 
        }
3281
 
        else {
3282
 
            break
3283
 
        }
3284
 
     }
3285
 
     else {
3286
 
        if (match($0,/<!--/)) {
3287
 
            if (RSTART>1) print substr($0,0,RSTART)
3288
 
            $0=substr($0,RSTART+RLENGTH)
3289
 
-           supress=1
3290
 
+           suppress=1
3291
 
        }
3292
 
        else {
3293
 
            if ($0) print $0
3294
 
            break
3295
 
        }
3296
 
     }
3297
 
  while(1)
3298
 
 }
3299
 
 ' | awk > $kde_dir/$x.desktop '
3300
 
 # Extract mimetype $x from the XML file $filename
3301
 
-# Note that bash requires us to escape a single quote as '"'"' 
3302
 
+# Note that bash requires us to escape a single quote as '"'"'
3303
 
 BEGIN {
3304
 
   the_type=ARGV[1]
3305
 
   the_source=ARGV[2]
3306
 
   ARGC=1
3307
 
   RS="<"
3308
 
   found=0
3309
 
   glob_patterns=""
3310
 
 }
3311
 
@@ -584,47 +698,47 @@
3312
 
       if (substr($0,RSTART+6,RLENGTH-6) == the_type) {
3313
 
         found=1
3314
 
         print "[Desktop Entry]"
3315
 
         print "# Installed by xdg-mime from " the_source
3316
 
         print "Type=MimeType"
3317
 
         print "MimeType=" the_type
3318
 
         the_icon=the_type
3319
 
         sub("/", "-", the_icon)
3320
 
-        print "Icon=" the_icon 
3321
 
+        print "Icon=" the_icon
3322
 
       }
3323
 
     }
3324
 
   }
3325
 
   else if (found) {
3326
 
     if (match($0,/^\/mime-type/)) {
3327
 
       if (glob_patterns)
3328
 
          print "Patterns=" glob_patterns
3329
 
       exit 0
3330
 
     }
3331
 
 
3332
 
     if (match($0,/^sub-class-of/)) {
3333
 
-      if (match($0,/type="[^"]*/) || match($0,/type='"'"'[^'"'"']*/)) {    
3334
 
+      if (match($0,/type="[^"]*/) || match($0,/type='"'"'[^'"'"']*/)) {
3335
 
         print "X-KDE-IsAlso=" substr($0,RSTART+6,RLENGTH-6)
3336
 
       }
3337
 
       else {
3338
 
         print "Error: '"'"'type'"'"' argument missing in " RS $0
3339
 
-        exit 1 
3340
 
+        exit 1
3341
 
       }
3342
 
     }
3343
 
     if (match($0,/^glob/)) {
3344
 
-      if (match($0,/pattern="[^"]*/) || match($0,/pattern='"'"'[^'"'"']*/)) {    
3345
 
+      if (match($0,/pattern="[^"]*/) || match($0,/pattern='"'"'[^'"'"']*/)) {
3346
 
         glob_patterns = glob_patterns substr($0,RSTART+9,RLENGTH-9) ";"
3347
 
       }
3348
 
       else {
3349
 
         print "Error: '"'"'pattern'"'"' argument missing in " RS $0
3350
 
-        exit 1 
3351
 
+        exit 1
3352
 
       }
3353
 
     }
3354
 
     if (match($0,/^comment/)) {
3355
 
-      if (match($0,/xml:lang="[^"]*/) || match($0,/xml:lang='"'"'[^'"'"']*/)) {    
3356
 
+      if (match($0,/xml:lang="[^"]*/) || match($0,/xml:lang='"'"'[^'"'"']*/)) {
3357
 
         lang=substr($0,RSTART+10,RLENGTH-10)
3358
 
       }
3359
 
       else {
3360
 
         lang=""
3361
 
       }
3362
 
       if (match($0,/>/)) {
3363
 
         comment=substr($0,RSTART+1)
3364
 
         sub("&lt;", "<", comment)
3365
 
@@ -643,31 +757,31 @@
3366
 
     print "Error: Mimetype '"'"'" the_type "'"'"' not found"
3367
 
     exit 1
3368
 
   }
3369
 
 }
3370
 
 ' $x $basefile
3371
 
                 if [ "$?" = "1" ] ; then
3372
 
                     grep -A 10 "^Error:" $kde_dir/$x.desktop >&2
3373
 
                     rm $kde_dir/$x.desktop
3374
 
-                    exit 1  
3375
 
+                    exit 1
3376
 
                 fi
3377
 
             done
3378
 
         fi
3379
 
 
3380
 
         umask $save_umask
3381
 
         ;;
3382
 
 
3383
 
     uninstall)
3384
 
         for x in $xdg_dir ; do
3385
 
             rm -f $x/$basefile
3386
 
         done
3387
 
 
3388
 
         # No quotes around $mimetypes
3389
 
-        for x in $mimetypes ; do 
3390
 
+        for x in $mimetypes ; do
3391
 
             if grep '^# Installed by xdg-mime' $kde_dir/$x.desktop >/dev/null 2>&1; then
3392
 
                 DEBUG 1 "Removing $kde_dir/$x.desktop (KDE 3.x support)"
3393
 
                 rm -f $kde_dir/$x.desktop
3394
 
             fi
3395
 
         done
3396
 
         ;;
3397
 
 esac
3398
 
 
3399
 
Index: src/third_party/xdg-utils/scripts/xdg-open
3400
 
===================================================================
3401
 
--- src.orig/third_party/xdg-utils/scripts/xdg-open
3402
 
+++ src/third_party/xdg-utils/scripts/xdg-open
3403
 
@@ -1,9 +1,9 @@
3404
 
-#!/bin/bash
3405
 
+#!/bin/sh
3406
 
 #---------------------------------------------
3407
 
 #   xdg-open
3408
 
 #
3409
 
 #   Utility script to open a URL in the registered default application.
3410
 
 #
3411
 
 #   Refer to the usage() function below for usage.
3412
 
 #
3413
 
 #   Copyright 2006, Kevin Krammer <kevin.krammer@gmx.at>
3414
 
@@ -195,17 +195,17 @@
3415
 
     if [ $# -gt 0 ]; then
3416
 
         echo "xdg-open: $@" >&2
3417
 
     fi
3418
 
 
3419
 
     exit 5
3420
 
 }
3421
 
 
3422
 
 #------------------------------------------------------------
3423
 
-# Exit script on insufficient permission to read a specified file
3424
 
+# Exit script on insufficient permission to write a specified file
3425
 
 
3426
 
 exit_failure_file_permission_write()
3427
 
 {
3428
 
     if [ $# -gt 0 ]; then
3429
 
         echo "xdg-open: $@" >&2
3430
 
     fi
3431
 
 
3432
 
     exit 6
3433
 
@@ -272,17 +272,17 @@
3434
 
             ;;
3435
 
 
3436
 
             --manual)
3437
 
             manualpage
3438
 
             exit_success
3439
 
             ;;
3440
 
 
3441
 
             --version)
3442
 
-            echo "xdg-open 1.0.1"
3443
 
+            echo "xdg-open 1.0.2"
3444
 
             exit_success
3445
 
             ;;
3446
 
         esac
3447
 
     done
3448
 
 }
3449
 
 
3450
 
 check_common_commands "$@"
3451
 
 
3452
 
@@ -298,17 +298,18 @@
3453
 
 #--------------------------------------
3454
 
 # Checks for known desktop environments
3455
 
 # set variable DE to the desktop environments name, lowercase
3456
 
 
3457
 
 detectDE()
3458
 
 {
3459
 
     if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
3460
 
     elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
3461
 
-    elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
3462
 
+    elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
3463
 
+    elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
3464
 
     fi
3465
 
 }
3466
 
 
3467
 
 #----------------------------------------------------------------------------
3468
 
 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4
3469
 
 # It also always returns 1 in KDE 3.4 and earlier
3470
 
 # Simply return 0 in such case
3471
 
 
3472
 
@@ -319,31 +320,50 @@
3473
 
     minor=`echo $version | sed 's/KDE: [0-9]*\.\([0-9]\).*/\1/'`
3474
 
     release=`echo $version | sed 's/KDE: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'`
3475
 
     test "$major" -gt 3 && return $1
3476
 
     test "$minor" -gt 5 && return $1
3477
 
     test "$release" -gt 4 && return $1
3478
 
     return 0
3479
 
 }
3480
 
 
3481
 
+# This handles backslashes but not quote marks.
3482
 
+first_word()
3483
 
+{
3484
 
+    read first rest
3485
 
+    echo "$first"
3486
 
+}
3487
 
+
3488
 
 open_kde()
3489
 
 {
3490
 
-    kfmclient exec "$1"
3491
 
-    kfmclient_fix_exit_code $?
3492
 
+    if kde-open -v 2>/dev/null 1>&2; then
3493
 
+        kde-open "$1"
3494
 
+    else
3495
 
+        if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
3496
 
+            kfmclient openURL "$1"
3497
 
+        else
3498
 
+            kfmclient exec "$1"
3499
 
+            kfmclient_fix_exit_code $?
3500
 
+        fi
3501
 
+    fi
3502
 
 
3503
 
     if [ $? -eq 0 ]; then
3504
 
         exit_success
3505
 
     else
3506
 
         exit_failure_operation_failed
3507
 
     fi
3508
 
 }
3509
 
 
3510
 
 open_gnome()
3511
 
 {
3512
 
-    gnome-open "$1"
3513
 
+    if gvfs-open --help 2>/dev/null 1>&2; then
3514
 
+        gvfs-open "$1"
3515
 
+    else
3516
 
+        gnome-open "$1"
3517
 
+    fi
3518
 
 
3519
 
     if [ $? -eq 0 ]; then
3520
 
         exit_success
3521
 
     else
3522
 
         exit_failure_operation_failed
3523
 
     fi
3524
 
 }
3525
 
 
3526
 
@@ -353,48 +373,90 @@
3527
 
 
3528
 
     if [ $? -eq 0 ]; then
3529
 
         exit_success
3530
 
     else
3531
 
         exit_failure_operation_failed
3532
 
     fi
3533
 
 }
3534
 
 
3535
 
-open_generic()
3536
 
+open_generic_xdg_mime()
3537
 
 {
3538
 
-    if mimeopen -v 2>/dev/null 1>&2; then
3539
 
-        mimeopen -n "$1"
3540
 
-        if [ $? -eq 0 ]; then
3541
 
-            exit_success
3542
 
-        fi
3543
 
+    filetype=`xdg-mime query filetype "$1" | sed "s/;.*//"`
3544
 
+    default=`xdg-mime query default "$filetype"`
3545
 
+    if [ -n "$default" ] ; then
3546
 
+        xdg_user_dir="$XDG_DATA_HOME"
3547
 
+        [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share"
3548
 
+
3549
 
+        xdg_system_dirs="$XDG_DATA_DIRS"
3550
 
+        [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/
3551
 
+
3552
 
+        for x in `echo "$xdg_user_dir:$xdg_system_dirs" | sed 's/:/ /g'`; do
3553
 
+            file="$x/applications/$default"
3554
 
+            if [ -r "$file" ] ; then
3555
 
+                command="`grep -E "^Exec(\[[^]=]*])?=" "$file" | cut -d= -f 2- | first_word`"
3556
 
+                command_exec=`which $command 2>/dev/null`
3557
 
+                if [ -x "$command_exec" ] ; then
3558
 
+                    $command_exec "$1"
3559
 
+                    if [ $? -eq 0 ]; then
3560
 
+                        exit_success
3561
 
+                    fi
3562
 
+                fi
3563
 
+            fi
3564
 
+        done
3565
 
     fi
3566
 
+}
3567
 
 
3568
 
-    if which run-mailcap 2>/dev/null 1>&2 &&
3569
 
-       (echo "$1" | grep -q '^file://' ||
3570
 
+open_generic()
3571
 
+{
3572
 
+    # Paths or file:// URLs
3573
 
+    if (echo "$1" | grep -q '^file://' ||
3574
 
         ! echo "$1" | egrep -q '^[a-zA-Z+\.\-]+:'); then
3575
 
 
3576
 
         local file=$(echo "$1" | sed 's%^file://%%')
3577
 
-        run-mailcap --action=view "$file"
3578
 
-        if [ $? -eq 0 ]; then
3579
 
-            exit_success
3580
 
+
3581
 
+        # Decode URLs
3582
 
+        # TODO
3583
 
+
3584
 
+        check_input_file "$file"
3585
 
+
3586
 
+        open_generic_xdg_mime "$file"
3587
 
+
3588
 
+        if [ -f /etc/debian_version ] &&
3589
 
+            which run-mailcap 2>/dev/null 1>&2; then
3590
 
+            run-mailcap --action=view "$file"
3591
 
+            if [ $? -eq 0 ]; then
3592
 
+                exit_success
3593
 
+            fi
3594
 
+        fi
3595
 
+
3596
 
+        if mimeopen -v 2>/dev/null 1>&2; then
3597
 
+            mimeopen -L -n "$file"
3598
 
+            if [ $? -eq 0 ]; then
3599
 
+                exit_success
3600
 
+            fi
3601
 
         fi
3602
 
     fi
3603
 
 
3604
 
     IFS=":"
3605
 
     for browser in $BROWSER; do
3606
 
         if [ x"$browser" != x"" ]; then
3607
 
 
3608
 
-            IFS=' '
3609
 
-            browser_with_arg=${browser//'%s'/"$1"}
3610
 
+            browser_with_arg=`printf "$browser" "$1" 2>/dev/null`
3611
 
+            if [ $? -ne 0 ]; then
3612
 
+                browser_with_arg=$browser;
3613
 
+            fi
3614
 
 
3615
 
-            if [ x"$browser_with_arg" = x"$browser" ]; then "$browser" "$1";
3616
 
-            else $browser_with_arg;
3617
 
+            if [ x"$browser_with_arg" = x"$browser" ]; then
3618
 
+                "$browser" "$1";
3619
 
+            else eval '$browser_with_arg'$xdg_redirect_output;
3620
 
             fi
3621
 
 
3622
 
-            if [ $? -eq 0 ]; then exit_success;
3623
 
+            if [ $? -eq 0 ]; then
3624
 
+                exit_success;
3625
 
             fi
3626
 
         fi
3627
 
     done
3628
 
 
3629
 
     exit_failure_operation_impossible "no method available for opening '$1'"
3630
 
 }
3631
 
 
3632
 
 [ x"$1" != x"" ] || exit_failure_syntax
3633
 
@@ -420,23 +482,27 @@
3634
 
 
3635
 
 if [ -z "${url}" ] ; then
3636
 
     exit_failure_syntax "file or URL argument missing"
3637
 
 fi
3638
 
 
3639
 
 detectDE
3640
 
 
3641
 
 if [ x"$DE" = x"" ]; then
3642
 
-    # if BROWSER variable is not set, check some well known browsers instead
3643
 
-    if [ x"$BROWSER" = x"" ]; then
3644
 
-        BROWSER=firefox:mozilla:netscape
3645
 
-    fi
3646
 
     DE=generic
3647
 
 fi
3648
 
 
3649
 
+# if BROWSER variable is not set, check some well known browsers instead
3650
 
+if [ x"$BROWSER" = x"" ]; then
3651
 
+    BROWSER=links2:links:lynx:w3m
3652
 
+    if [ -n "$DISPLAY" ]; then
3653
 
+        BROWSER=firefox:mozilla:epiphany:konqueror:chromium-browser:google-chrome:$BROWSER
3654
 
+    fi
3655
 
+fi
3656
 
+
3657
 
 case "$DE" in
3658
 
     kde)
3659
 
     open_kde "$url"
3660
 
     ;;
3661
 
 
3662
 
     gnome)
3663
 
     open_gnome "$url"
3664
 
     ;;
3665
 
Index: src/third_party/xdg-utils/scripts/xdg-open.in
3666
 
===================================================================
3667
 
--- src.orig/third_party/xdg-utils/scripts/xdg-open.in
3668
 
+++ src/third_party/xdg-utils/scripts/xdg-open.in
3669
 
@@ -1,9 +1,9 @@
3670
 
-#!/bin/bash
3671
 
+#!/bin/sh
3672
 
 #---------------------------------------------
3673
 
 #   xdg-open
3674
 
 #
3675
 
 #   Utility script to open a URL in the registered default application.
3676
 
 #
3677
 
 #   Refer to the usage() function below for usage.
3678
 
 #
3679
 
 #   Copyright 2006, Kevin Krammer <kevin.krammer@gmx.at>
3680
 
@@ -22,31 +22,50 @@
3681
 
 usage()
3682
 
 {
3683
 
 cat << _USAGE
3684
 
 _USAGE
3685
 
 }
3686
 
 
3687
 
 #@xdg-utils-common@
3688
 
 
3689
 
+# This handles backslashes but not quote marks.
3690
 
+first_word()
3691
 
+{
3692
 
+    read first rest
3693
 
+    echo "$first"
3694
 
+}
3695
 
+
3696
 
 open_kde()
3697
 
 {
3698
 
-    kfmclient exec "$1"
3699
 
-    kfmclient_fix_exit_code $?
3700
 
+    if kde-open -v 2>/dev/null 1>&2; then
3701
 
+        kde-open "$1"
3702
 
+    else
3703
 
+        if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
3704
 
+            kfmclient openURL "$1"
3705
 
+        else
3706
 
+            kfmclient exec "$1"
3707
 
+            kfmclient_fix_exit_code $?
3708
 
+        fi
3709
 
+    fi
3710
 
 
3711
 
     if [ $? -eq 0 ]; then
3712
 
         exit_success
3713
 
     else
3714
 
         exit_failure_operation_failed
3715
 
     fi
3716
 
 }
3717
 
 
3718
 
 open_gnome()
3719
 
 {
3720
 
-    gnome-open "$1"
3721
 
+    if gvfs-open --help 2>/dev/null 1>&2; then
3722
 
+        gvfs-open "$1"
3723
 
+    else
3724
 
+        gnome-open "$1"
3725
 
+    fi
3726
 
 
3727
 
     if [ $? -eq 0 ]; then
3728
 
         exit_success
3729
 
     else
3730
 
         exit_failure_operation_failed
3731
 
     fi
3732
 
 }
3733
 
 
3734
 
@@ -56,48 +75,90 @@
3735
 
 
3736
 
     if [ $? -eq 0 ]; then
3737
 
         exit_success
3738
 
     else
3739
 
         exit_failure_operation_failed
3740
 
     fi
3741
 
 }
3742
 
 
3743
 
-open_generic()
3744
 
+open_generic_xdg_mime()
3745
 
 {
3746
 
-    if mimeopen -v 2>/dev/null 1>&2; then
3747
 
-        mimeopen -n "$1"
3748
 
-        if [ $? -eq 0 ]; then
3749
 
-            exit_success
3750
 
-        fi
3751
 
+    filetype=`xdg-mime query filetype "$1" | sed "s/;.*//"`
3752
 
+    default=`xdg-mime query default "$filetype"`
3753
 
+    if [ -n "$default" ] ; then
3754
 
+        xdg_user_dir="$XDG_DATA_HOME"
3755
 
+        [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share"
3756
 
+
3757
 
+        xdg_system_dirs="$XDG_DATA_DIRS"
3758
 
+        [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/
3759
 
+
3760
 
+        for x in `echo "$xdg_user_dir:$xdg_system_dirs" | sed 's/:/ /g'`; do
3761
 
+            file="$x/applications/$default"
3762
 
+            if [ -r "$file" ] ; then
3763
 
+                command="`grep -E "^Exec(\[[^]=]*])?=" "$file" | cut -d= -f 2- | first_word`"
3764
 
+                command_exec=`which $command 2>/dev/null`
3765
 
+                if [ -x "$command_exec" ] ; then
3766
 
+                    $command_exec "$1"
3767
 
+                    if [ $? -eq 0 ]; then
3768
 
+                        exit_success
3769
 
+                    fi
3770
 
+                fi
3771
 
+            fi
3772
 
+        done
3773
 
     fi
3774
 
+}
3775
 
 
3776
 
-    if which run-mailcap 2>/dev/null 1>&2 &&
3777
 
-       (echo "$1" | grep -q '^file://' ||
3778
 
+open_generic()
3779
 
+{
3780
 
+    # Paths or file:// URLs
3781
 
+    if (echo "$1" | grep -q '^file://' ||
3782
 
         ! echo "$1" | egrep -q '^[a-zA-Z+\.\-]+:'); then
3783
 
 
3784
 
         local file=$(echo "$1" | sed 's%^file://%%')
3785
 
-        run-mailcap --action=view "$file"
3786
 
-        if [ $? -eq 0 ]; then
3787
 
-            exit_success
3788
 
+
3789
 
+        # Decode URLs
3790
 
+        # TODO
3791
 
+
3792
 
+        check_input_file "$file"
3793
 
+
3794
 
+        open_generic_xdg_mime "$file"
3795
 
+
3796
 
+        if [ -f /etc/debian_version ] &&
3797
 
+            which run-mailcap 2>/dev/null 1>&2; then
3798
 
+            run-mailcap --action=view "$file"
3799
 
+            if [ $? -eq 0 ]; then
3800
 
+                exit_success
3801
 
+            fi
3802
 
+        fi
3803
 
+
3804
 
+        if mimeopen -v 2>/dev/null 1>&2; then
3805
 
+            mimeopen -L -n "$file"
3806
 
+            if [ $? -eq 0 ]; then
3807
 
+                exit_success
3808
 
+            fi
3809
 
         fi
3810
 
     fi
3811
 
 
3812
 
     IFS=":"
3813
 
     for browser in $BROWSER; do
3814
 
         if [ x"$browser" != x"" ]; then
3815
 
 
3816
 
-            IFS=' '
3817
 
-            browser_with_arg=${browser//'%s'/"$1"}
3818
 
+            browser_with_arg=`printf "$browser" "$1" 2>/dev/null`
3819
 
+            if [ $? -ne 0 ]; then
3820
 
+                browser_with_arg=$browser;
3821
 
+            fi
3822
 
 
3823
 
-            if [ x"$browser_with_arg" = x"$browser" ]; then "$browser" "$1";
3824
 
-            else $browser_with_arg;
3825
 
+            if [ x"$browser_with_arg" = x"$browser" ]; then
3826
 
+                "$browser" "$1";
3827
 
+            else eval '$browser_with_arg'$xdg_redirect_output;
3828
 
             fi
3829
 
 
3830
 
-            if [ $? -eq 0 ]; then exit_success;
3831
 
+            if [ $? -eq 0 ]; then
3832
 
+                exit_success;
3833
 
             fi
3834
 
         fi
3835
 
     done
3836
 
 
3837
 
     exit_failure_operation_impossible "no method available for opening '$1'"
3838
 
 }
3839
 
 
3840
 
 [ x"$1" != x"" ] || exit_failure_syntax
3841
 
@@ -123,23 +184,27 @@
3842
 
 
3843
 
 if [ -z "${url}" ] ; then
3844
 
     exit_failure_syntax "file or URL argument missing"
3845
 
 fi
3846
 
 
3847
 
 detectDE
3848
 
 
3849
 
 if [ x"$DE" = x"" ]; then
3850
 
-    # if BROWSER variable is not set, check some well known browsers instead
3851
 
-    if [ x"$BROWSER" = x"" ]; then
3852
 
-        BROWSER=firefox:mozilla:netscape
3853
 
-    fi
3854
 
     DE=generic
3855
 
 fi
3856
 
 
3857
 
+# if BROWSER variable is not set, check some well known browsers instead
3858
 
+if [ x"$BROWSER" = x"" ]; then
3859
 
+    BROWSER=links2:links:lynx:w3m
3860
 
+    if [ -n "$DISPLAY" ]; then
3861
 
+        BROWSER=firefox:mozilla:epiphany:konqueror:chromium-browser:google-chrome:$BROWSER
3862
 
+    fi
3863
 
+fi
3864
 
+
3865
 
 case "$DE" in
3866
 
     kde)
3867
 
     open_kde "$url"
3868
 
     ;;
3869
 
 
3870
 
     gnome)
3871
 
     open_gnome "$url"
3872
 
     ;;
3873
 
Index: src/third_party/xdg-utils/scripts/xdg-screensaver
3874
 
===================================================================
3875
 
--- src.orig/third_party/xdg-utils/scripts/xdg-screensaver
3876
 
+++ src/third_party/xdg-utils/scripts/xdg-screensaver
3877
 
@@ -225,17 +225,17 @@
3878
 
     if [ $# -gt 0 ]; then
3879
 
         echo "xdg-screensaver: $@" >&2
3880
 
     fi
3881
 
 
3882
 
     exit 5
3883
 
 }
3884
 
 
3885
 
 #------------------------------------------------------------
3886
 
-# Exit script on insufficient permission to read a specified file
3887
 
+# Exit script on insufficient permission to write a specified file
3888
 
 
3889
 
 exit_failure_file_permission_write()
3890
 
 {
3891
 
     if [ $# -gt 0 ]; then
3892
 
         echo "xdg-screensaver: $@" >&2
3893
 
     fi
3894
 
 
3895
 
     exit 6
3896
 
@@ -302,17 +302,17 @@
3897
 
             ;;
3898
 
 
3899
 
             --manual)
3900
 
             manualpage
3901
 
             exit_success
3902
 
             ;;
3903
 
 
3904
 
             --version)
3905
 
-            echo "xdg-screensaver 1.0.1"
3906
 
+            echo "xdg-screensaver 1.0.2"
3907
 
             exit_success
3908
 
             ;;
3909
 
         esac
3910
 
     done
3911
 
 }
3912
 
 
3913
 
 check_common_commands "$@"
3914
 
 
3915
 
@@ -328,17 +328,18 @@
3916
 
 #--------------------------------------
3917
 
 # Checks for known desktop environments
3918
 
 # set variable DE to the desktop environments name, lowercase
3919
 
 
3920
 
 detectDE()
3921
 
 {
3922
 
     if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
3923
 
     elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
3924
 
-    elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
3925
 
+    elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
3926
 
+    elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
3927
 
     fi
3928
 
 }
3929
 
 
3930
 
 #----------------------------------------------------------------------------
3931
 
 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4
3932
 
 # It also always returns 1 in KDE 3.4 and earlier
3933
 
 # Simply return 0 in such case
3934
 
 
3935
 
@@ -349,17 +350,17 @@
3936
 
     minor=`echo $version | sed 's/KDE: [0-9]*\.\([0-9]\).*/\1/'`
3937
 
     release=`echo $version | sed 's/KDE: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'`