X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fbash.git;a=blobdiff_plain;f=builtins%2Fevalfile.c;h=1116b09341e3bd51091d951cc6ff2217a759a0cc;hp=dad987ae32b96fb65b35f135d7cc9bbafe810ad8;hb=28ef6c316f1aff914bb95ac09787a3c83c1815fd;hpb=bb70624e964126b7ac4ff085ba163a9c35ffa18f diff --git a/builtins/evalfile.c b/builtins/evalfile.c index dad987ae3..1116b0934 100644 --- a/builtins/evalfile.c +++ b/builtins/evalfile.c @@ -56,6 +56,7 @@ extern int errno; #define FEVAL_NONINT 0x008 #define FEVAL_LONGJMP 0x010 #define FEVAL_HISTORY 0x020 +#define FEVAL_CHECKBINARY 0x040 extern int interactive, interactive_shell, posixly_correct; extern int indirection_level, startup_state, subshell_environment; @@ -87,7 +88,7 @@ file_error_and_exit: file_error (filename); if (flags & FEVAL_LONGJMP) - { + { last_command_exit_value = 1; jump_to_top_level (EXITPROG); } @@ -116,6 +117,11 @@ file_error_and_exit: (*errfunc) ("%s: file is too large", filename); return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1); } + +#if defined (__CYGWIN__) && defined (O_TEXT) + setmode (fd, O_TEXT); +#endif + string = xmalloc (1 + file_size); result = read (fd, string, file_size); string[result] = '\0'; @@ -136,7 +142,8 @@ file_error_and_exit: return ((flags & FEVAL_BUILTIN) ? EXECUTION_SUCCESS : 1); } - if (check_binary_file ((unsigned char *)string, (result > 80) ? 80 : result)) + if ((flags & FEVAL_CHECKBINARY) && + check_binary_file ((unsigned char *)string, (result > 80) ? 80 : result)) { free (string); (*errfunc) ("%s: cannot execute binary file", filename);