Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/less/lessecho oops, missed this part of less all thi...
details: https://anonhg.NetBSD.org/src/rev/fa255259dea3
branches: trunk
changeset: 467401:fa255259dea3
user: mrg <mrg%NetBSD.org@localhost>
date: Wed Mar 24 09:11:14 1999 +0000
description:
oops, missed this part of less all this time.
diffstat:
usr.bin/less/lessecho/lessecho.c | 241 +++++++++++++++++++++++++++++++++++++++
1 files changed, 241 insertions(+), 0 deletions(-)
diffs (245 lines):
diff -r 2dde078ed7ae -r fa255259dea3 usr.bin/less/lessecho/lessecho.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usr.bin/less/lessecho/lessecho.c Wed Mar 24 09:11:14 1999 +0000
@@ -0,0 +1,241 @@
+/*
+ * Copyright (c) 1984,1985,1989,1994,1995,1996 Mark Nudelman
+ * 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 in the documentation and/or other materials provided with
+ * the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+/*
+ * lessecho [-ox] [-cx] [-pn] [-dn] [-a] file ...
+ * Simply echos its filename arguments on standard output.
+ * But any argument containing spaces is enclosed in quotes.
+ *
+ * -ox Specifies "x" to be the open quote character.
+ * -cx Specifies "x" to be the close quote character.
+ * -pn Specifies "n" to be the open quote character, as an integer.
+ * -dn Specifies "n" to be the close quote character, as an integer.
+ * -a Specifies that all arguments are to be quoted.
+ * The default is that only arguments containing spaces are quoted.
+ */
+
+#include "less.h"
+
+static char *version = "$Revision: 1.1.1.1 $";
+
+static int quote_all = 0;
+static char openquote = '"';
+static char closequote = '"';
+
+ static void
+pr_usage()
+{
+ fprintf(stderr,
+ "usage: lessecho [-ox] [-cx] [-pn] [-dn] [-a] file ...\n");
+}
+
+ static void
+pr_version()
+{
+ char *p;
+ char buf[10];
+ char *pbuf = buf;
+
+ for (p = version; *p != ' '; p++)
+ if (*p == '\0')
+ return;
+ for (p++; *p != '$' && *p != ' ' && *p != '\0'; p++)
+ *pbuf++ = *p;
+ *pbuf = '\0';
+ printf("%s\n", buf);
+}
+
+ static void
+pr_error(s)
+ char *s;
+{
+ fprintf(stderr, "%s\n", s);
+ exit(1);
+}
+
+ static long
+lstrtol(s, radix, pend)
+ char *s;
+ int radix;
+ char **pend;
+{
+ int v;
+ int neg = 0;
+ long n = 0;
+
+ /* Skip leading white space. */
+ while (*s == ' ' || *s == '\t')
+ s++;
+
+ /* Check for a leading + or -. */
+ if (*s == '-')
+ {
+ neg = 1;
+ s++;
+ } else if (*s == '+')
+ {
+ s++;
+ }
+
+ /* Determine radix if caller does not specify. */
+ if (radix == 0)
+ {
+ radix = 10;
+ if (*s == '0')
+ {
+ switch (*++s)
+ {
+ case 'x':
+ radix = 16;
+ s++;
+ break;
+ default:
+ radix = 8;
+ break;
+ }
+ }
+ }
+
+ /* Parse the digits of the number. */
+ for (;;)
+ {
+ if (*s >= '0' && *s <= '9')
+ v = *s - '0';
+ else if (*s >= 'a' && *s <= 'f')
+ v = *s - 'a' + 10;
+ else if (*s >= 'A' && *s <= 'F')
+ v = *s - 'A' + 10;
+ else
+ break;
+ if (v >= radix)
+ break;
+ n = n * radix + v;
+ s++;
+ }
+
+ if (pend != NULL)
+ {
+ /* Skip trailing white space. */
+ while (*s == ' ' || *s == '\t')
+ s++;
+ *pend = s;
+ }
+ if (neg)
+ return (-n);
+ return (n);
+}
+
+
+#if !HAVE_STRCHR
+ char *
+strchr(s, c)
+ char *s;
+ int c;
+{
+ for ( ; *s != '\0'; s++)
+ if (*s == c)
+ return (s);
+ if (c == '\0')
+ return (s);
+ return (NULL);
+}
+#endif
+
+ int
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ char *arg;
+ char *s;
+ int no_more_options;
+
+ no_more_options = 0;
+ while (--argc > 0)
+ {
+ arg = *++argv;
+ if (*arg != '-' || no_more_options)
+ break;
+ switch (*++arg)
+ {
+ case 'a':
+ quote_all = 1;
+ break;
+ case 'o':
+ openquote = *++arg;
+ break;
+ case 'c':
+ closequote = *++arg;
+ break;
+ case 'p':
+ openquote = lstrtol(++arg, 0, &s);
+ if (s == arg)
+ pr_error("Missing number after -O");
+ break;
+ case 'd':
+ closequote = lstrtol(++arg, 0, &s);
+ if (s == arg)
+ pr_error("Missing number after -C");
+ break;
+ case '?':
+ pr_usage();
+ return (0);
+ case '-':
+ if (*++arg == '\0')
+ {
+ no_more_options = 1;
+ break;
+ }
+ if (strcmp(arg, "version") == 0)
+ {
+ pr_version();
+ return (0);
+ }
+ if (strcmp(arg, "help") == 0)
+ {
+ pr_usage();
+ return (0);
+ }
+ pr_error("Invalid option after --");
+ default:
+ pr_error("Invalid option letter");
+ }
+ }
+
+ while (argc-- > 0)
+ {
+ arg = *argv++;
+ if (quote_all || strchr(arg, ' ') != NULL)
+ printf("%c%s%c", openquote, arg, closequote);
+ else
+ printf("%s", arg);
+ if (argc > 0)
+ printf(" ");
+ else
+ printf("\n");
+ }
+ return (0);
+}
Home |
Main Index |
Thread Index |
Old Index