Ticket #3646 (closed defect: fixed)
Filtered View does not perform shell expansion on the user's command
Reported by: | mc-hobbit | Owned by: | andrew_b |
---|---|---|---|
Priority: | major | Milestone: | 4.8.18 |
Component: | mc-core | Version: | master |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Branch state: | merged | Votes for changeset: | committed-master |
Description
What version of Midnight Commander is used?
4.8.17, complied from source on Fedora Linux 23.
[blowe@fedora ~]$ LC_MESSAGES=C /opt/mc-4.8.17/bin/mc -V GNU Midnight Commander 4.8.17 Built with GLib 2.46.2 Using the S-Lang library with terminfo database With subshell support as default With support for background operations With mouse support on xterm With support for X11 events With internationalization support With multiple codepages support Virtual File Systems: cpiofs, tarfs, sfs, extfs, ftpfs, fish Data types: char: 8; int: 32; long: 64; void *: 64; size_t: 64; off_t: 64; [blowe@fedora ~]$ LC_MESSAGES=C /opt/mc-4.8.17/bin/mc -F Root directory: /home/blowe [System data] Config directory: /opt/mc-4.8.17/etc/mc/ Data directory: /opt/mc-4.8.17/share/mc/ File extension handlers: /opt/mc-4.8.17/libexec/mc/ext.d/ VFS plugins and scripts: /opt/mc-4.8.17/libexec/mc/ extfs.d: /opt/mc-4.8.17/libexec/mc/extfs.d/ fish: /opt/mc-4.8.17/libexec/mc/fish/ [User data] Config directory: /home/blowe/.config/mc/ Data directory: /home/blowe/.local/share/mc/ skins: /home/blowe/.local/share/mc/skins/ extfs.d: /home/blowe/.local/share/mc/extfs.d/ fish: /home/blowe/.local/share/mc/fish/ Cache directory: /home/blowe/.cache/mc/ [blowe@fedora ~]$ /opt/mc-4.8.17/bin/mc --configure-options '--prefix=/opt/mc-4.8.17'
What steps will reproduce the problem?
- Go to the source sirectory for version 4.8.17
- Enter the command ls -l misc/mc*. The output will show at least 7 files.
- Start mc.
- Press Meta-! to open the "Filtered View" dialogue box
- Enter the same command: ls -l misc/mc*
What is the expected output?
An ls file listing identical to the one in step 2.
What do you see instead?
MC displays the following error:
ls: cannot access misc/mc*: No such file or directory
Change History
comment:1 Changed 8 years ago by andrew_b
- Status changed from new to accepted
- Owner set to andrew_b
- Branch state changed from no branch to on review
- Milestone changed from Future Releases to 4.8.18
comment:2 Changed 8 years ago by andrew_b
- Votes for changeset set to andrew_b
- Branch state changed from on review to approved
comment:3 Changed 8 years ago by andrew_b
- Status changed from accepted to testing
- Votes for changeset changed from andrew_b to committed-master
- Resolution set to fixed
- Branch state changed from approved to merged
Merged to master: [525104595015bacdf6066071d86dd509959616ca].
comment:5 follow-up: ↓ 7 Changed 8 years ago by zaytsev-work
I'm curious about this line:
const char *const argv[] = { "/bin/sh", "sh", "-c", command, "\0" };
Why the seemingly extra "sh", is necessary?
comment:6 Changed 8 years ago by zaytsev-work
Also, I'm wondering what's the advantage of G_SPAWN_FILE_AND_ARGV_ZERO over G_SPAWN_SEARCH_PATH... It might be safe to assume that /bin/sh is available on every sensible system, but still.
comment:7 in reply to: ↑ 5 Changed 8 years ago by andrew_b
Replying to zaytsev-work:
Why the seemingly extra "sh", is necessary?
This is common way to call exec*() function: http://pubs.opengroup.org/onlinepubs/009695399/functions/popen.html
Branch: 3646_filtered_view
changeset:a4c98a3d85ed3873db9380cc9f34425ca8685501