emacs decompress gzip file in dired won't work

gzip problem

when using emacs on Windows, when in dired, when i press Z on a file that's gzip compressed, emacs tells me:
'gunzip' is not recognized as an internal or external command,

the problem is apparently that emacs won't recognize the gunzip shell script without the exe suffix. (the gunzip is in the same dir as gzip.exe) But if i rename gunzip to gunzip.exe, but Windows complain that the file is not a exe format.

How to solve this problem?

extra detail:

when i do
(executable-find "gzip")
emacs says

(executable-find "gunzip")

the gunzip exists at
which is a shell script.

∑ http://xahlee.org/

this is reported as emacs bug

So far, i haven't been able to get this to work, after taking in all the suggestions in this thread.

Here's a more full report.

Suppose in dired you have a a file named x.txt.gz, and you move your cursor to it, then press Z. Emacs will ask you “Compress or uncompress x.txt.gz? (y or n)”. Answer y should uncompress the file, as the expected behavior.

I have “gunzip” installed by cygwin at “C:\cygwin\bin”. In emacs, when you do a “shell-command” then “which gunzip”, the output is “/usr/bin/gunzip”. This means, emacs can find the file.

The content of that file is:
exec gzip -d "$@"

Here's the problem. When i do Z, i get this error:
“apply: Searching for program: no such file or directory, gunzip”.

This is odd and shouldn't happen, since the file is right there and emacs can find the file by “which gunzip”.

if i rename the file to gunzip.bat, then i do Z in dired on the file, i get this error:

'#!' is not recognized as an internal or external command,
operable program or batch file.


c:\Users\xah\web\xahlee_org\emacs>exec gzip -d "$@"
'exec' is not recognized as an internal or external command,
operable program or batch file.
Failed to compressc:/Users/xah/web/xahlee_org/emacs/xxxx.txt.gz

So, apparantly, emacs can find the program now, but for some mixed reasons of Windows cmd.exe and cygwin bash and emacs, it seems to run it as win cmd.exe script and not bash. I suppose this is expected behavior.

if i rename the file to gunzip.sh, i get this error:

«apply: Searching for program: no such file or directory, gunzip»

the value of my exec-suffixes is
(".exe" ".com" ".bat" ".cmd" ".btm" "")
after changing it to
(".exe" ".com" ".bat" ".cmd" ".btm" ".sh" "")

still same error.

Renaming the file to gunzip.exe wont work because .exe files needs to be in certain format.

Note that also even if renaming to gunzip.bat or gunzip.sh worked for this emacs usage situation, that probably isn't a good solution because it will probably break cygwin, since in unix shell it is expected to be just “gunzip” not “gunzip.bat” or “gunzip.sh”. So, if renaming can work for emacs, possibly i'll just create it else where and put it in a different path...

am i missing something?

does Z in dired on a compressed file work for anyone in Windows?

∑ http://xahlee.org/

Found a solution. Create a file name gunzip.bat, with this content:

@echo off
gzip -d %1

thanks to Eli and others.

I filed a bug report to FSF on this. #4867. I think this should still considered a bug though. Considering it as a Windows OS problem isn't very helpful in solving this. I'm sure if similar problems happens in linux that's OS issue, people probably will not look at it as “Oh, it's OS issue, emacs doesn't need to deal with it”.

∑ http://xahlee.org/

No comments:

Post a Comment