ping postinstall poweroff pr prep printroot \
profile progressbar pr_routes ps pwdauth \
ramdisk rarpd rawspeed rcp readclock \
- reboot remsync rev rget rlogin \
+ reboot remsync rget rlogin \
rotate rsh rshd service setup shar \
sleep slip spell split sprofalyze sprofdiff srccrc \
stty svclog svrctl swifi synctree sysenv \
+++ /dev/null
-PROG= rev
-MAN=
-
-.include <bsd.prog.mk>
./usr/man/man1/ref.1 minix-sys obsolete
./usr/man/man1/remsync.1 minix-sys
./usr/man/man1/return.1 minix-sys
+./usr/man/man1/rev.1 minix-sys
./usr/man/man1/rget.1 minix-sys
./usr/man/man1/rlogin.1 minix-sys
./usr/man/man1/rm.1 minix-sys
2010/05/14 17:28:23,usr.bin/newgrp
2012/10/17 12:00:00,usr.bin/passwd
2012/10/17 12:00:00,usr.bin/printf
+2013/09/28 12:00:00,usr.bin/rev
2010/02/19 16:35:27,usr.bin/sed
2010/05/27 08:40:19,usr.bin/seq
2013/06/02 12:00:00,usr.bin/shuffle
nbperf newgrp nvi \
passwd \
printf \
- \
+ rev \
\
shuffle sed seq \
sort stat su \
--- /dev/null
+# $NetBSD: Makefile,v 1.3 1995/09/28 08:49:37 tls Exp $
+# @(#)Makefile 8.1 (Berkeley) 6/9/93
+
+PROG= rev
+
+.include <bsd.prog.mk>
--- /dev/null
+.\" $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.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)rev.1 8.1 (Berkeley) 6/9/93
+.\"
+.Dd July 21, 2009
+.Dt REV 1
+.Os
+.Sh NAME
+.Nm rev
+.Nd reverse order of characters of lines in a file
+.Sh SYNOPSIS
+.Nm
+.Op Ar
+.Sh DESCRIPTION
+The
+.Nm
+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
+/* $NetBSD: rev.c,v 1.12 2011/09/16 15:39:28 joerg Exp $ */
+
/*-
* Copyright (c) 1987, 1992, 1993
* The Regents of the University of California. All rights reserved.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+#ifndef lint
+__COPYRIGHT("@(#) Copyright (c) 1987, 1992, 1993\
+ The Regents of the University of California. All rights reserved.");
+#endif /* not lint */
+
#ifndef lint
-static const char copyright[] =
-"@(#) Copyright (c) 1987, 1992, 1993\n\
- The Regents of the University of California. All rights reserved.\n";
+#if 0
+static char sccsid[] = "@(#)rev.c 8.3 (Berkeley) 5/4/95";
+#else
+__RCSID("$NetBSD: rev.c,v 1.12 2011/09/16 15:39:28 joerg Exp $");
+#endif
#endif /* not lint */
#include <sys/types.h>
+#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);
+__dead static void usage(void);
int
main(int argc, char *argv[])
{
const char *filename;
- char p[2000], *t;
+ wchar_t *p, *t;
FILE *fp;
size_t len;
int ch, rval;
setlocale(LC_ALL, "");
+ setprogname(argv[0]);
while ((ch = getopt(argc, argv, "")) != -1)
switch(ch) {
do {
if (*argv) {
if ((fp = fopen(*argv, "r")) == NULL) {
- perror(*argv);
+ warn("%s", *argv);
rval = 1;
++argv;
continue;
}
filename = *argv++;
}
- while ((fgets(p, sizeof(p)-1, fp)) != NULL) {
- len = strlen(p);
- 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)) {
- perror(filename);
+ warn("%s", filename);
rval = 1;
}
(void)fclose(fp);
exit(rval);
}
-void
+static void
usage(void)
{
- (void)fprintf(stderr, "usage: rev [file ...]\n");
- exit(1);
+ (void)fprintf(stderr, "usage: %s [file ...]\n", getprogname());
+ exit(EXIT_FAILURE);
}