diff --git a/commands/Makefile b/commands/Makefile index 9adb13532..4913f4c40 100644 --- a/commands/Makefile +++ b/commands/Makefile @@ -21,7 +21,7 @@ SUBDIR= add_route arp ash at backup btrace \ 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 \ diff --git a/commands/rev/Makefile b/commands/rev/Makefile deleted file mode 100644 index f6a3526ac..000000000 --- a/commands/rev/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -PROG= rev -MAN= - -.include diff --git a/distrib/sets/lists/minix/mi b/distrib/sets/lists/minix/mi index 591b55c50..38326ff09 100644 --- a/distrib/sets/lists/minix/mi +++ b/distrib/sets/lists/minix/mi @@ -2003,6 +2003,7 @@ ./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 diff --git a/releasetools/nbsd_ports b/releasetools/nbsd_ports index 5de902ff8..5d713ac80 100644 --- a/releasetools/nbsd_ports +++ b/releasetools/nbsd_ports @@ -181,6 +181,7 @@ 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 diff --git a/usr.bin/Makefile b/usr.bin/Makefile index 63b52eaa6..bcbaf3e35 100644 --- a/usr.bin/Makefile +++ b/usr.bin/Makefile @@ -21,7 +21,7 @@ SUBDIR= \ nbperf newgrp nvi \ passwd \ printf \ - \ + rev \ \ shuffle sed seq \ sort stat su \ diff --git a/usr.bin/rev/Makefile b/usr.bin/rev/Makefile new file mode 100644 index 000000000..ae280802a --- /dev/null +++ b/usr.bin/rev/Makefile @@ -0,0 +1,6 @@ +# $NetBSD: Makefile,v 1.3 1995/09/28 08:49:37 tls Exp $ +# @(#)Makefile 8.1 (Berkeley) 6/9/93 + +PROG= rev + +.include diff --git a/usr.bin/rev/rev.1 b/usr.bin/rev/rev.1 new file mode 100644 index 000000000..5f6a9c5be --- /dev/null +++ b/usr.bin/rev/rev.1 @@ -0,0 +1,50 @@ +.\" $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 diff --git a/commands/rev/rev.c b/usr.bin/rev/rev.c similarity index 74% rename from commands/rev/rev.c rename to usr.bin/rev/rev.c index b6948ffe4..6702a1e93 100644 --- a/commands/rev/rev.c +++ b/usr.bin/rev/rev.c @@ -1,3 +1,5 @@ +/* $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. @@ -10,11 +12,7 @@ * 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. * @@ -31,33 +29,43 @@ * SUCH DAMAGE. */ +#include #ifndef lint -static const char copyright[] = -"@(#) Copyright (c) 1987, 1992, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; +__COPYRIGHT("@(#) Copyright (c) 1987, 1992, 1993\ + The Regents of the University of California. All rights reserved."); +#endif /* not lint */ + +#ifndef lint +#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 +#include #include #include #include #include -#include #include +#include -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) { @@ -75,24 +83,23 @@ main(int argc, char *argv[]) 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); @@ -100,9 +107,9 @@ main(int argc, char *argv[]) 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); }