Module Name: src
Committed By: ahoka
Date: Tue Jul 21 01:12:55 UTC 2009
Modified Files:
src/usr.bin/rev: rev.1 rev.c
Log Message:
Change to support multibyte characters.
To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/usr.bin/rev/rev.1
cvs rdiff -u -r1.9 -r1.10 src/usr.bin/rev/rev.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/rev/rev.1
diff -u src/usr.bin/rev/rev.1:1.7 src/usr.bin/rev/rev.1:1.8
--- src/usr.bin/rev/rev.1:1.7 Fri Nov 28 20:30:05 2008
+++ src/usr.bin/rev/rev.1 Tue Jul 21 01:12:55 2009
@@ -1,4 +1,4 @@
-.\" $NetBSD: rev.1,v 1.7 2008/11/28 20:30:05 reed Exp $
+.\" $NetBSD: rev.1,v 1.8 2009/07/21 01:12:55 ahoka Exp $
.\"
.\" Copyright (c) 1985, 1992, 1993
.\" The Regents of the University of California. All rights reserved.
@@ -29,7 +29,7 @@
.\"
.\" @(#)rev.1 8.1 (Berkeley) 6/9/93
.\"
-.Dd January 21, 2001
+.Dd July 21, 2009
.Dt REV 1
.Os
.Sh NAME
@@ -44,3 +44,7 @@
utility copies the specified files to the standard output, reversing the
order of characters in every line.
If no files are specified, the standard input is read.
+.Sh ENVIRONMENT
+.Bl -tag -width indent
+.It Ev LC_ALL
+.El
Index: src/usr.bin/rev/rev.c
diff -u src/usr.bin/rev/rev.c:1.9 src/usr.bin/rev/rev.c:1.10
--- src/usr.bin/rev/rev.c:1.9 Mon Apr 13 04:36:34 2009
+++ src/usr.bin/rev/rev.c Tue Jul 21 01:12:55 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: rev.c,v 1.9 2009/04/13 04:36:34 lukem Exp $ */
+/* $NetBSD: rev.c,v 1.10 2009/07/21 01:12:55 ahoka Exp $ */
/*-
* Copyright (c) 1987, 1992, 1993
@@ -39,7 +39,7 @@
#if 0
static char sccsid[] = "@(#)rev.c 8.3 (Berkeley) 5/4/95";
#else
-__RCSID("$NetBSD: rev.c,v 1.9 2009/04/13 04:36:34 lukem Exp $");
+__RCSID("$NetBSD: rev.c,v 1.10 2009/07/21 01:12:55 ahoka Exp $");
#endif
#endif /* not lint */
@@ -47,10 +47,11 @@
#include <err.h>
#include <errno.h>
+#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
#include <unistd.h>
+#include <wchar.h>
int main __P((int, char **));
void usage __P((void));
@@ -61,11 +62,13 @@
char *argv[];
{
const char *filename;
- char *p, *t;
+ wchar_t *p, *t;
FILE *fp;
size_t len;
int ch, rval;
+ setlocale(LC_ALL, "");
+
while ((ch = getopt(argc, argv, "")) != -1)
switch(ch) {
case '?':
@@ -89,13 +92,13 @@
}
filename = *argv++;
}
- while ((p = fgetln(fp, &len)) != NULL) {
- if (p[len - 1] == '\n')
+ while ((p = fgetwln(fp, &len)) != NULL) {
+ if (p[len - 1] == L'\n')
--len;
t = p + len - 1;
for (t = p + len - 1; t >= p; --t)
- putchar(*t);
- putchar('\n');
+ putwchar(*t);
+ putwchar(L'\n');
}
if (ferror(fp)) {
warn("%s", filename);