summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristos Zoulas <christos@zoulas.com>2005-10-17 17:39:39 +0000
committerChristos Zoulas <christos@zoulas.com>2005-10-17 17:39:39 +0000
commit5de7dd4ef84edfa431902d163915899d3b75f567 (patch)
tree34236f7536770455a932ec1b19ac63390a255efd
parent3e426216e40e9ce969347f6e90261d591c0ef3b7 (diff)
downloadfile-git-5de7dd4ef84edfa431902d163915899d3b75f567.tar.gz
Fix the '\n' chopping.
-rw-r--r--src/file.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/file.c b/src/file.c
index 3a181762..019d754a 100644
--- a/src/file.c
+++ b/src/file.c
@@ -71,7 +71,7 @@
#include "patchlevel.h"
#ifndef lint
-FILE_RCSID("@(#)$Id: file.c,v 1.98 2005/10/17 15:31:10 christos Exp $")
+FILE_RCSID("@(#)$Id: file.c,v 1.99 2005/10/17 17:39:39 christos Exp $")
#endif /* lint */
@@ -347,6 +347,7 @@ unwrap(char *fn)
char buf[MAXPATHLEN];
FILE *f;
int wid = 0, cwid;
+ size_t len;
if (strcmp("-", fn) == 0) {
f = stdin;
@@ -359,7 +360,10 @@ unwrap(char *fn)
}
while (fgets(buf, MAXPATHLEN, f) != NULL) {
- cwid = file_mbswidth(buf) - 1;
+ len = strlen(buf);
+ if (len > 0 && buf[len - 1] == '\n')
+ buf[len - 1] = '\0';
+ cwid = file_mbswidth(buf);
if (cwid > wid)
wid = cwid;
}
@@ -368,7 +372,9 @@ unwrap(char *fn)
}
while (fgets(buf, MAXPATHLEN, f) != NULL) {
- buf[file_mbswidth(buf)-1] = '\0';
+ len = strlen(buf);
+ if (len > 0 && buf[len - 1] == '\n')
+ buf[len - 1] = '\0';
process(buf, wid);
if(nobuffer)
(void) fflush(stdout);