mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-31 11:13:53 +01:00 
			
		
		
		
	Add Posix functions for porting compatibility. Fix compliance issues with ISO/IEC 9899:199409 New Functions: setenv(), fparseln(), GetFileNameFromPath(), rename(), realpath(), setprogname(), getprogname(), strlcat(), strlcpy(), strsep(), setitimer(), getitimer(), timegm(), getopt(), basename(), mkstemp(), ffs(), vsnprintf(), snprintf(), getpass(), usleep(), select(), writev(), strcasecmp(), getcwd(), chdir(), tcgetpgrp(), getpgrp(), gettimeofday(), bcopy(), git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12061 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			114 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|     Information local to this implementation of stdio,
 | |
|     in particular, function declarations and macros.
 | |
| 
 | |
|     Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
 | |
|     This program and the accompanying materials are licensed and made available
 | |
|     under the terms and conditions of the BSD License that accompanies this
 | |
|     distribution.  The full text of the license may be found at
 | |
|     http://opensource.org/licenses/bsd-license.php.
 | |
| 
 | |
|     THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | |
|     WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | |
| 
 | |
|     Copyright (c) 1990, 1993
 | |
|     The Regents of the University of California.  All rights reserved.
 | |
| 
 | |
|     This code is derived from software contributed to Berkeley by
 | |
|     Chris Torek.
 | |
| 
 | |
|     Redistribution and use in source and binary forms, with or without
 | |
|     modification, are permitted provided that the following conditions
 | |
|     are met:
 | |
|       - Redistributions of source code must retain the above copyright
 | |
|         notice, this list of conditions and the following disclaimer.
 | |
|       - 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.
 | |
|       - 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 COPYRIGHT HOLDERS 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 COPYRIGHT HOLDERS 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.
 | |
| 
 | |
|     NetBSD: local.h,v 1.20 2005/05/14 23:51:02 christos Exp
 | |
|     local.h 8.3 (Berkeley) 7/3/94
 | |
| **/
 | |
| 
 | |
| #include "wcio.h"
 | |
| #include "fileext.h"
 | |
| 
 | |
| extern int      __sflush(FILE *);
 | |
| extern FILE    *__sfp(void);
 | |
| extern int      __srefill(FILE *);
 | |
| extern int      __sread(void *, char *, int);
 | |
| extern int      __swrite(void *, char const *, int);
 | |
| extern fpos_t   __sseek(void *, fpos_t, int);
 | |
| extern int      __sclose(void *);
 | |
| extern void     __sinit(void);
 | |
| extern void     _cleanup(void);
 | |
| //extern void   (*__cleanup)(void);   // Now in MainData.h.  Ref. as gMD->cleanup
 | |
| extern void     __smakebuf(FILE *);
 | |
| extern int      __swhatbuf(FILE *, size_t *, int *);
 | |
| extern int      _fwalk(int (*)(FILE *));
 | |
| extern char    *_mktemp(char *);
 | |
| extern int      __swsetup(FILE *);
 | |
| extern int      __sflags(const char *, int *);
 | |
| extern int      __svfscanf(FILE * __restrict, const char * __restrict, va_list)
 | |
|                             __attribute__((__format__(__scanf__, 2, 0)));
 | |
| extern int      __svfscanf_unlocked(FILE * __restrict, const char * __restrict, va_list)
 | |
|                             __attribute__((__format__(__scanf__, 2, 0)));
 | |
| extern int      __vfprintf_unlocked(FILE * __restrict, const char * __restrict, va_list);
 | |
| 
 | |
| 
 | |
| extern int      __sdidinit;
 | |
| 
 | |
| extern int      __gettemp(char *, int *, int);
 | |
| 
 | |
| extern wint_t   __fgetwc_unlock(FILE *);
 | |
| extern wint_t   __fputwc_unlock(wchar_t, FILE *);
 | |
| 
 | |
| extern char    *__fgetstr(FILE * __restrict, size_t * __restrict, int);
 | |
| extern int      __slbexpand(FILE *, size_t);
 | |
| extern int      __vfwprintf_unlocked(FILE *, const wchar_t *, va_list);
 | |
| extern int      __vfwscanf_unlocked(FILE * __restrict, const wchar_t * __restrict, va_list);
 | |
| 
 | |
| /*
 | |
|  * Return true iff the given FILE cannot be written now.
 | |
|  */
 | |
| #define cantwrite(fp) \
 | |
|   ((((fp)->_flags & __SWR) == 0 || (fp)->_bf._base == NULL) && __swsetup(fp))
 | |
| 
 | |
| /*
 | |
|  * Test whether the given stdio file has an active ungetc buffer;
 | |
|  * release such a buffer, without restoring ordinary unread data.
 | |
|  */
 | |
| #define HASUB(fp) (_UB(fp)._base != NULL)
 | |
| #define FREEUB(fp) { \
 | |
|     if (_UB(fp)._base != (fp)->_ubuf) \
 | |
|       free((char *)_UB(fp)._base); \
 | |
|     _UB(fp)._base = NULL; \
 | |
|   }
 | |
| 
 | |
| /*
 | |
|  * test for an fgetln() buffer.
 | |
|  */
 | |
| #define HASLB(fp) ((fp)->_lb._base != NULL)
 | |
| #define FREELB(fp) { \
 | |
|     free((char *)(fp)->_lb._base); \
 | |
|     (fp)->_lb._base = NULL; \
 | |
|   }
 | |
| 
 | |
| extern void __flockfile_internal  (FILE *, int);
 | |
| extern void __funlockfile_internal(FILE *, int);
 |