File xdg-kde4-upstream.patch of Package xdg-utils

Index: xdg-utils/scripts/xdg-email
===================================================================
RCS file: /cvs/portland/portland/xdg-utils/scripts/xdg-email,v
retrieving revision 1.37
retrieving revision 1.39
diff -u -p -r1.37 -r1.39
--- xdg-utils/scripts/xdg-email	24 Jan 2008 20:24:50 -0000	1.37
+++ xdg-utils/scripts/xdg-email	27 Jul 2009 15:44:14 -0000	1.39
@@ -367,7 +367,7 @@ detectDE()
 
 kfmclient_fix_exit_code()
 {
-    version=`kde-config --version 2>/dev/null | grep KDE`
+    version=`kde${KDE_SESSION_VERSION}-config --version 2>/dev/null | grep KDE`
     major=`echo $version | sed 's/KDE: \([0-9]\).*/\1/'`
     minor=`echo $version | sed 's/KDE: [0-9]*\.\([0-9]\).*/\1/'`
     release=`echo $version | sed 's/KDE: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'`
@@ -393,8 +393,13 @@ open_kde()
         fi
     fi
     DEBUG 1 "Running kmailservice \"$1\""
+    if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
+        KMAILSERVICE=`kde4-config --locate kmailservice --path exe 2>/dev/null`
+    else
+        KMAILSERVICE=`which kmailservice 2>/dev/null`
+    fi
     # KDE uses locale's encoding when decoding the URI, so set it to UTF-8
-    LC_ALL=C.UTF-8 kmailservice "$1"
+    LC_ALL=C.UTF-8 $KMAILSERVICE "$1"
     kfmclient_fix_exit_code $?
 
     if [ $? -eq 0 ]; then
Index: xdg-utils/scripts/xdg-mime
===================================================================
RCS file: /cvs/portland/portland/xdg-utils/scripts/xdg-mime,v
retrieving revision 1.46
retrieving revision 1.56
diff -u -p -r1.46 -r1.56
--- xdg-utils/scripts/xdg-mime	4 Nov 2006 06:23:49 -0000	1.46
+++ xdg-utils/scripts/xdg-mime	31 Jul 2009 06:42:46 -0000	1.56
@@ -436,7 +436,7 @@ detectDE()
 
 kfmclient_fix_exit_code()
 {
-    version=`kde-config --version 2>/dev/null | grep KDE`
+    version=`kde${KDE_SESSION_VERSION}-config --version 2>/dev/null | grep KDE`
     major=`echo $version | sed 's/KDE: \([0-9]\).*/\1/'`
     minor=`echo $version | sed 's/KDE: [0-9]*\.\([0-9]\).*/\1/'`
     release=`echo $version | sed 's/KDE: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'`
@@ -452,7 +452,11 @@ update_mime_database()
       detectDE
       if [ x"$DE" = x"kde" ] ; then
          DEBUG 1 "Running kbuildsycoca"
-         eval 'kbuildsycoca'$xdg_redirect_output
+         if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
+             eval 'kbuildsycoca4'$xdg_redirect_output
+         else
+             eval 'kbuildsycoca'$xdg_redirect_output
+         fi
       fi
    fi
    for x in `echo "$PATH:/opt/gnome/bin" | sed 's/:/ /g'`; do
@@ -466,8 +470,15 @@ update_mime_database()
 
 info_kde()
 {
-    DEBUG 1 "Running kfile \"$1\""
-    kfile "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1
+    if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
+        DEBUG 1 "Running kmimetypefinder \"$1\""
+        KMIMETYPEFINDER=`which kmimetypefinder 2>/dev/null`
+        $KMIMETYPEFINDER "$1" 2>/dev/null | head -n 1
+    else
+        DEBUG 1 "Running kfile \"$1\""
+        KFILE=`which kfile 2>/dev/null`
+        $KFILE "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1
+    fi
 
     exit_success
 }
@@ -483,7 +494,7 @@ info_gnome()
 
 info_generic()
 {
-    DEBUG 1 "Running /usr/bin/file -i \"$1\"" 
+    DEBUG 1 "Running file -i \"$1\""
     /usr/bin/file -i "$1" 2> /dev/null | cut -d ":" -f 2 | sed s/"^ "//
 
     exit_success
@@ -492,25 +503,47 @@ info_generic()
 make_default_kde()
 {
     # $1 is vendor-name.desktop
-    # $2 is mime/type 
-    # Add to $KDE_HOME/share/config/profilerc:
+    # $2 is mime/type
+    #
+    # On KDE 3, add to $KDE_CONFIG_PATH/profilerc:
     # [$2 - 1]
     # Application=$1
     #
     # Remove all [$2 - *] sections, or even better,
     # renumber [$2 - *] sections and remove duplicate
-    
-    default_file="$HOME/.kde/share/config/profilerc"
-    DEBUG 2 "make_default_kde $1 $2"
+    #
+    # On KDE 4, add $2=$1 to $XDG_DATA_APPS/mimeapps.list
+    #
+    # Example file:
+    #
+    # [Added Associations]
+    # text/plain=kde4-kate.desktop;kde4-kwrite.desktop;
+    #
+    # [Removed Associations]
+    # text/plain=gnome-gedit.desktop;gnu-emacs.desktop;
+    vendor="$1"
+    mimetype="$2"
+    if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
+        default_dir=`kde4-config --path xdgdata-apps | cut -d ':' -f 1`
+        default_file="$default_dir/mimeapps.list"
+    else
+        default_dir=`kde-config --path config | cut -d ':' -f 1`
+        default_file="$default_dir/profilerc"
+    fi
+    DEBUG 2 "make_default_kde $vendor $mimetype"
     DEBUG 1 "Updating $default_file"
-    mkdir -p "$HOME/.kde/share/config"
+    mkdir -p "$default_dir"
     [ -f $default_file ] || touch $default_file
-    awk -v application="$1" -v mimetype="$2" '
+    if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
+        # FIXME update the required section "[Added Associations]"
+        DEBUG 1 "NOT IMPLEMENTED YET"
+    else
+        awk -v application="$vendor" -v mimetype="$mimetype" '
     BEGIN {
         header_start="[" mimetype " - "
         supress=0
     }
-    {  
+    {
         if (index($0, header_start) == 1 )
             supress=1
         else
@@ -521,7 +554,7 @@ make_default_kde()
         }
     }
     END {
-        print "" 
+        print ""
         print "[" mimetype " - 1]"
         print "Application=" application
         print "AllowAsDefault=true"
@@ -530,18 +563,21 @@ make_default_kde()
         print "ServiceType=" mimetype
     }
 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file
+    fi
 }
 
 make_default_generic()
 {
     # $1 is vendor-name.desktop
-    # $2 is mime/type 
+    # $2 is mime/type
     # Add $2=$1 to XDG_DATA_HOME/applications/defaults.list
     xdg_user_dir="$XDG_DATA_HOME"
     [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share"
     default_file="$xdg_user_dir/applications/defaults.list"
     DEBUG 2 "make_default_generic $1 $2"
     DEBUG 1 "Updating $default_file"
+    mkdir -p "$xdg_user_dir/applications"
+    [ -f $default_file ] || touch $default_file
     grep -v "$2=" $default_file > ${default_file}.new 2> /dev/null
     if ! grep "[Default Applications]" ${default_file}.new > /dev/null; then
        echo "[Default Applications]" >> ${default_file}.new
@@ -573,11 +609,17 @@ defapp_generic()
 defapp_kde()
 {
     MIME="$1"
-    ktradertest=`which ktradertest 2> /dev/null`
-    if [ -n "$ktradertest" ] ; then
-        DEBUG 1 "Running ktradertest \"$MIME\" Application"
-        trader_result=`ktradertest "$MIME" Application 2>/dev/null | grep DesktopEntryPath \
-            | head -n 1 | cut -d ':' -f 2 | cut -d \' -f 2`
+    if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
+        KTRADER=`which ktraderclient 2> /dev/null`
+        MIMETYPE="--mimetype"
+        SERVICETYPE="--servicetype"
+    else
+        KTRADER=`which ktradertest 2> /dev/null`
+    fi
+    if [ -n "$KTRADER" ] ; then
+        DEBUG 1 "Running KDE trader query \"$MIME\" mimetype and \"Application\" servicetype"
+        trader_result=`$KTRADER $MIMETYPE "$MIME" $SERVICETYPE Application 2>/dev/null \
+            | grep DesktopEntryPath | head -n 1 | cut -d ':' -f 2 | cut -d \' -f 2`
         if [ -n "$trader_result" ] ; then
             basename "$trader_result"
             exit_success
@@ -608,16 +650,16 @@ case $1 in
   query)
     shift
 
-    if [ -z "$1" ] ; then 
+    if [ -z "$1" ] ; then
         exit_failure_syntax "query type argument missing"
     fi
-    
+
     case $1 in
       filetype)
         action=info
 
         filename="$2"
-        if [ -z "$filename" ] ; then 
+        if [ -z "$filename" ] ; then
             exit_failure_syntax "FILE argument missing"
         fi
         case $filename in
@@ -631,7 +673,7 @@ case $1 in
       default)
         action=defapp
         mimetype="$2"
-        if [ -z "$mimetype" ] ; then 
+        if [ -z "$mimetype" ] ; then
             exit_failure_syntax "mimetype argument missing"
         fi
         case $mimetype in
@@ -659,7 +701,7 @@ case $1 in
     action=makedefault
     shift
 
-    if [ -z "$1" ] ; then 
+    if [ -z "$1" ] ; then
         exit_failure_syntax "application argument missing"
     fi
     case $1 in
@@ -686,7 +728,7 @@ shift
 
 
 if [ "$action" = "makedefault" ]; then
-    if [ -z "$1" ] ; then 
+    if [ -z "$1" ] ; then
         exit_failure_syntax "mimetype argument missing"
     fi
 
@@ -698,7 +740,7 @@ if [ "$action" = "makedefault" ]; then
         esac
         mimetype="$1"
         shift
-        
+
         make_default_kde "$filename" "$mimetype"
         make_default_generic "$filename" "$mimetype"
     done
@@ -723,7 +765,7 @@ if [ "$action" = "info" ]; then
         info_gnome "$filename"
         ;;
 
-        generic)
+        *)
         info_generic "$filename"
         ;;
     esac
@@ -763,7 +805,7 @@ while [ $# -gt 0 ] ; do
           system)
             mode="system"
             ;;
-            
+
           *)
             exit_failure_syntax "unknown mode '$1'"
             ;;
@@ -842,7 +884,7 @@ DEBUG 3 "xdg_global_dir: $xdg_global_dir
 # Find KDE3 mimelnk directory
 kde_user_dir=
 kde_global_dir=
-kde_global_dirs=`kde-config --path mime 2> /dev/null`
+kde_global_dirs=`kde${KDE_SESSION_VERSION}-config --path mime 2> /dev/null`
 DEBUG 3 "kde_global_dirs: $kde_global_dirs"
 first=
 for x in `echo $kde_global_dirs | sed 's/:/ /g'` ; do
@@ -897,7 +939,7 @@ BEGIN {
  supress=0
 }
 {
- do 
+ do
     if (supress) {
        if (match($0,/-->/)) {
            $0=substr($0,RSTART+RLENGTH)
@@ -932,7 +974,7 @@ BEGIN {
     }
   }
 }'`
-fi  
+fi
 
 DEBUG 1 "$action mimetype in $xdg_dir"
 
@@ -948,7 +990,7 @@ case $action in
 
         if [ -n "$mimetypes" ] ; then
             # No quotes around $mimetypes
-            for x in $mimetypes ; do 
+            for x in $mimetypes ; do
                 DEBUG 1 "Installing $kde_dir/$x.desktop (KDE 3.x support)"
                 mkdir -p `dirname $kde_dir/$x.desktop`
                 awk < "$filename" '
@@ -957,7 +999,7 @@ BEGIN {
  supress=0
 }
 {
- do 
+ do
     if (supress) {
        if (match($0,/-->/)) {
            $0=substr($0,RSTART+RLENGTH)
@@ -982,7 +1024,7 @@ BEGIN {
 }
 ' | awk > $kde_dir/$x.desktop '
 # Extract mimetype $x from the XML file $filename
-# Note that bash requires us to escape a single quote as '"'"' 
+# Note that bash requires us to escape a single quote as '"'"'
 BEGIN {
   the_type=ARGV[1]
   the_source=ARGV[2]
@@ -1002,7 +1044,7 @@ BEGIN {
         print "MimeType=" the_type
         the_icon=the_type
         sub("/", "-", the_icon)
-        print "Icon=" the_icon 
+        print "Icon=" the_icon
       }
     }
   }
@@ -1014,25 +1056,25 @@ BEGIN {
     }
 
     if (match($0,/^sub-class-of/)) {
-      if (match($0,/type="[^"]*/) || match($0,/type='"'"'[^'"'"']*/)) {    
+      if (match($0,/type="[^"]*/) || match($0,/type='"'"'[^'"'"']*/)) {
         print "X-KDE-IsAlso=" substr($0,RSTART+6,RLENGTH-6)
       }
       else {
         print "Error: '"'"'type'"'"' argument missing in " RS $0
-        exit 1 
+        exit 1
       }
     }
     if (match($0,/^glob/)) {
-      if (match($0,/pattern="[^"]*/) || match($0,/pattern='"'"'[^'"'"']*/)) {    
+      if (match($0,/pattern="[^"]*/) || match($0,/pattern='"'"'[^'"'"']*/)) {
         glob_patterns = glob_patterns substr($0,RSTART+9,RLENGTH-9) ";"
       }
       else {
         print "Error: '"'"'pattern'"'"' argument missing in " RS $0
-        exit 1 
+        exit 1
       }
     }
     if (match($0,/^comment/)) {
-      if (match($0,/xml:lang="[^"]*/) || match($0,/xml:lang='"'"'[^'"'"']*/)) {    
+      if (match($0,/xml:lang="[^"]*/) || match($0,/xml:lang='"'"'[^'"'"']*/)) {
         lang=substr($0,RSTART+10,RLENGTH-10)
       }
       else {
@@ -1061,7 +1103,7 @@ END {
                 if [ "$?" = "1" ] ; then
                     grep -A 10 "^Error:" $kde_dir/$x.desktop >&2
                     rm $kde_dir/$x.desktop
-                    exit 1  
+                    exit 1
                 fi
             done
         fi
@@ -1075,8 +1117,8 @@ END {
         done
 
         # No quotes around $mimetypes
-        for x in $mimetypes ; do 
-            if grep '^# Installed by xdg-mime' $kde_dir/$x.desktop &>/dev/null ; then
+        for x in $mimetypes ; do
+            if grep '^# Installed by xdg-mime' $kde_dir/$x.desktop >/dev/null 2>&1; then
                 DEBUG 1 "Removing $kde_dir/$x.desktop (KDE 3.x support)"
                 rm -f $kde_dir/$x.desktop
             fi
openSUSE Build Service is sponsored by