Ok to push.
Thank you for the patch.
On 02/09/11 09:46, Dmitry Shulga wrote:
> #At file:///Users/shulga/projects/mysql/mysql-5.1-bug57450/ based on
> revid:vasil.dimov@stripped
>
> 3586 Dmitry Shulga 2011-02-09
> Follow up fix for bug#57450.
>
> batch_readline_init() was modified - return an error
> if the input source is a directory or a block device.
>
> This follow-up is necessary because on some platforms,
> such as Solaris, call to read() from directory may be
> successful.
>
> modified:
> client/mysql.cc
> client/readline.cc
> === modified file 'client/mysql.cc'
> --- a/client/mysql.cc 2011-02-05 05:02:00 +0000
> +++ b/client/mysql.cc 2011-02-09 06:46:12 +0000
> @@ -1131,6 +1131,8 @@ int main(int argc,char *argv[])
> if (status.batch&& !status.line_buff&&
> !(status.line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, stdin)))
> {
> + put_info("Can't initialize batch_readline - may be the input source is "
> + "a directory or a block device.", INFO_ERROR, 0);
> free_defaults(defaults_argv);
> my_end(0);
> exit(1);
>
> === modified file 'client/readline.cc'
> --- a/client/readline.cc 2011-02-05 05:02:00 +0000
> +++ b/client/readline.cc 2011-02-09 06:46:12 +0000
> @@ -18,6 +18,7 @@
> #include<my_global.h>
> #include<my_sys.h>
> #include<m_string.h>
> +#include<my_dir.h>
> #include "my_readline.h"
>
> static bool init_line_buffer(LINE_BUFFER *buffer,File file,ulong size,
> @@ -30,6 +31,13 @@ static char *intern_read_line(LINE_BUFFE
> LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file)
> {
> LINE_BUFFER *line_buff;
> + MY_STAT input_file_stat;
> +
> + if (my_fstat(fileno(file),&input_file_stat, MYF(MY_WME)) ||
> + MY_S_ISDIR(input_file_stat.st_mode) ||
> + MY_S_ISBLK(input_file_stat.st_mode))
> + return 0;
> +
> if (!(line_buff=(LINE_BUFFER*)
> my_malloc(sizeof(*line_buff),MYF(MY_WME | MY_ZEROFILL))))
> return 0;
>
>
>
>
>