diff options
author | Andy Fiddaman <omnios@citrus-it.co.uk> | 2020-12-27 17:47:37 +0000 |
---|---|---|
committer | Andy Fiddaman <omnios@citrus-it.co.uk> | 2021-01-30 17:13:33 +0000 |
commit | b30d193948be5a7794d7ae3ba0ed9c2f72c88e0f (patch) | |
tree | 6a37e590faffb9bb9af66887de645c546445036c /usr/src/lib/libast/common/stdio/fgets.c | |
parent | df36e06d12cbf655ddf22339ef8c39fa2b83ebf8 (diff) | |
download | illumos-gate-b30d193948be5a7794d7ae3ba0ed9c2f72c88e0f.tar.gz |
13405 ksh93 update to 2012-08-01
13434 sh: mishandles backslash as last character of a block of input
11750 ksh mkdir builtin doesn't honor special file permissions
9199 ksh93 builtin *grep -v mishandles blank lines, blows up libgcrypt-config
6756 sh (and ksh) have issues with ${1+"$@"}
6520 ksh: sleep could wait forever
4860 ksh93: core in printf
3791 /bin/sh's builtin 'rm' busted: 'rm -f' without arguments returns error
1047 ksh overwrites child core files
880 ksh93 coredumps on 'unset'
499 "interrupted system call" when using "tee" builtin in ksh
Reviewed by: Robert Mustacchi <rm@fingolfin.org>
Reviewed by: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
Reviewed by: Dominik Hassler <hadfl@omnios.org>
Approved by: Rich Lowe <richlowe@richlowe.net>
Diffstat (limited to 'usr/src/lib/libast/common/stdio/fgets.c')
-rw-r--r-- | usr/src/lib/libast/common/stdio/fgets.c | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/usr/src/lib/libast/common/stdio/fgets.c b/usr/src/lib/libast/common/stdio/fgets.c deleted file mode 100644 index e367164777..0000000000 --- a/usr/src/lib/libast/common/stdio/fgets.c +++ /dev/null @@ -1,110 +0,0 @@ -/*********************************************************************** -* * -* This software is part of the ast package * -* Copyright (c) 1985-2010 AT&T Intellectual Property * -* and is licensed under the * -* Common Public License, Version 1.0 * -* by AT&T Intellectual Property * -* * -* A copy of the License is available at * -* http://www.opensource.org/licenses/cpl1.0.txt * -* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * -* * -* Information and Software Systems Research * -* AT&T Research * -* Florham Park NJ * -* * -* Glenn Fowler <gsf@research.att.com> * -* David Korn <dgk@research.att.com> * -* Phong Vo <kpv@research.att.com> * -* * -***********************************************************************/ -#pragma prototyped - -#include "stdhdr.h" - -extern char* -_stdgets(Sfio_t* f, char* us, int n, int isgets) -{ - int p; - unsigned char* is; - unsigned char* ps; - - if(n <= 0 || !us || (f->mode != SF_READ && _sfmode(f,SF_READ,0) < 0)) - return NIL(char*); - - SFLOCK(f,0); - - n -= 1; - is = (uchar*)us; - - while(n) - { /* peek the read buffer for data */ - if((p = f->endb - (ps = f->next)) <= 0 ) - { f->getr = '\n'; - f->mode |= SF_RC; - if(SFRPEEK(f,ps,p) <= 0) - break; - } - - if(p > n) - p = n; - -#if _lib_memccpy - if((ps = (uchar*)memccpy((char*)is,(char*)ps,'\n',p)) != NIL(uchar*)) - p = ps-is; - is += p; - ps = f->next+p; -#else - if(!(f->flags&(SF_BOTH|SF_MALLOC))) - { while(p-- && (*is++ = *ps++) != '\n') - ; - p = ps-f->next; - } - else - { reg int c = ps[p-1]; - if(c != '\n') - ps[p-1] = '\n'; - while((*is++ = *ps++) != '\n') - ; - if(c != '\n') - { f->next[p-1] = c; - if((ps-f->next) >= p) - is[-1] = c; - } - } -#endif - - /* gobble up read data and continue */ - f->next = ps; - if(is[-1] == '\n') - break; - else if(n > 0) - n -= p; - } - - if((_Sfi = is - ((uchar*)us)) <= 0) - us = NIL(char*); - else if(isgets && is[-1] == '\n') - { is[-1] = '\0'; - _Sfi -= 1; - } - else *is = '\0'; - - SFOPEN(f,0); - return us; -} - -char* -fgets(char* s, int n, Sfio_t* f) -{ - STDIO_PTR(f, "fgets", char*, (char*, int, Sfio_t*), (s, n, f)) - - return _stdgets(f, s, n, 0); -} - -char* -gets(char* s) -{ - return _stdgets(sfstdin, s, BUFSIZ, 1); -} |