From: Nick Bowler Date: Mon, 25 Aug 2008 04:04:15 +0000 (-0400) Subject: Fix handling of & in FVWM menus. X-Git-Url: http://git.draconx.ca/gitweb/fvwmconf.git/commitdiff_plain/aff69fe37a3b61241bd6d3318775ee5a1b6f1712 Fix handling of & in FVWM menus. & is only magic in the _first_ field of an FVWM menu, hence it should only be escaped in those circumstances. --- diff --git a/scripts/mpdmenu.pl b/scripts/mpdmenu.pl index 5a83987..25a56b3 100755 --- a/scripts/mpdmenu.pl +++ b/scripts/mpdmenu.pl @@ -100,8 +100,8 @@ if (defined $album) { next if (defined $artist && !$accept{albumdir($t_file)}); - $t_artist = sanitise($t_artist); - $t_title = sanitise($t_title); + $t_artist = sanitise($t_artist, 0); + $t_title = sanitise($t_title, 0); my $cmd = sprintf "AddToMenu $menu \"%d\t%s - %s\"" ." Exec mpc playid %d", @@ -136,7 +136,7 @@ if (defined $album) { use locale; foreach (sort keys(%albums)) { my $key = $_; - my $a_album = sanitise($key); + my $a_album = sanitise($key, 1); open THUMB, "-|", "$FVWM/scripts/thumbnail.zsh", "--small", "--music", $albums{$key}; @@ -233,8 +233,8 @@ if (defined $album) { # MPD searches are case-insensitive. next if (!($t_title =~ m/(\P{Latin}|^)\Q$basetitle\E(\P{Latin}|$)/ || $t_title =~ m/\Q$basetitle\E/i)); - $t_artist = sanitise($t_artist); - $t_title = sanitise($t_title); + $t_artist = sanitise($t_artist, 1); + $t_title = sanitise($t_title, 1); open THUMB, "-|", "$FVWM/scripts/thumbnail.zsh", "--small", "--music", $t_file; @@ -297,12 +297,12 @@ if (defined $album) { cmd("AddToMenu $menu \"*$thumb*\" " ."Exec exec gqview ".shellify($scan, 0)); } - cmd("AddToMenu $menu \"Title: ".sanitise($entry{Title})."\" " - ."Popup MenuMPDTitle"); - cmd("AddToMenu $menu \"Artist: ".sanitise($entry{Artist})."\" " - ."Popup MenuMPDArtist"); - cmd("AddToMenu $menu \"Album: ".sanitise($entry{Album})."\" " - ."Popup MenuMPDAlbum"); + cmd("AddToMenu $menu \"Title: ".sanitise($entry{Title}, 0) + ."\" Popup MenuMPDTitle"); + cmd("AddToMenu $menu \"Artist: ".sanitise($entry{Artist}, 0) + ."\" Popup MenuMPDArtist"); + cmd("AddToMenu $menu \"Album: ".sanitise($entry{Album}, 0) + ."\" Popup MenuMPDAlbum"); cmd("AddToMenu $menu \"\" Nop"); } else { cmd("AddToMenu $menu \"\""); @@ -370,7 +370,8 @@ print $sock "close\n"; sub sanitise { $_ = $_[0]; - s/([\$&@%^*])/\1\1/g; + s/&/&&/g if ($_[1]); + s/([\$@%^*])/\1\1/g; s/"/\\"/g; return $_; }