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

Side by Side Diff: scripts/xdg-mime

Issue 6873103: Linux: update xdg-utils to the latest version to get relevant xdg-mime fixes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/xdg-utils/
Patch Set: Created 9 years, 8 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 | « scripts/xdg-icon-resource ('k') | scripts/xdg-mime.in » ('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 2009-2010, Fathi Boudra <fabo@freedesktop.org> 10 # Copyright 2009-2010, Fathi Boudra <fabo@freedesktop.org>
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 # All output to stderr 419 # All output to stderr
420 xdg_redirect_output=" >&2" 420 xdg_redirect_output=" >&2"
421 fi 421 fi
422 422
423 #-------------------------------------- 423 #--------------------------------------
424 # Checks for known desktop environments 424 # Checks for known desktop environments
425 # set variable DE to the desktop environments name, lowercase 425 # set variable DE to the desktop environments name, lowercase
426 426
427 detectDE() 427 detectDE()
428 { 428 {
429 # see https://bugs.freedesktop.org/show_bug.cgi?id=34164
430 unset GREP_OPTIONS
431
429 if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; 432 if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
430 elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; 433 elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
431 elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/D Bus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/nul l 2>&1` ; then DE=gnome; 434 elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/D Bus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/nul l 2>&1` ; then DE=gnome;
432 elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/nul l 2>&1; then DE=xfce; 435 elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/nul l 2>&1; then DE=xfce;
436 elif xprop -root 2> /dev/null | grep -i '^xfce_desktop_window' >/dev/null 2> &1; then DE=xfce
433 fi 437 fi
434 438
435 if [ x"$DE" = x"" ]; then 439 if [ x"$DE" = x"" ]; then
436 # fallback to checking $DESKTOP_SESSION 440 # fallback to checking $DESKTOP_SESSION
437 case "$DESKTOP_SESSION" in 441 case "$DESKTOP_SESSION" in
442 gnome)
443 DE=gnome;
438 LXDE) 444 LXDE)
439 DE=lxde; 445 DE=lxde;
440 ;; 446 ;;
441 xfce|xfce4) 447 xfce|xfce4)
442 DE=xfce; 448 DE=xfce;
443 ;; 449 ;;
444 esac 450 esac
445 fi 451 fi
446 452
447 if [ x"$DE" = x"" ]; then 453 if [ x"$DE" = x"" ]; then
(...skipping 12 matching lines...) Expand all
460 fi 466 fi
461 } 467 }
462 468
463 #---------------------------------------------------------------------------- 469 #----------------------------------------------------------------------------
464 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4 470 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4
465 # It also always returns 1 in KDE 3.4 and earlier 471 # It also always returns 1 in KDE 3.4 and earlier
466 # Simply return 0 in such case 472 # Simply return 0 in such case
467 473
468 kfmclient_fix_exit_code() 474 kfmclient_fix_exit_code()
469 { 475 {
470 [ x"$KDE_SESSION_VERSION" = x"4" ] && return 0;
471 version=`LC_ALL=C.UTF-8 kde-config --version 2>/dev/null | grep '^KDE'` 476 version=`LC_ALL=C.UTF-8 kde-config --version 2>/dev/null | grep '^KDE'`
472 major=`echo $version | sed 's/KDE.*: \([0-9]\).*/\1/'` 477 major=`echo $version | sed 's/KDE.*: \([0-9]\).*/\1/'`
473 minor=`echo $version | sed 's/KDE.*: [0-9]*\.\([0-9]\).*/\1/'` 478 minor=`echo $version | sed 's/KDE.*: [0-9]*\.\([0-9]\).*/\1/'`
474 release=`echo $version | sed 's/KDE.*: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'` 479 release=`echo $version | sed 's/KDE.*: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'`
475 test "$major" -gt 3 && return $1 480 test "$major" -gt 3 && return $1
476 test "$minor" -gt 5 && return $1 481 test "$minor" -gt 5 && return $1
477 test "$release" -gt 4 && return $1 482 test "$release" -gt 4 && return $1
478 return 0 483 return 0
479 } 484 }
480 485
(...skipping 16 matching lines...) Expand all
497 eval '$x/update-mime-database $1'$xdg_redirect_output 502 eval '$x/update-mime-database $1'$xdg_redirect_output
498 return 503 return
499 fi 504 fi
500 done 505 done
501 } 506 }
502 507
503 info_kde() 508 info_kde()
504 { 509 {
505 if [ x"$KDE_SESSION_VERSION" = x"4" ]; then 510 if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
506 DEBUG 1 "Running kmimetypefinder \"$1\"" 511 DEBUG 1 "Running kmimetypefinder \"$1\""
507 KMIMETYPEFINDER=`which kmimetypefinder 2>/dev/null` 512 kmimetypefinder "$1" 2>/dev/null | head -n 1
508 $KMIMETYPEFINDER "$1" 2>/dev/null | head -n 1
509 else 513 else
510 DEBUG 1 "Running kfile \"$1\"" 514 DEBUG 1 "Running kfile \"$1\""
511 KFILE=`which kfile 2>/dev/null` 515 kfile "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1
512 $KFILE "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1
513 fi 516 fi
514 517
515 if [ $? -eq 0 ]; then 518 if [ $? -eq 0 ]; then
516 exit_success 519 exit_success
517 else 520 else
518 exit_failure_operation_failed 521 exit_failure_operation_failed
519 fi 522 fi
520 } 523 }
521 524
522 info_gnome() 525 info_gnome()
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 print "ServiceType=" mimetype 685 print "ServiceType=" mimetype
683 } 686 }
684 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file 687 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file
685 fi 688 fi
686 } 689 }
687 690
688 make_default_generic() 691 make_default_generic()
689 { 692 {
690 # $1 is vendor-name.desktop 693 # $1 is vendor-name.desktop
691 # $2 is mime/type 694 # $2 is mime/type
692 # Add $2=$1 to XDG_DATA_HOME/applications/defaults.list 695 # Add $2=$1 to XDG_DATA_HOME/applications/mimeapps.list
693 xdg_user_dir="$XDG_DATA_HOME" 696 xdg_user_dir="$XDG_DATA_HOME"
694 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" 697 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share"
695 default_file="$xdg_user_dir/applications/defaults.list" 698 default_file="$xdg_user_dir/applications/mimeapps.list"
696 DEBUG 2 "make_default_generic $1 $2" 699 DEBUG 2 "make_default_generic $1 $2"
697 DEBUG 1 "Updating $default_file" 700 DEBUG 1 "Updating $default_file"
698 grep -v "$2=" $default_file > ${default_file}.new 2> /dev/null 701 awk -v mimetype="$2" -v application="$1" '
699 if ! grep "[Default Applications]" ${default_file}.new > /dev/null; then 702 BEGIN {
700 echo "[Default Applications]" >> ${default_file}.new 703 prefix=mimetype "="
701 fi 704 indefault=0
702 echo $2=$1 >> ${default_file}.new 705 added=0
703 mv ${default_file}.new $default_file 706 blanks=0
707 found=0
708 }
709 {
710 suppress=0
711 if (index($0, "[Default Applications]") == 1) {
712 indefault=1
713 found=1
714 } else if (index($0, "[") == 1) {
715 if (!added && indefault) {
716 print prefix application
717 added=1
718 }
719 indefault=0
720 } else if ($0 == "") {
721 suppress=1
722 blanks++
723 } else if (indefault && !added && index($0, prefix) == 1) {
724 $0=prefix application
725 added=1
726 }
727 if (!suppress) {
728 while (blanks > 0) {
729 print ""
730 blanks--
731 }
732 print $0
733 }
734 }
735 END {
736 if (!added) {
737 if (!found) {
738 print ""
739 print "[Default Applications]"
740 }
741 print prefix application
742 }
743 while (blanks > 0) {
744 print ""
745 blanks--
746 }
747 }
748 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file
704 } 749 }
705 750
706 defapp_generic() 751 defapp_generic()
707 { 752 {
708 MIME="$1" 753 MIME="$1"
709 xdg_user_dir="$XDG_DATA_HOME" 754 xdg_user_dir="$XDG_DATA_HOME"
710 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" 755 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share"
711 xdg_user_dir="$xdg_user_dir/$xdg_dir_name" 756 xdg_user_dir="$xdg_user_dir/$xdg_dir_name"
712 xdg_system_dirs="$XDG_DATA_DIRS" 757 xdg_system_dirs="$XDG_DATA_DIRS"
713 [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/ 758 [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/
714 759
715 for x in `echo "$xdg_user_dir:$xdg_system_dirs" | sed 's/:/ /g'`; do 760 for x in `echo "$xdg_user_dir" | sed 's/:/ /g'`; do
761 mimeapps_list="$x/applications/mimeapps.list"
762 if [ -f "$mimeapps_list" ] ; then
763 DEBUG 2 "Checking $mimeapps_list"
764 trader_result=`awk -v mimetype="$MIME" '
765 BEGIN {
766 prefix=mimetype "="
767 indefault=0
768 found=0
769 }
770 {
771 if (index($0, "[Default Applications]") == 1) {
772 indefault=1
773 } else if (index($0, "[") == 1) {
774 indefault=0
775 } else if (!found && indefault && index($0, prefix) == 1) {
776 print substr($0, length(prefix) +1, length)
777 found=1
778 }
779 }
780 ' $mimeapps_list`
781 if [ -n "$trader_result" ] ; then
782 echo $trader_result
783 exit_success
784 fi
785 fi
786 done
787
788 for x in `echo "$xdg_system_dirs" | sed 's/:/ /g'`; do
716 DEBUG 2 "Checking $x/applications/defaults.list" 789 DEBUG 2 "Checking $x/applications/defaults.list"
717 trader_result=`grep "$MIME=" $x/applications/defaults.list 2> /dev/null | cut -d '=' -f 2 | cut -d ';' -f 1` 790 trader_result=`grep "$MIME=" $x/applications/defaults.list 2> /dev/null | cut -d '=' -f 2 | cut -d ';' -f 1`
718 if [ -n "$trader_result" ] ; then 791 if [ -n "$trader_result" ] ; then
719 echo $trader_result 792 echo $trader_result
720 exit_success 793 exit_success
721 fi 794 fi
722 done 795 done
723 exit_success 796 exit_success
724 } 797 }
725 798
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after
1241 rm -f $kde_dir/$x.desktop 1314 rm -f $kde_dir/$x.desktop
1242 fi 1315 fi
1243 done 1316 done
1244 ;; 1317 ;;
1245 esac 1318 esac
1246 1319
1247 update_mime_database $xdg_base_dir 1320 update_mime_database $xdg_base_dir
1248 1321
1249 exit_success 1322 exit_success
1250 1323
OLDNEW
« no previous file with comments | « scripts/xdg-icon-resource ('k') | scripts/xdg-mime.in » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698