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

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

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-mime ('k') | 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 2009-2010, Fathi Boudra <fabo@freedesktop.org> 10 # Copyright 2009-2010, Fathi Boudra <fabo@freedesktop.org>
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 eval '$x/update-mime-database $1'$xdg_redirect_output 49 eval '$x/update-mime-database $1'$xdg_redirect_output
50 return 50 return
51 fi 51 fi
52 done 52 done
53 } 53 }
54 54
55 info_kde() 55 info_kde()
56 { 56 {
57 if [ x"$KDE_SESSION_VERSION" = x"4" ]; then 57 if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
58 DEBUG 1 "Running kmimetypefinder \"$1\"" 58 DEBUG 1 "Running kmimetypefinder \"$1\""
59 KMIMETYPEFINDER=`which kmimetypefinder 2>/dev/null` 59 kmimetypefinder "$1" 2>/dev/null | head -n 1
60 $KMIMETYPEFINDER "$1" 2>/dev/null | head -n 1
61 else 60 else
62 DEBUG 1 "Running kfile \"$1\"" 61 DEBUG 1 "Running kfile \"$1\""
63 KFILE=`which kfile 2>/dev/null` 62 kfile "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1
64 $KFILE "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1
65 fi 63 fi
66 64
67 if [ $? -eq 0 ]; then 65 if [ $? -eq 0 ]; then
68 exit_success 66 exit_success
69 else 67 else
70 exit_failure_operation_failed 68 exit_failure_operation_failed
71 fi 69 fi
72 } 70 }
73 71
74 info_gnome() 72 info_gnome()
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 print "ServiceType=" mimetype 232 print "ServiceType=" mimetype
235 } 233 }
236 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file 234 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file
237 fi 235 fi
238 } 236 }
239 237
240 make_default_generic() 238 make_default_generic()
241 { 239 {
242 # $1 is vendor-name.desktop 240 # $1 is vendor-name.desktop
243 # $2 is mime/type 241 # $2 is mime/type
244 # Add $2=$1 to XDG_DATA_HOME/applications/defaults.list 242 # Add $2=$1 to XDG_DATA_HOME/applications/mimeapps.list
245 xdg_user_dir="$XDG_DATA_HOME" 243 xdg_user_dir="$XDG_DATA_HOME"
246 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" 244 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share"
247 default_file="$xdg_user_dir/applications/defaults.list" 245 default_file="$xdg_user_dir/applications/mimeapps.list"
248 DEBUG 2 "make_default_generic $1 $2" 246 DEBUG 2 "make_default_generic $1 $2"
249 DEBUG 1 "Updating $default_file" 247 DEBUG 1 "Updating $default_file"
250 grep -v "$2=" $default_file > ${default_file}.new 2> /dev/null 248 awk -v mimetype="$2" -v application="$1" '
251 if ! grep "[Default Applications]" ${default_file}.new > /dev/null; then 249 BEGIN {
252 echo "[Default Applications]" >> ${default_file}.new 250 prefix=mimetype "="
253 fi 251 indefault=0
254 echo $2=$1 >> ${default_file}.new 252 added=0
255 mv ${default_file}.new $default_file 253 blanks=0
254 found=0
255 }
256 {
257 suppress=0
258 if (index($0, "[Default Applications]") == 1) {
259 indefault=1
260 found=1
261 } else if (index($0, "[") == 1) {
262 if (!added && indefault) {
263 print prefix application
264 added=1
265 }
266 indefault=0
267 } else if ($0 == "") {
268 suppress=1
269 blanks++
270 } else if (indefault && !added && index($0, prefix) == 1) {
271 $0=prefix application
272 added=1
273 }
274 if (!suppress) {
275 while (blanks > 0) {
276 print ""
277 blanks--
278 }
279 print $0
280 }
281 }
282 END {
283 if (!added) {
284 if (!found) {
285 print ""
286 print "[Default Applications]"
287 }
288 print prefix application
289 }
290 while (blanks > 0) {
291 print ""
292 blanks--
293 }
294 }
295 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file
256 } 296 }
257 297
258 defapp_generic() 298 defapp_generic()
259 { 299 {
260 MIME="$1" 300 MIME="$1"
261 xdg_user_dir="$XDG_DATA_HOME" 301 xdg_user_dir="$XDG_DATA_HOME"
262 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" 302 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share"
263 xdg_user_dir="$xdg_user_dir/$xdg_dir_name" 303 xdg_user_dir="$xdg_user_dir/$xdg_dir_name"
264 xdg_system_dirs="$XDG_DATA_DIRS" 304 xdg_system_dirs="$XDG_DATA_DIRS"
265 [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/ 305 [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/
266 306
267 for x in `echo "$xdg_user_dir:$xdg_system_dirs" | sed 's/:/ /g'`; do 307 for x in `echo "$xdg_user_dir" | sed 's/:/ /g'`; do
308 mimeapps_list="$x/applications/mimeapps.list"
309 if [ -f "$mimeapps_list" ] ; then
310 DEBUG 2 "Checking $mimeapps_list"
311 trader_result=`awk -v mimetype="$MIME" '
312 BEGIN {
313 prefix=mimetype "="
314 indefault=0
315 found=0
316 }
317 {
318 if (index($0, "[Default Applications]") == 1) {
319 indefault=1
320 } else if (index($0, "[") == 1) {
321 indefault=0
322 } else if (!found && indefault && index($0, prefix) == 1) {
323 print substr($0, length(prefix) +1, length)
324 found=1
325 }
326 }
327 ' $mimeapps_list`
328 if [ -n "$trader_result" ] ; then
329 echo $trader_result
330 exit_success
331 fi
332 fi
333 done
334
335 for x in `echo "$xdg_system_dirs" | sed 's/:/ /g'`; do
268 DEBUG 2 "Checking $x/applications/defaults.list" 336 DEBUG 2 "Checking $x/applications/defaults.list"
269 trader_result=`grep "$MIME=" $x/applications/defaults.list 2> /dev/null | cut -d '=' -f 2 | cut -d ';' -f 1` 337 trader_result=`grep "$MIME=" $x/applications/defaults.list 2> /dev/null | cut -d '=' -f 2 | cut -d ';' -f 1`
270 if [ -n "$trader_result" ] ; then 338 if [ -n "$trader_result" ] ; then
271 echo $trader_result 339 echo $trader_result
272 exit_success 340 exit_success
273 fi 341 fi
274 done 342 done
275 exit_success 343 exit_success
276 } 344 }
277 345
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 rm -f $kde_dir/$x.desktop 861 rm -f $kde_dir/$x.desktop
794 fi 862 fi
795 done 863 done
796 ;; 864 ;;
797 esac 865 esac
798 866
799 update_mime_database $xdg_base_dir 867 update_mime_database $xdg_base_dir
800 868
801 exit_success 869 exit_success
802 870
OLDNEW
« no previous file with comments | « scripts/xdg-mime ('k') | scripts/xdg-open » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698