12
12
You should have received a copy of the GNU General Public License
13
13
along with this program; if not, write to the Free Software
14
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
14
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
16
16
/* readline for batch mode */
19
#include "drizzled/internal/my_sys.h"
18
#include <drizzled/global.h>
19
#include <mysys/my_sys.h>
20
20
#include "client/linebuffer.h"
21
#include <boost/version.hpp>
25
24
using namespace std;
26
using namespace drizzled;
28
26
LineBuffer::LineBuffer(uint32_t my_max_size,FILE *my_file)
30
max_size(my_max_size),
36
if here beacuse the old way of using file_descriptor is deprecated in boost
37
1.44. There is a #define to re-enable the function but this is broken in
38
Fedora 14. See https://bugzilla.redhat.com/show_bug.cgi?id=654480
40
#if BOOST_VERSION < 104400
41
file_stream = new boost::iostreams::stream<boost::iostreams::file_descriptor>(fileno(my_file), true);
43
file_stream = new boost::iostreams::stream<boost::iostreams::file_descriptor>(fileno(my_file), boost::iostreams::never_close_handle);
46
file_stream = new std::stringstream;
47
33
line.reserve(max_size);
50
36
void LineBuffer::addString(const string &str)
52
(*file_stream) << str << endl;
38
buffer << str << endl;
55
41
char *LineBuffer::readline()
57
file_stream->getline(&line[0], max_size);
59
if (file_stream->fail())
47
if ((read_count= my_read(fileno(file),
48
(unsigned char *) (&line[0]),
49
max_size-1,MYF(MY_WME))))
51
line[read_count+1]= '\0';
58
buffer.getline(&line[0],max_size);