Keep track of last written character instead of previous character in buffer. This allow handling of leading and single newlines.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3750
This commit is contained in:
parent
68a1725e0f
commit
81085e036e
1 changed files with 5 additions and 4 deletions
|
@ -128,6 +128,7 @@ void Program::ChangeToLongCmd() {
|
|||
full_arguments.assign(""); //Clear so it gets even more save
|
||||
}
|
||||
|
||||
static char last_written_character = 0;//For 0xA to OxD 0xA expansion
|
||||
void Program::WriteOut(const char * format,...) {
|
||||
char buf[2048];
|
||||
va_list msg;
|
||||
|
@ -139,10 +140,10 @@ void Program::WriteOut(const char * format,...) {
|
|||
Bit16u size = (Bit16u)strlen(buf);
|
||||
for(Bit16u i = 0; i < size;i++) {
|
||||
Bit8u out;Bit16u s=1;
|
||||
if (buf[i] == 0xA && i > 0 && buf[i-1] !=0xD) {
|
||||
if (buf[i] == 0xA && last_written_character != 0xD) {
|
||||
out = 0xD;DOS_WriteFile(STDOUT,&out,&s);
|
||||
}
|
||||
out = buf[i];
|
||||
last_written_character = out = buf[i];
|
||||
DOS_WriteFile(STDOUT,&out,&s);
|
||||
}
|
||||
|
||||
|
@ -154,10 +155,10 @@ void Program::WriteOut_NoParsing(const char * format) {
|
|||
char const* buf = format;
|
||||
for(Bit16u i = 0; i < size;i++) {
|
||||
Bit8u out;Bit16u s=1;
|
||||
if (buf[i] == 0xA && i > 0 && buf[i-1] !=0xD) {
|
||||
if (buf[i] == 0xA && last_written_character != 0xD) {
|
||||
out = 0xD;DOS_WriteFile(STDOUT,&out,&s);
|
||||
}
|
||||
out = buf[i];
|
||||
last_written_character = out = buf[i];
|
||||
DOS_WriteFile(STDOUT,&out,&s);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue