Package: xdg-utils
Version: 1.1.0~rc1+git20111210-7.1

Xdg-open reads the entire file while determining the program to open it with. This may take a long time if the file is large or on a slow medium.

I use fluxbox and therefore xdg-open uses open_generic_xdg_mime(). The for loop (L539) is run 3 times and first two iterations do not match either of the following if clauses. Therefore the original filename ($file) is passed as an argument to the following greps (L549,L551) and the file is grepped through several times.

As a quick fix I added an else clause clearing the $file in case the if's do not match. A more proper fix might be to verify that $file is actually *.desktop in the latter if clause (L348), but I'll leave that to the pros :)

for x in `echo "$xdg_user_dir:$xdg_system_dirs" | sed 's/:/ /g'`; do
  local file
  # look for both vendor-app.desktop, vendor/app.desktop
  if [ -r "$x/applications/$default" ]; then
    file="$x/applications/$default"
  elif [ -r "$x/applications/`echo $default | sed -e 's|-|/|'`" ]; then
    file="$x/applications/`echo $default | sed -e 's|-|/|'`"
+ else
+   file=""
  fi


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to