1N/A/*********************************************************************** 1N/A* This software is part of the ast package * 1N/A* Copyright (c) 1982-2011 AT&T Intellectual Property * 1N/A* and is licensed under the * 1N/A* Common Public License, Version 1.0 * 1N/A* by AT&T Intellectual Property * 1N/A* A copy of the License is available at * 1N/A* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 1N/A* Information and Software Systems Research * 1N/A* David Korn <dgk@research.att.com> * 1N/A***********************************************************************/ 1N/A * read [-ACprs] [-d delim] [-u filenum] [-t timeout] [-n n] [-N n] [name...] 1N/A#
define N_FLAG 8 /* fixed size read at most */ 1N/A#
define C_FLAG 0x40 /* read into compound variable */ 1N/A#
define D_FLAG 8 /* must be number of bits for all flags */ 1N/A if((
unsigned)r > (
1<<((
8*
sizeof(
int))-
D_FLAG))-
1)
1N/A /* save in history file */ 1N/A /* look for prompt */ 1N/A * here for read timeout 1N/A * This is the code to read a line and to split it into tokens 1N/A * <names> is an array of variable names 1N/A * <fd> is the file descriptor 1N/A * <flags> is union of -A, -r, -s, and contains delimiter if not '\n' 1N/A * <timeout> is number of milli-seconds until timeout 1N/A register unsigned char *
cp;
1N/A /* set up state table based on IFS */ 1N/A /* reserved buffer */ 1N/A#
endif /* SHOPT_CRNL */ 1N/A /* skip over leading blanks */ 1N/A /* strip trailing delimiters */ 1N/A#
endif /* !SHOPT_MULTIBYTE */ 1N/A /* val==0 at the start of a field */ 1N/A#
endif /*SHOPT_MULTIBYTE */ 1N/A /* process escape character */ 1N/A /* check for end of buffer */ 1N/A /* eliminate null bytes */ 1N/A /* skip over blanks */ 1N/A#
endif /* SHOPT_MULTIBYTE */ 1N/A /* skip over trailing blanks */ 1N/A /* skip over word characters */ 1N/A /* assign value and advance to next variable */ 1N/A /* strip off trailing space delimiters */