Changes so that Argv points to narrow-character versions of the command-line arguments.
Fix "long double" handling and differences between MSFT and GCC compilers. Fix compliance issues with ISO/IEC 9899:199409 New Function declarations: setenv(), fparseln(), GetFileNameFromPath(), rename() git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12060 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
		| @@ -51,10 +51,11 @@ __BEGIN_DECLS | ||||
| int | ||||
| EFIAPI | ||||
| da_ConOpen( | ||||
|   IN  DeviceNode         *DevNode, | ||||
|   IN  struct __filedes   *filp, | ||||
|   IN  void               *DevInstance, | ||||
|   IN  int                 DevInstance, | ||||
|   IN  CHAR16             *Path, | ||||
|   IN  CHAR16             *Flags | ||||
|   IN  CHAR16             *MPath | ||||
| ); | ||||
|  | ||||
| __END_DECLS | ||||
|   | ||||
| @@ -127,7 +127,7 @@ NormalizePath( const char *path); | ||||
| **/ | ||||
| RETURN_STATUS | ||||
| EFIAPI | ||||
| ParsePath( const char *path, wchar_t **FullPath, DeviceNode **DevNode, int *Which); | ||||
| ParsePath( const char *path, wchar_t **FullPath, DeviceNode **DevNode, int *Which, wchar_t **MapPath); | ||||
|  | ||||
| /** Process a wide character string representing a Mapping Path and extract the instance number. | ||||
|  | ||||
| @@ -192,6 +192,25 @@ wchar_t * | ||||
| EFIAPI | ||||
| PathAlias(wchar_t *Path, DeviceNode **Node); | ||||
|  | ||||
| /** | ||||
|   Parses a normalized wide character path and returns a pointer to the entry | ||||
|   following the last \.  If a \ is not found in the path the return value will | ||||
|   be the same as the input value.  All error conditions return NULL. | ||||
|  | ||||
|   The behavior when passing in a path that has not been normalized is undefined. | ||||
|  | ||||
|   @param  Path - A pointer to a wide character string containing a path to a | ||||
|                  directory or a file. | ||||
|  | ||||
|   @return Pointer to the file name or terminal directory.  NULL if an error is | ||||
|           detected. | ||||
| **/ | ||||
| wchar_t * | ||||
| EFIAPI | ||||
| GetFileNameFromPath( | ||||
|   const wchar_t   *Path | ||||
|   ); | ||||
|  | ||||
| __END_DECLS | ||||
|  | ||||
| #endif  /* __DEV_UTILITY_H__ */ | ||||
|   | ||||
| @@ -8,11 +8,11 @@ | ||||
|   these libraries have been tested with.  Changing this configuration may | ||||
|   produce code that will not build or may not run.  Change at your own risk. | ||||
|  | ||||
|   Copyright (c) 2010, Intel Corporation. All rights reserved.<BR> | ||||
|   Copyright (c) 2010 - 2011, 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. | ||||
|   http://opensource.org/licenses/bsd-license. | ||||
|  | ||||
|   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | ||||
|   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | ||||
| @@ -28,3 +28,26 @@ | ||||
| #define _IEEE_LIBM    1 | ||||
|  | ||||
| #undef  WITH_RUNE | ||||
|  | ||||
| #if defined(__GNUC__) | ||||
|   #define REAL_LONG_DOUBLE_SUPPORT      1 | ||||
| #endif | ||||
|  | ||||
| /* Define these if the associated file exists. */ | ||||
| //#define HAVE_NBTOOL_CONFIG_H | ||||
|  | ||||
| /* Define these if StdLib provides the functionality as opposed to a "compatibility" library */ | ||||
|  | ||||
| //#define HAVE_GETOPT | ||||
| //#define HAVE_BASENAME | ||||
| //#define HAVE_FFS | ||||
| //#define HAVE_GETTIMEOFDAY | ||||
| //#define HAVE_SETPROGNAME  0 | ||||
| //#define HAVE_STRLCPY | ||||
| //#define HAVE_STRLCAT | ||||
| //#define HAVE_DIRNAME | ||||
| #define HAVE_MKSTEMP | ||||
| #define HAVE_SNPRINTF | ||||
| #define HAVE_VSNPRINTF | ||||
|  | ||||
| //#define USE_8BIT_CHARS | ||||
|   | ||||
| @@ -18,6 +18,7 @@ | ||||
| #include  <limits.h> | ||||
| #include  <signal.h> | ||||
| #include  <time.h> | ||||
| #include  <setjmp.h> | ||||
|  | ||||
| #include  <kfile.h> | ||||
| #include  <Device/Device.h> | ||||
| @@ -74,7 +75,6 @@ struct  __MainData { | ||||
|   char              *NCmdLine;                // Narrow character version of command line arguments. | ||||
|  | ||||
|   void (*cleanup)(void);        // Stdio Cleanup Function Pointer | ||||
|   void (*FinalCleanup)(void);   // Function to free this structure and cleanup before exit. | ||||
|  | ||||
|   __xithandler_t   *atexit_handler[ATEXIT_MAX];  // Array of handlers for atexit. | ||||
|   clock_t           AppStartTime;                // Set in Main.c and used for time.h | ||||
| @@ -88,6 +88,9 @@ struct  __MainData { | ||||
|   char              ASgetenv[ASCII_STRING_MAX];   // Only modified by getenv | ||||
|   char              ASasctime[ASCTIME_BUFLEN];    // Only modified by asctime | ||||
|  | ||||
|   jmp_buf           MainExit;                     ///< Save environment used for implementing _Exit() | ||||
|   int               ExitValue;                    ///< Value being returned by _Exit() | ||||
|  | ||||
|   BOOLEAN         aborting;                       // Ensures cleanup function only called once when aborting. | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -66,4 +66,6 @@ int vsnprintf_ss(char * __restrict, size_t, const char * __restrict, | ||||
| void    Efi2Tm( EFI_TIME *ET, struct tm *BT); | ||||
| time_t  Efi2Time( EFI_TIME *EfiBDtime); | ||||
|  | ||||
| int     ffs(int x); | ||||
|  | ||||
| __END_DECLS | ||||
|   | ||||
| @@ -79,14 +79,14 @@ struct _Device_Node; | ||||
|     This structure must be a multiple of 8 bytes in length. | ||||
| */ | ||||
| struct __filedes { | ||||
|   off_t                   f_offset;     /* current position in file */ | ||||
|   const struct fileops   *f_ops; | ||||
|   void                   *devdata;      /* Device-specific data */ | ||||
|   off_t                   f_offset;     /* current position in file */ | ||||
|   UINT32                  f_flag;       /* see fcntl.h */ | ||||
|   UINT32                  f_iflags;     // In use if non-zero | ||||
|   int                     Oflags;       // From the open call | ||||
|   int                     Omode;        // From the open call | ||||
|   int                     RefCount;     // Reference count of opens | ||||
|   UINT32                  f_flag;       /* see fcntl.h */ | ||||
|   UINT32                  f_iflags;     // In use if non-zero | ||||
|   UINT16                  MyFD;         // Which FD this is. | ||||
|   UINT16                  Reserved_1;   // Force this structure to be a multiple of 8-bytes in length | ||||
| }; | ||||
| @@ -130,7 +130,8 @@ typedef struct { | ||||
|  | ||||
| /* Type of all Device-specific handler's open routines. */ | ||||
| typedef | ||||
|   int     (EFIAPI *FO_OPEN)    (struct __filedes *FD, void *IP, wchar_t *Path, wchar_t *Flags); | ||||
|   int     (EFIAPI *FO_OPEN)    (struct _Device_Node *This, struct __filedes *FD, | ||||
|                                 int Instance, wchar_t *Path, wchar_t *MPath); | ||||
|  | ||||
| #define FILE_IS_USABLE(fp)  (((fp)->f_iflags &      \ | ||||
|           (FIF_WANTCLOSE|FIF_LARVAL)) == 0) | ||||
| @@ -153,16 +154,16 @@ int   fdcreate    (CHAR16 *, UINT32, UINT32, BOOLEAN, VOID *, const struct fileo | ||||
|       fnullop_*   Does nothing and returns success. | ||||
|       fbadop_*    Does nothing and returns EPERM | ||||
| */ | ||||
| int     fnullop_fcntl (struct __filedes *filp, UINT32 Cmd, void *p3, void *p4); | ||||
| short   fnullop_poll  (struct __filedes *filp, short Events); | ||||
| int     fnullop_flush (struct __filedes *filp); | ||||
| int     EFIAPI fnullop_fcntl (struct __filedes *filp, UINT32 Cmd, void *p3, void *p4); | ||||
| short   EFIAPI fnullop_poll  (struct __filedes *filp, short Events); | ||||
| int     EFIAPI fnullop_flush (struct __filedes *filp); | ||||
|  | ||||
| int     fbadop_stat   (struct __filedes *filp, struct stat *StatBuf, void *Buf); | ||||
| int     fbadop_ioctl  (struct __filedes *filp, ULONGN Cmd, void *argp); | ||||
| int     fbadop_delete (struct __filedes *filp); | ||||
| int     fbadop_rmdir  (struct __filedes *filp); | ||||
| int     fbadop_mkdir  (const char *path, __mode_t perms); | ||||
| int     fbadop_rename (const char *from, const char *to); | ||||
| int     EFIAPI fbadop_stat   (struct __filedes *filp, struct stat *StatBuf, void *Buf); | ||||
| int     EFIAPI fbadop_ioctl  (struct __filedes *filp, ULONGN Cmd, void *argp); | ||||
| int     EFIAPI fbadop_delete (struct __filedes *filp); | ||||
| int     EFIAPI fbadop_rmdir  (struct __filedes *filp); | ||||
| int     EFIAPI fbadop_mkdir  (const char *path, __mode_t perms); | ||||
| int     EFIAPI fbadop_rename (const char *from, const char *to); | ||||
|  | ||||
| __END_DECLS | ||||
|  | ||||
|   | ||||
| @@ -39,6 +39,17 @@ | ||||
| #include  <sys/EfiCdefs.h> | ||||
|  | ||||
| #ifndef __lint__ | ||||
| #define ftello        _ftello | ||||
| #define getcontext    _getcontext | ||||
| #define getenv_r      _getenv_r | ||||
| #define strtof        _strtof | ||||
| #define strtoimax     _strtoimax | ||||
| #define strtold       _strtold | ||||
| #define strtoll       _strtoll | ||||
| #define strtoull      _strtoull | ||||
| #define strtoumax     _strtoumax | ||||
|  | ||||
| #if 0 | ||||
| #define brk           _brk | ||||
| #define catclose      _catclose | ||||
| #define catgets       _catgets | ||||
| @@ -51,22 +62,13 @@ | ||||
| #endif /* _REENTRANT */ | ||||
| #define fork          _fork | ||||
| #define fseeko        _fseeko | ||||
| #define ftello        _ftello | ||||
| #define getcontext    _getcontext | ||||
| #define getenv_r      _getenv_r | ||||
| //#define inet_aton     _inet_aton | ||||
| //#define inet_pton     _inet_pton | ||||
| #define inet_aton     _inet_aton | ||||
| #define inet_pton     _inet_pton | ||||
| #define pipe          _pipe | ||||
| #define sbrk          _sbrk | ||||
| //#define strerror_r    _strerror_r | ||||
| #define strerror_r    _strerror_r | ||||
| #define strlcat       _strlcat | ||||
| #define strlcpy       _strlcpy | ||||
| #define strtof        _strtof | ||||
| #define strtoimax     _strtoimax | ||||
| #define strtold       _strtold | ||||
| #define strtoll       _strtoll | ||||
| #define strtoull      _strtoull | ||||
| #define strtoumax     _strtoumax | ||||
| #define sys_errlist   _sys_errlist | ||||
| #define sys_nerr      _sys_nerr | ||||
| #define sys_siglist   _sys_siglist | ||||
| @@ -79,7 +81,6 @@ | ||||
| #define warn          _warn | ||||
| #define warnx         _warnx | ||||
|  | ||||
| #if 0 | ||||
| //#ifdef __weak_alias | ||||
| #define MD2Data       _MD2Data | ||||
| #define MD2End        _MD2End | ||||
| @@ -244,7 +245,6 @@ | ||||
| #define ftrylockfile  _ftrylockfile | ||||
| #define funlockfile   _funlockfile | ||||
| #define fnmatch       _fnmatch | ||||
| #define fparseln      _fparseln | ||||
| #define fpgetmask     _fpgetmask | ||||
| #define fpgetround    _fpgetround | ||||
| #define fpgetsticky   _fpgetsticky | ||||
|   | ||||
		Reference in New Issue
	
	Block a user