Module: wine Branch: master Commit: cb3815aead2588030f002616ffbb03ab5eea760e URL: http://source.winehq.org/git/wine.git/?a=commit;h=cb3815aead2588030f002616ff...
Author: Huw Davies huw@codeweavers.com Date: Tue Jan 22 15:51:48 2013 +0000
wineps: Cope with '\r'-only end-of-line markers.
---
dlls/wineps.drv/ppd.c | 16 +++++++++++++--- 1 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/dlls/wineps.drv/ppd.c b/dlls/wineps.drv/ppd.c index a18c42c..adb6a21 100644 --- a/dlls/wineps.drv/ppd.c +++ b/dlls/wineps.drv/ppd.c @@ -266,7 +266,15 @@ static BOOL get_line( char *buf, int size, struct map_context *ctx ) { if (ctx->pos > ctx->end) break; buf[i] = *ctx->pos++; - if (buf[i] == '\n') + + /* \r\n -> \n */ + if (buf[i] == '\r' && ctx->pos <= ctx->end && *ctx->pos == '\n') + { + ctx->pos++; + buf[i] = '\n'; + } + + if (buf[i] == '\n' || buf[i] == '\r') { i++; break; @@ -394,9 +402,11 @@ static BOOL PSDRV_PPDGetNextTuple(struct map_context *ctx, PPDTuple *tuple) break; } while(1);
- if(line[strlen(line)-1] != '\n') { + cp = line + strlen(line) - 1; + if (*cp != '\n' && *cp != '\r') + { ERR("Line too long.\n"); - goto start; + goto start; }
for(cp = line; !isspace(*cp) && *cp != ':'; cp++)