echo.c revision 965005c81e0f731867d47892b9fb677030b102df
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 1996 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* UNIX shell
*/
#include "defs.h"
extern int exitval;
int
{
unsigned char *cp;
int i, wd;
int nflg = 0;
int j;
int len;
#ifdef _iBCS2 /* SCO compatibility support */
int do_sysv3 = 0;
do_sysv3 = 1;
/* Do the -n parsing if sysv3 is set or if ucb_builtsin is set */
if (ucb_builtins && !do_sysv3) {
#else
if (ucb_builtins) {
#endif /* _iBCS2 */
nflg = 0;
nflg++;
argc--;
argv++;
}
for (i = 1; i < argc; i++) {
sigchk();
}
if (i < argc-1)
prc_buff(' ');
}
if (nflg == 0)
prc_buff('\n');
exit(0);
} else {
if (--argc == 0) {
prc_buff('\n');
exit(0);
}
#ifdef _iBCS2
if (do_sysv3) {
nflg++;
/* Step past the -n */
argc--;
argv++;
}
}
#endif /* _iBCS2 */
for (i = 1; i <= argc; i++) {
sigchk();
MB_LEN_MAX)) <= 0) {
continue;
}
if (wc == '\\') {
switch (*++cp) {
case 'b':
prc_buff('\b');
continue;
case 'c':
exit(0);
case 'f':
prc_buff('\f');
continue;
case 'n':
prc_buff('\n');
continue;
case 'r':
prc_buff('\r');
continue;
case 't':
prc_buff('\t');
continue;
case 'v':
prc_buff('\v');
continue;
case '\\':
prc_buff('\\');
continue;
case '0':
j = wd = 0;
while ((*++cp >= '0' &&
wd <<= 3;
}
--cp;
continue;
default:
cp--;
}
continue;
} else {
cp--;
continue;
}
}
#ifdef _iBCS2
/* Don't do if don't want newlines & out of args */
#endif /* _iBCS2 */
}
exit(0);
}
}