Added "\n" -> "\r\n" translation for console output, not yet tested.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7031 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** Copyright 2003, Axel Dörfler, [email protected]. All rights reserved.
|
** Copyright 2003-2004, Axel Dörfler, [email protected]. All rights reserved.
|
||||||
** Distributed under the terms of the OpenBeOS License.
|
** Distributed under the terms of the OpenBeOS License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ ConsoleHandle::ConsoleHandle()
|
|||||||
|
|
||||||
|
|
||||||
ssize_t
|
ssize_t
|
||||||
ConsoleHandle::ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize)
|
ConsoleHandle::ReadAt(void */*cookie*/, off_t /*pos*/, void *buffer, size_t bufferSize)
|
||||||
{
|
{
|
||||||
// don't seek in character devices
|
// don't seek in character devices
|
||||||
return of_read(fHandle, buffer, bufferSize);
|
return of_read(fHandle, buffer, bufferSize);
|
||||||
@@ -40,10 +40,37 @@ ConsoleHandle::ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize)
|
|||||||
|
|
||||||
|
|
||||||
ssize_t
|
ssize_t
|
||||||
ConsoleHandle::WriteAt(void *cookie, off_t pos, const void *buffer, size_t bufferSize)
|
ConsoleHandle::WriteAt(void */*cookie*/, off_t /*pos*/, const void *buffer, size_t bufferSize)
|
||||||
{
|
{
|
||||||
// don't seek in character devices
|
const char *string = (const char *)buffer;
|
||||||
return of_write(fHandle, buffer, bufferSize);
|
|
||||||
|
// be nice to our audience and replace single "\n" with "\r\n"
|
||||||
|
|
||||||
|
while (bufferSize > 0) {
|
||||||
|
bool newLine = false;
|
||||||
|
size_t length = 0;
|
||||||
|
|
||||||
|
for (; length < bufferSize; length++) {
|
||||||
|
if (string[length] == '\r')
|
||||||
|
length += 2;
|
||||||
|
else if (string[length] == '\n')
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (length > bufferSize)
|
||||||
|
length = bufferSize;
|
||||||
|
|
||||||
|
of_write(fHandle, string, length);
|
||||||
|
|
||||||
|
if (newLine) {
|
||||||
|
of_write(fHandle, "\r\n", 2);
|
||||||
|
string++;
|
||||||
|
bufferSize--;
|
||||||
|
}
|
||||||
|
|
||||||
|
string += length;
|
||||||
|
bufferSize -= length;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user