summaryrefslogtreecommitdiffstats
path: root/usr.bin/rev
diff options
context:
space:
mode:
authortjr <tjr@FreeBSD.org>2004-07-16 06:21:40 +0000
committertjr <tjr@FreeBSD.org>2004-07-16 06:21:40 +0000
commit8d7b06e962e09616053a76adecccae3bb9954190 (patch)
treee76326f4d4f4966b7f8c4658b910163a1524bd0e /usr.bin/rev
parent9ff80f3e79f9930822ff4ff965d0845033e88843 (diff)
downloadFreeBSD-src-8d7b06e962e09616053a76adecccae3bb9954190.zip
FreeBSD-src-8d7b06e962e09616053a76adecccae3bb9954190.tar.gz
Add support for multibyte characters.
Diffstat (limited to 'usr.bin/rev')
-rw-r--r--usr.bin/rev/rev.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/usr.bin/rev/rev.c b/usr.bin/rev/rev.c
index 6a48d5e..87c8587 100644
--- a/usr.bin/rev/rev.c
+++ b/usr.bin/rev/rev.c
@@ -50,21 +50,26 @@ __FBSDID("$FreeBSD$");
#include <err.h>
#include <errno.h>
+#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <wchar.h>
void usage(void);
int
main(int argc, char *argv[])
{
- const char *filename, *p, *t;
+ const char *filename;
+ wchar_t *p, *t;
FILE *fp;
size_t len;
int ch, rval;
+ setlocale(LC_ALL, "");
+
while ((ch = getopt(argc, argv, "")) != -1)
switch(ch) {
case '?':
@@ -88,13 +93,13 @@ main(int argc, char *argv[])
}
filename = *argv++;
}
- while ((p = fgetln(fp, &len)) != NULL) {
+ while ((p = fgetwln(fp, &len)) != NULL) {
if (p[len - 1] == '\n')
--len;
t = p + len - 1;
for (t = p + len - 1; t >= p; --t)
- putchar(*t);
- putchar('\n');
+ putwchar(*t);
+ putwchar('\n');
}
if (ferror(fp)) {
warn("%s", filename);
OpenPOWER on IntegriCloud