diff options
author | Ron Yorston <rmy@pobox.com> | 2018-02-26 20:39:23 +0000 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2018-02-26 20:39:23 +0000 |
commit | 650f67507f2718dec0d4282afea619cfe7a53305 (patch) | |
tree | 82e523133f961e8337f42765307b63dc737f2580 /coreutils | |
parent | fcb5c968bef6c4fd234e000aaeaa160ac1d16f11 (diff) | |
download | busybox-w32-650f67507f2718dec0d4282afea619cfe7a53305.tar.gz busybox-w32-650f67507f2718dec0d4282afea619cfe7a53305.tar.bz2 busybox-w32-650f67507f2718dec0d4282afea619cfe7a53305.zip |
win32: move detection of file formats to stat(2)
Move the code to detect shell scripts and binary executables from
mingw_access to a separate function, has_exec_format. Call this function
in do_lstat to decide whether to set the executable bits in the file mode.
This will slow down stat but has a couple of advantages:
- shell scripts are highlighted in ls output
- the test applet can use stat(2) to detect executable files
The new function is used to handle another corner case in spawnveq:
binary executables without the usual .exe extension are only run by
spawnve if the file name ends with '.'.
Two minor changes:
- file_is_win32_executable has been renamed add_win32_extension to
clarify what it does
- a call to file_is_executable has been removed from find_command
in ash as it resulted in unhelpful error messages.
Diffstat (limited to 'coreutils')
-rw-r--r-- | coreutils/test.c | 15 |
1 files changed, 0 insertions, 15 deletions
diff --git a/coreutils/test.c b/coreutils/test.c index ed708c6d3..a8286525a 100644 --- a/coreutils/test.c +++ b/coreutils/test.c | |||
@@ -637,21 +637,6 @@ static int filstat(char *nm, enum token mode) | |||
637 | return 0; | 637 | return 0; |
638 | } | 638 | } |
639 | 639 | ||
640 | #if ENABLE_PLATFORM_MINGW32 | ||
641 | if (mode == FILEX) { | ||
642 | char *p; | ||
643 | |||
644 | if (file_is_executable(nm)) { | ||
645 | return 1; | ||
646 | } | ||
647 | else if ((p=file_is_win32_executable(nm))) { | ||
648 | free(p); | ||
649 | return 1; | ||
650 | } | ||
651 | return 0; | ||
652 | } | ||
653 | #endif | ||
654 | |||
655 | if (stat(nm, &s) != 0) | 640 | if (stat(nm, &s) != 0) |
656 | return 0; | 641 | return 0; |
657 | if (mode == FILEXIST) | 642 | if (mode == FILEXIST) |