From dac0db4603d731ab38852eae3a073059c7ea03eaf9cde25597eca66dd181e5fc Mon Sep 17 00:00:00 2001 From: OBS User autobuild Date: Fri, 21 Aug 2009 14:52:38 +0000 Subject: [PATCH] Accepting request 18111 from X11:common:Factory Copy from X11:common:Factory/xdg-utils based on submit request 18111 from user llunak OBS-URL: https://build.opensuse.org/request/show/18111 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xdg-utils?expand=0&rev=9 --- xdg-kde4-upstream.patch | 388 ++++++++++++++++++++++++++++++++++++++++ xdg-utils.changes | 5 + xdg-utils.spec | 33 +--- 3 files changed, 397 insertions(+), 29 deletions(-) create mode 100644 xdg-kde4-upstream.patch diff --git a/xdg-kde4-upstream.patch b/xdg-kde4-upstream.patch new file mode 100644 index 0000000..4ac896d --- /dev/null +++ b/xdg-kde4-upstream.patch @@ -0,0 +1,388 @@ +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 diff --git a/xdg-utils.changes b/xdg-utils.changes index f388de1..cd49f51 100644 --- a/xdg-utils.changes +++ b/xdg-utils.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Sun Aug 16 13:43:52 CEST 2009 - aj@suse.de + +- Add some support for KDE4, taken from upstream CVS. + ------------------------------------------------------------------- Thu Feb 7 13:13:48 CET 2008 - dmueller@suse.de diff --git a/xdg-utils.spec b/xdg-utils.spec index a907b5e..af34d32 100644 --- a/xdg-utils.spec +++ b/xdg-utils.spec @@ -20,11 +20,11 @@ Name: xdg-utils BuildRequires: make -License: X11/MIT +License: MIT License (or similar) Group: System/GUI/Other Summary: Utilities to uniformly interface desktop environments Version: 1.0.2 -Release: 81 +Release: 82 BuildArch: noarch Url: http://portland.freedesktop.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -32,6 +32,7 @@ Source0: %name-%{version}.tar.bz2 Patch0: xdg-su.diff Patch1: xfce-su.diff Patch2: CVE-2008-0386.diff +Patch3: xdg-kde4-upstream.patch %description The xdg-utils package is a set of simple scripts that provide basic @@ -55,6 +56,7 @@ these utilities work properly in their environment. %patch0 %patch1 %patch2 +%patch3 -p1 %build %configure @@ -92,30 +94,3 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/xdg-screensaver.1.gz %changelog -* Thu Feb 07 2008 dmueller@suse.de -- fix command injection (#bnc355061, CVE-2008-0386) -* Mon Oct 22 2007 stbinner@suse.de -- update to 1.0.2: - * SVG icons are not supported but doc still mentioned SVG - * xdg-email can now be used without any e-mail address - * do not use mktemp without arguments, it breaks on systems with - certain older versions of mktemp -* Thu Sep 20 2007 dmueller@suse.de -- fix xdg-su outside KDE/GNOME (#309164) -* Thu Aug 30 2007 dmueller@suse.de -- fix xdg-su for XFCE (#304753) -* Tue May 22 2007 dmueller@suse.de -- add xdg-su (#275937) -* Mon Nov 06 2006 dmueller@suse.de -- update to 1.0.1: - * Several shell syntax issues causing failures on Ubuntu 6.10 - * Spurious output on stdout when running xdg-desktop-menu - * Non-ascii mailto URI handling of xdg-email on non-UTF8 locales - under KDE -* Fri Oct 27 2006 dmueller@suse.de -- don't build as root -* Wed Sep 27 2006 dmueller@suse.de -- update to 1.0rc1: - * for changes, see /usr/share/doc/packages/xdg-utils/ChangeLog -* Thu Jun 22 2006 dmueller@suse.de -- Initial package (TP1)