Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Side by Side Diff: third_party/xdg-utils/scripts/xdg-mime.in

Issue 3273010: Update our copy of xdg-utils to 2010-08-30, and include a patched xdg-mime. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/
Patch Set: Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/xdg-utils/scripts/xdg-mime ('k') | third_party/xdg-utils/scripts/xdg-open » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/sh 1 #!/bin/sh
2 #--------------------------------------------- 2 #---------------------------------------------
3 # xdg-mime 3 # xdg-mime
4 # 4 #
5 # Utility script to manipulate MIME related information 5 # Utility script to manipulate MIME related information
6 # on XDG compliant systems. 6 # on XDG compliant systems.
7 # 7 #
8 # Refer to the usage() function below for usage. 8 # Refer to the usage() function below for usage.
9 # 9 #
10 # Copyright 2006, Kevin Krammer <kevin.krammer@gmx.at> 10 # Copyright 2006, Kevin Krammer <kevin.krammer@gmx.at>
(...skipping 16 matching lines...) Expand all
27 } 27 }
28 28
29 #@xdg-utils-common@ 29 #@xdg-utils-common@
30 30
31 update_mime_database() 31 update_mime_database()
32 { 32 {
33 if [ x"$mode" = x"user" -a -n "$DISPLAY" ] ; then 33 if [ x"$mode" = x"user" -a -n "$DISPLAY" ] ; then
34 detectDE 34 detectDE
35 if [ x"$DE" = x"kde" ] ; then 35 if [ x"$DE" = x"kde" ] ; then
36 DEBUG 1 "Running kbuildsycoca" 36 DEBUG 1 "Running kbuildsycoca"
37 eval 'kbuildsycoca'$xdg_redirect_output 37 if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
38 eval 'kbuildsycoca4'$xdg_redirect_output
39 else
40 eval 'kbuildsycoca'$xdg_redirect_output
41 fi
38 fi 42 fi
39 fi 43 fi
40 for x in `echo "$PATH:/opt/gnome/bin" | sed 's/:/ /g'`; do 44 for x in `echo "$PATH:/opt/gnome/bin" | sed 's/:/ /g'`; do
41 if [ -x $x/update-mime-database ] ; then 45 if [ -x $x/update-mime-database ] ; then
42 DEBUG 1 "Running $x/update-mime-database $1" 46 DEBUG 1 "Running $x/update-mime-database $1"
43 eval '$x/update-mime-database $1'$xdg_redirect_output 47 eval '$x/update-mime-database $1'$xdg_redirect_output
44 return 48 return
45 fi 49 fi
46 done 50 done
47 } 51 }
48 52
49 info_kde() 53 info_kde()
50 { 54 {
51 if which "kmimetypefinder" > /dev/null 2>/dev/null; then 55 if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
52 DEBUG 1 "Running kmimetypefinder \"$1\"" 56 DEBUG 1 "Running kmimetypefinder \"$1\""
53 kmimetypefinder "$1" 2>/dev/null | head -n 1 57 KMIMETYPEFINDER=`which kmimetypefinder 2>/dev/null`
58 $KMIMETYPEFINDER "$1" 2>/dev/null | head -n 1
54 else 59 else
55 DEBUG 1 "Running kfile \"$1\"" 60 DEBUG 1 "Running kfile \"$1\""
56 kfile "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1 61 KFILE=`which kfile 2>/dev/null`
62 $KFILE "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1
57 fi 63 fi
58 64
59 exit_success 65 if [ $? -eq 0 ]; then
66 exit_success
67 else
68 exit_failure_operation_failed
69 fi
60 } 70 }
61 71
62 info_gnome() 72 info_gnome()
63 { 73 {
64 file=`readlink -f "$1"` # Normalize path 74 file=`readlink -f "$1"` # Normalize path
65 DEBUG 1 "Running gnomevfs-info \"$file\""
66 gnomevfs-info "$file" 2> /dev/null | grep MIME | cut -d ":" -f 2 | sed s/"^ "//
67 75
68 exit_success 76 if gvfs-info --help 2>/dev/null 1>&2; then
77 DEBUG 1 "Running gvfs-info \"$file\""
78 gvfs-info "$file" 2> /dev/null | grep standard::content-type | cut -d' ' -f4
79 else
80 DEBUG 1 "Running gnomevfs-info \"$file\""
81 gnomevfs-info --slow-mime "$file" 2> /dev/null | grep "^MIME" | cut -d ": " -f 2 | sed s/"^ "//
82 fi
83
84 if [ $? -eq 0 ]; then
85 exit_success
86 else
87 exit_failure_operation_failed
88 fi
69 } 89 }
70 90
71 info_generic() 91 info_generic()
72 { 92 {
73 DEBUG 1 "Running /usr/bin/file -i \"$1\"" 93 DEBUG 1 "Running file -i \"$1\""
74 /usr/bin/file -i "$1" 2> /dev/null | cut -d ":" -f 2 | sed s/"^ "// 94 /usr/bin/file -i "$1" 2> /dev/null | cut -d ":" -f 2 | sed s/"^ "//
75 95
76 exit_success 96 if [ $? -eq 0 ]; then
97 exit_success
98 else
99 exit_failure_operation_failed
100 fi
77 } 101 }
78 102
79 make_default_kde() 103 make_default_kde()
80 { 104 {
81 # $1 is vendor-name.desktop 105 # $1 is vendor-name.desktop
82 # $2 is mime/type 106 # $2 is mime/type
83 # Add to $KDE_HOME/share/config/profilerc: 107 #
108 # On KDE 3, add to $KDE_CONFIG_PATH/profilerc:
84 # [$2 - 1] 109 # [$2 - 1]
85 # Application=$1 110 # Application=$1
86 # 111 #
87 # Remove all [$2 - *] sections, or even better, 112 # Remove all [$2 - *] sections, or even better,
88 # renumber [$2 - *] sections and remove duplicate 113 # renumber [$2 - *] sections and remove duplicate
89 114 #
90 default_file="$HOME/.kde/share/config/profilerc" 115 # On KDE 4, add $2=$1 to $XDG_DATA_APPS/mimeapps.list
91 DEBUG 2 "make_default_kde $1 $2" 116 #
117 # Example file:
118 #
119 # [Added Associations]
120 # text/plain=kde4-kate.desktop;kde4-kwrite.desktop;
121 #
122 # [Removed Associations]
123 # text/plain=gnome-gedit.desktop;gnu-emacs.desktop;
124 vendor="$1"
125 mimetype="$2"
126 if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
127 default_dir=`kde4-config --path xdgdata-apps 2> /dev/null | cut -d ':' - f 1`
128 default_file="$default_dir/mimeapps.list"
129 else
130 default_dir=`kde-config --path config 2> /dev/null | cut -d ':' -f 1`
131 default_file="$default_dir/profilerc"
132 fi
133 if [ -z "$default_dir" ]; then
134 DEBUG 2 "make_default_kde: No kde runtime detected"
135 return
136 fi
137 DEBUG 2 "make_default_kde $vendor $mimetype"
92 DEBUG 1 "Updating $default_file" 138 DEBUG 1 "Updating $default_file"
93 mkdir -p "$HOME/.kde/share/config" 139 mkdir -p "$default_dir"
94 [ -f $default_file ] || touch $default_file 140 [ -f $default_file ] || touch $default_file
95 awk -v application="$1" -v mimetype="$2" ' 141 if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
142 [ -f $default_file ] || touch $default_file
143 awk -v application="$vendor" -v mimetype="$mimetype" '
96 BEGIN { 144 BEGIN {
97 header_start="[" mimetype " - " 145 prefix=mimetype "="
98 supress=0 146 associations=0
147 found=0
148 blanks=0
99 } 149 }
100 { 150 {
101 if (index($0, header_start) == 1 ) 151 suppress=0
102 supress=1 152 if (index($0, "[Added Associations]") == 1) {
103 else 153 associations=1
104 if (/^\[/) { supress=0 } 154 } else if (index($0, "[") == 1) {
105 155 if (associations && !found) {
106 if (!supress) { 156 print prefix application
157 found=1
158 }
159 associations=0
160 } else if ($0 == "") {
161 blanks++
162 suppress=1
163 } else if (associations && index($0, prefix) == 1) {
164 value=substr($0, length(prefix) + 1, length)
165 split(value, apps, ";")
166 value=application ";"
167 count=0
168 for (i in apps) {
169 count++
170 }
171 for (i=0; i < count; i++) {
172 if (apps[i] != application && apps[i] != "") {
173 value=value apps[i] ";"
174 }
175 }
176 $0=prefix value
177 found=1
178 }
179 if (!suppress) {
180 while (blanks > 0) {
181 print ""
182 blanks--
183 }
107 print $0 184 print $0
108 } 185 }
109 } 186 }
110 END { 187 END {
111 print "" 188 if (!found) {
189 if (!associations) {
190 print "[Added Associations]"
191 }
192 print prefix application
193 }
194 while (blanks > 0) {
195 print ""
196 blanks--
197 }
198 }
199 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file
200 eval 'kbuildsycoca4'$xdg_redirect_output
201 else
202 awk -v application="$vendor" -v mimetype="$mimetype" '
203 BEGIN {
204 header_start="[" mimetype " - "
205 suppress=0
206 }
207 {
208 if (index($0, header_start) == 1 )
209 suppress=1
210 else
211 if (/^\[/) { suppress=0 }
212
213 if (!suppress) {
214 print $0
215 }
216 }
217 END {
218 print ""
112 print "[" mimetype " - 1]" 219 print "[" mimetype " - 1]"
113 print "Application=" application 220 print "Application=" application
114 print "AllowAsDefault=true" 221 print "AllowAsDefault=true"
115 print "GenericServiceType=Application" 222 print "GenericServiceType=Application"
116 print "Preference=1" 223 print "Preference=1"
117 print "ServiceType=" mimetype 224 print "ServiceType=" mimetype
118 } 225 }
119 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file 226 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file
227 fi
120 } 228 }
121 229
122 make_default_generic() 230 make_default_generic()
123 { 231 {
124 # $1 is vendor-name.desktop 232 # $1 is vendor-name.desktop
125 # $2 is mime/type 233 # $2 is mime/type
126 # Add $2=$1 to XDG_DATA_HOME/applications/defaults.list 234 # Add $2=$1 to XDG_DATA_HOME/applications/defaults.list
127 xdg_user_dir="$XDG_DATA_HOME" 235 xdg_user_dir="$XDG_DATA_HOME"
128 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" 236 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share"
129 default_file="$xdg_user_dir/applications/defaults.list" 237 default_file="$xdg_user_dir/applications/defaults.list"
130 DEBUG 2 "make_default_generic $1 $2" 238 DEBUG 2 "make_default_generic $1 $2"
131 DEBUG 1 "Updating $default_file" 239 DEBUG 1 "Updating $default_file"
132 grep -v "$2=" $default_file > ${default_file}.new 2> /dev/null 240 grep -v "$2=" $default_file > ${default_file}.new 2> /dev/null
133 if ! grep "[Default Applications]" ${default_file}.new > /dev/null; then 241 if ! grep "[Default Applications]" ${default_file}.new > /dev/null; then
134 echo "[Default Applications]" >> ${default_file}.new 242 echo "[Default Applications]" >> ${default_file}.new
135 fi 243 fi
(...skipping 17 matching lines...) Expand all
153 echo $trader_result 261 echo $trader_result
154 exit_success 262 exit_success
155 fi 263 fi
156 done 264 done
157 exit_success 265 exit_success
158 } 266 }
159 267
160 defapp_kde() 268 defapp_kde()
161 { 269 {
162 MIME="$1" 270 MIME="$1"
163 ktradertest=`which ktradertest 2> /dev/null` 271 if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
164 if [ -n "$ktradertest" ] ; then 272 KTRADER=`which ktraderclient 2> /dev/null`
165 DEBUG 1 "Running ktradertest \"$MIME\" Application" 273 MIMETYPE="--mimetype"
166 trader_result=`ktradertest "$MIME" Application 2>/dev/null | grep Deskto pEntryPath \ 274 SERVICETYPE="--servicetype"
167 | head -n 1 | cut -d ':' -f 2 | cut -d \' -f 2` 275 else
276 KTRADER=`which ktradertest 2> /dev/null`
277 fi
278 if [ -n "$KTRADER" ] ; then
279 DEBUG 1 "Running KDE trader query \"$MIME\" mimetype and \"Application\" servicetype"
280 trader_result=`$KTRADER $MIMETYPE "$MIME" $SERVICETYPE Application 2>/de v/null \
281 | grep DesktopEntryPath | head -n 1 | cut -d ':' -f 2 | cut -d \' -f 2`
168 if [ -n "$trader_result" ] ; then 282 if [ -n "$trader_result" ] ; then
169 basename "$trader_result" 283 basename "$trader_result"
170 exit_success 284 exit_success
171 else 285 else
172 exit_failure_operation_failed 286 exit_failure_operation_failed
173 fi 287 fi
174 else 288 else
175 defapp_generic "$1" 289 defapp_generic "$1"
176 fi 290 fi
177 } 291 }
(...skipping 10 matching lines...) Expand all
188 action=install 302 action=install
189 ;; 303 ;;
190 304
191 uninstall) 305 uninstall)
192 action=uninstall 306 action=uninstall
193 ;; 307 ;;
194 308
195 query) 309 query)
196 shift 310 shift
197 311
198 if [ -z "$1" ] ; then 312 if [ -z "$1" ] ; then
199 exit_failure_syntax "query type argument missing" 313 exit_failure_syntax "query type argument missing"
200 fi 314 fi
201 315
202 case $1 in 316 case $1 in
203 filetype) 317 filetype)
204 action=info 318 action=info
205 319
206 filename="$2" 320 filename="$2"
207 if [ -z "$filename" ] ; then 321 if [ -z "$filename" ] ; then
208 exit_failure_syntax "FILE argument missing" 322 exit_failure_syntax "FILE argument missing"
209 fi 323 fi
210 case $filename in 324 case $filename in
211 -*) 325 -*)
212 exit_failure_syntax "unexpected option '$filename'" 326 exit_failure_syntax "unexpected option '$filename'"
213 ;; 327 ;;
214 esac 328 esac
215 check_input_file "$filename" 329 check_input_file "$filename"
216 ;; 330 ;;
217 331
218 default) 332 default)
219 action=defapp 333 action=defapp
220 mimetype="$2" 334 mimetype="$2"
221 if [ -z "$mimetype" ] ; then 335 if [ -z "$mimetype" ] ; then
222 exit_failure_syntax "mimetype argument missing" 336 exit_failure_syntax "mimetype argument missing"
223 fi 337 fi
224 case $mimetype in 338 case $mimetype in
225 -*) 339 -*)
226 exit_failure_syntax "unexpected option '$mimetype'" 340 exit_failure_syntax "unexpected option '$mimetype'"
227 ;; 341 ;;
228 342
229 */*) 343 */*)
230 # Ok 344 # Ok
231 ;; 345 ;;
232 346
233 *) 347 *)
234 exit_failure_syntax "mimetype '$mimetype' is not in the form 'minor/ major'" 348 exit_failure_syntax "mimetype '$mimetype' is not in the form 'minor/ major'"
235 ;; 349 ;;
236 esac 350 esac
237 ;; 351 ;;
238 352
239 *) 353 *)
240 exit_failure_syntax "unknown query type '$1'" 354 exit_failure_syntax "unknown query type '$1'"
241 ;; 355 ;;
242 esac 356 esac
243 ;; 357 ;;
244 358
245 default) 359 default)
246 action=makedefault 360 action=makedefault
247 shift 361 shift
248 362
249 if [ -z "$1" ] ; then 363 if [ -z "$1" ] ; then
250 exit_failure_syntax "application argument missing" 364 exit_failure_syntax "application argument missing"
251 fi 365 fi
252 case $1 in 366 case $1 in
253 -*) 367 -*)
254 exit_failure_syntax "unexpected option '$1'" 368 exit_failure_syntax "unexpected option '$1'"
255 ;; 369 ;;
256 370
257 *.desktop) 371 *.desktop)
258 filename="$1" 372 filename="$1"
259 ;; 373 ;;
260 374
261 *) 375 *)
262 exit_failure_syntax "malformed argument '$1', expected *.desktop" 376 exit_failure_syntax "malformed argument '$1', expected *.desktop"
263 ;; 377 ;;
264 esac 378 esac
265 ;; 379 ;;
266 380
267 *) 381 *)
268 exit_failure_syntax "unknown command '$1'" 382 exit_failure_syntax "unknown command '$1'"
269 ;; 383 ;;
270 esac 384 esac
271 385
272 shift 386 shift
273 387
274 388
275 if [ "$action" = "makedefault" ]; then 389 if [ "$action" = "makedefault" ]; then
276 if [ -z "$1" ] ; then 390 if [ -z "$1" ] ; then
277 exit_failure_syntax "mimetype argument missing" 391 exit_failure_syntax "mimetype argument missing"
278 fi 392 fi
279 393
280 while [ $# -gt 0 ] ; do 394 while [ $# -gt 0 ] ; do
281 case $1 in 395 case $1 in
282 -*) 396 -*)
283 exit_failure_syntax "unexpected option '$1'" 397 exit_failure_syntax "unexpected option '$1'"
284 ;; 398 ;;
285 esac 399 esac
286 mimetype="$1" 400 mimetype="$1"
287 shift 401 shift
288 402
289 make_default_kde "$filename" "$mimetype" 403 make_default_kde "$filename" "$mimetype"
290 make_default_generic "$filename" "$mimetype" 404 make_default_generic "$filename" "$mimetype"
291 done 405 done
292 exit_success 406 exit_success
293 fi 407 fi
294 408
295 if [ "$action" = "info" ]; then 409 if [ "$action" = "info" ]; then
296 detectDE 410 detectDE
297 411
298 if [ x"$DE" = x"" ]; then 412 if [ x"$DE" = x"" ]; then
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 exit_failure_syntax "mode argument missing for --mode" 457 exit_failure_syntax "mode argument missing for --mode"
344 fi 458 fi
345 case "$1" in 459 case "$1" in
346 user) 460 user)
347 mode="user" 461 mode="user"
348 ;; 462 ;;
349 463
350 system) 464 system)
351 mode="system" 465 mode="system"
352 ;; 466 ;;
353 467
354 *) 468 *)
355 exit_failure_syntax "unknown mode '$1'" 469 exit_failure_syntax "unknown mode '$1'"
356 ;; 470 ;;
357 esac 471 esac
358 shift 472 shift
359 ;; 473 ;;
360 474
361 --novendor) 475 --novendor)
362 vendor=false 476 vendor=false
363 ;; 477 ;;
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 basefile=`basename "$filename"` 588 basefile=`basename "$filename"`
475 #[ -z $vendor ] || basefile="$vendor-$basefile" 589 #[ -z $vendor ] || basefile="$vendor-$basefile"
476 590
477 mimetypes= 591 mimetypes=
478 if [ -n "$kde_dir" ] ; then 592 if [ -n "$kde_dir" ] ; then
479 DEBUG 2 "KDE3 mimelnk directory found, extracting mimetypes from XML file" 593 DEBUG 2 "KDE3 mimelnk directory found, extracting mimetypes from XML file"
480 594
481 mimetypes=`awk < "$filename" ' 595 mimetypes=`awk < "$filename" '
482 # Strip XML comments 596 # Strip XML comments
483 BEGIN { 597 BEGIN {
484 supress=0 598 suppress=0
485 } 599 }
486 { 600 {
487 do 601 do
488 if (supress) { 602 if (suppress) {
489 if (match($0,/-->/)) { 603 if (match($0,/-->/)) {
490 $0=substr($0,RSTART+RLENGTH) 604 $0=substr($0,RSTART+RLENGTH)
491 supress=0 605 suppress=0
492 } 606 }
493 else { 607 else {
494 break 608 break
495 } 609 }
496 } 610 }
497 else { 611 else {
498 if (match($0,/<!--/)) { 612 if (match($0,/<!--/)) {
499 if (RSTART>1) print substr($0,0,RSTART) 613 if (RSTART>1) print substr($0,0,RSTART)
500 $0=substr($0,RSTART+RLENGTH) 614 $0=substr($0,RSTART+RLENGTH)
501 supress=1 615 suppress=1
502 } 616 }
503 else { 617 else {
504 if ($0) print $0 618 if ($0) print $0
505 break 619 break
506 } 620 }
507 } 621 }
508 while(1) 622 while(1)
509 } 623 }
510 ' | awk ' 624 ' | awk '
511 # List MIME types listed in <mime-type> tags 625 # List MIME types listed in <mime-type> tags
512 BEGIN { 626 BEGIN {
513 RS="<" 627 RS="<"
514 } 628 }
515 /^mime-info/, /^\/mime-info/ { 629 /^mime-info/, /^\/mime-info/ {
516 if (match($0,/^mime-type/)) { 630 if (match($0,/^mime-type/)) {
517 if (match($0,/type="[^"]*/) || match($0,/type='"'"'[^'"'"']*/)) { 631 if (match($0,/type="[^"]*/) || match($0,/type='"'"'[^'"'"']*/)) {
518 print substr($0,RSTART+6,RLENGTH-6) 632 print substr($0,RSTART+6,RLENGTH-6)
519 } 633 }
520 } 634 }
521 }'` 635 }'`
522 fi 636 fi
523 637
524 DEBUG 1 "$action mimetype in $xdg_dir" 638 DEBUG 1 "$action mimetype in $xdg_dir"
525 639
526 case $action in 640 case $action in
527 install) 641 install)
528 save_umask=`umask` 642 save_umask=`umask`
529 umask $my_umask 643 umask $my_umask
530 644
531 for x in $xdg_dir ; do 645 for x in $xdg_dir ; do
532 mkdir -p $x 646 mkdir -p $x
533 eval 'cp $filename $x/$basefile'$xdg_redirect_output 647 eval 'cp $filename $x/$basefile'$xdg_redirect_output
534 done 648 done
535 649
536 if [ -n "$mimetypes" ] ; then 650 if [ -n "$mimetypes" ] ; then
537 # No quotes around $mimetypes 651 # No quotes around $mimetypes
538 for x in $mimetypes ; do 652 for x in $mimetypes ; do
539 DEBUG 1 "Installing $kde_dir/$x.desktop (KDE 3.x support)" 653 DEBUG 1 "Installing $kde_dir/$x.desktop (KDE 3.x support)"
540 mkdir -p `dirname $kde_dir/$x.desktop` 654 mkdir -p `dirname $kde_dir/$x.desktop`
541 awk < "$filename" ' 655 awk < "$filename" '
542 # Strip XML comments 656 # Strip XML comments
543 BEGIN { 657 BEGIN {
544 supress=0 658 suppress=0
545 } 659 }
546 { 660 {
547 do 661 do
548 if (supress) { 662 if (suppress) {
549 if (match($0,/-->/)) { 663 if (match($0,/-->/)) {
550 $0=substr($0,RSTART+RLENGTH) 664 $0=substr($0,RSTART+RLENGTH)
551 supress=0 665 suppress=0
552 } 666 }
553 else { 667 else {
554 break 668 break
555 } 669 }
556 } 670 }
557 else { 671 else {
558 if (match($0,/<!--/)) { 672 if (match($0,/<!--/)) {
559 if (RSTART>1) print substr($0,0,RSTART) 673 if (RSTART>1) print substr($0,0,RSTART)
560 $0=substr($0,RSTART+RLENGTH) 674 $0=substr($0,RSTART+RLENGTH)
561 supress=1 675 suppress=1
562 } 676 }
563 else { 677 else {
564 if ($0) print $0 678 if ($0) print $0
565 break 679 break
566 } 680 }
567 } 681 }
568 while(1) 682 while(1)
569 } 683 }
570 ' | awk > $kde_dir/$x.desktop ' 684 ' | awk > $kde_dir/$x.desktop '
571 # Extract mimetype $x from the XML file $filename 685 # Extract mimetype $x from the XML file $filename
572 # Note that bash requires us to escape a single quote as '"'"' 686 # Note that bash requires us to escape a single quote as '"'"'
573 BEGIN { 687 BEGIN {
574 the_type=ARGV[1] 688 the_type=ARGV[1]
575 the_source=ARGV[2] 689 the_source=ARGV[2]
576 ARGC=1 690 ARGC=1
577 RS="<" 691 RS="<"
578 found=0 692 found=0
579 glob_patterns="" 693 glob_patterns=""
580 } 694 }
581 /^mime-info/, /^\/mime-info/ { 695 /^mime-info/, /^\/mime-info/ {
582 if (match($0,/^mime-type/)) { 696 if (match($0,/^mime-type/)) {
583 if (match($0,/type="[^"]*/) || match($0,/type='"'"'[^'"'"']*/)) { 697 if (match($0,/type="[^"]*/) || match($0,/type='"'"'[^'"'"']*/)) {
584 if (substr($0,RSTART+6,RLENGTH-6) == the_type) { 698 if (substr($0,RSTART+6,RLENGTH-6) == the_type) {
585 found=1 699 found=1
586 print "[Desktop Entry]" 700 print "[Desktop Entry]"
587 print "# Installed by xdg-mime from " the_source 701 print "# Installed by xdg-mime from " the_source
588 print "Type=MimeType" 702 print "Type=MimeType"
589 print "MimeType=" the_type 703 print "MimeType=" the_type
590 the_icon=the_type 704 the_icon=the_type
591 sub("/", "-", the_icon) 705 sub("/", "-", the_icon)
592 print "Icon=" the_icon 706 print "Icon=" the_icon
593 } 707 }
594 } 708 }
595 } 709 }
596 else if (found) { 710 else if (found) {
597 if (match($0,/^\/mime-type/)) { 711 if (match($0,/^\/mime-type/)) {
598 if (glob_patterns) 712 if (glob_patterns)
599 print "Patterns=" glob_patterns 713 print "Patterns=" glob_patterns
600 exit 0 714 exit 0
601 } 715 }
602 716
603 if (match($0,/^sub-class-of/)) { 717 if (match($0,/^sub-class-of/)) {
604 if (match($0,/type="[^"]*/) || match($0,/type='"'"'[^'"'"']*/)) { 718 if (match($0,/type="[^"]*/) || match($0,/type='"'"'[^'"'"']*/)) {
605 print "X-KDE-IsAlso=" substr($0,RSTART+6,RLENGTH-6) 719 print "X-KDE-IsAlso=" substr($0,RSTART+6,RLENGTH-6)
606 } 720 }
607 else { 721 else {
608 print "Error: '"'"'type'"'"' argument missing in " RS $0 722 print "Error: '"'"'type'"'"' argument missing in " RS $0
609 exit 1 723 exit 1
610 } 724 }
611 } 725 }
612 if (match($0,/^glob/)) { 726 if (match($0,/^glob/)) {
613 if (match($0,/pattern="[^"]*/) || match($0,/pattern='"'"'[^'"'"']*/)) { 727 if (match($0,/pattern="[^"]*/) || match($0,/pattern='"'"'[^'"'"']*/)) {
614 glob_patterns = glob_patterns substr($0,RSTART+9,RLENGTH-9) ";" 728 glob_patterns = glob_patterns substr($0,RSTART+9,RLENGTH-9) ";"
615 } 729 }
616 else { 730 else {
617 print "Error: '"'"'pattern'"'"' argument missing in " RS $0 731 print "Error: '"'"'pattern'"'"' argument missing in " RS $0
618 exit 1 732 exit 1
619 } 733 }
620 } 734 }
621 if (match($0,/^comment/)) { 735 if (match($0,/^comment/)) {
622 if (match($0,/xml:lang="[^"]*/) || match($0,/xml:lang='"'"'[^'"'"']*/)) { 736 if (match($0,/xml:lang="[^"]*/) || match($0,/xml:lang='"'"'[^'"'"']*/)) {
623 lang=substr($0,RSTART+10,RLENGTH-10) 737 lang=substr($0,RSTART+10,RLENGTH-10)
624 } 738 }
625 else { 739 else {
626 lang="" 740 lang=""
627 } 741 }
628 if (match($0,/>/)) { 742 if (match($0,/>/)) {
629 comment=substr($0,RSTART+1) 743 comment=substr($0,RSTART+1)
630 sub("&lt;", "<", comment) 744 sub("&lt;", "<", comment)
631 sub("&gt;", ">", comment) 745 sub("&gt;", ">", comment)
632 sub("&amp;", "\\&", comment) 746 sub("&amp;", "\\&", comment)
633 if (lang) 747 if (lang)
634 print "Comment[" lang "]=" comment 748 print "Comment[" lang "]=" comment
635 else 749 else
636 print "Comment=" comment 750 print "Comment=" comment
637 } 751 }
638 } 752 }
639 } 753 }
640 } 754 }
641 END { 755 END {
642 if (!found) { 756 if (!found) {
643 print "Error: Mimetype '"'"'" the_type "'"'"' not found" 757 print "Error: Mimetype '"'"'" the_type "'"'"' not found"
644 exit 1 758 exit 1
645 } 759 }
646 } 760 }
647 ' $x $basefile 761 ' $x $basefile
648 if [ "$?" = "1" ] ; then 762 if [ "$?" = "1" ] ; then
649 grep -A 10 "^Error:" $kde_dir/$x.desktop >&2 763 grep -A 10 "^Error:" $kde_dir/$x.desktop >&2
650 rm $kde_dir/$x.desktop 764 rm $kde_dir/$x.desktop
651 exit 1 765 exit 1
652 fi 766 fi
653 done 767 done
654 fi 768 fi
655 769
656 umask $save_umask 770 umask $save_umask
657 ;; 771 ;;
658 772
659 uninstall) 773 uninstall)
660 for x in $xdg_dir ; do 774 for x in $xdg_dir ; do
661 rm -f $x/$basefile 775 rm -f $x/$basefile
662 done 776 done
663 777
664 # No quotes around $mimetypes 778 # No quotes around $mimetypes
665 for x in $mimetypes ; do 779 for x in $mimetypes ; do
666 if grep '^# Installed by xdg-mime' $kde_dir/$x.desktop >/dev/null 2> &1; then 780 if grep '^# Installed by xdg-mime' $kde_dir/$x.desktop >/dev/null 2> &1; then
667 DEBUG 1 "Removing $kde_dir/$x.desktop (KDE 3.x support)" 781 DEBUG 1 "Removing $kde_dir/$x.desktop (KDE 3.x support)"
668 rm -f $kde_dir/$x.desktop 782 rm -f $kde_dir/$x.desktop
669 fi 783 fi
670 done 784 done
671 ;; 785 ;;
672 esac 786 esac
673 787
674 update_mime_database $xdg_base_dir 788 update_mime_database $xdg_base_dir
675 789
676 exit_success 790 exit_success
677 791
OLDNEW
« no previous file with comments | « third_party/xdg-utils/scripts/xdg-mime ('k') | third_party/xdg-utils/scripts/xdg-open » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698