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
|
int
|
||||||
EFIAPI
|
EFIAPI
|
||||||
da_ConOpen(
|
da_ConOpen(
|
||||||
|
IN DeviceNode *DevNode,
|
||||||
IN struct __filedes *filp,
|
IN struct __filedes *filp,
|
||||||
IN void *DevInstance,
|
IN int DevInstance,
|
||||||
IN CHAR16 *Path,
|
IN CHAR16 *Path,
|
||||||
IN CHAR16 *Flags
|
IN CHAR16 *MPath
|
||||||
);
|
);
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
@ -127,7 +127,7 @@ NormalizePath( const char *path);
|
|||||||
**/
|
**/
|
||||||
RETURN_STATUS
|
RETURN_STATUS
|
||||||
EFIAPI
|
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.
|
/** Process a wide character string representing a Mapping Path and extract the instance number.
|
||||||
|
|
||||||
@ -192,6 +192,25 @@ wchar_t *
|
|||||||
EFIAPI
|
EFIAPI
|
||||||
PathAlias(wchar_t *Path, DeviceNode **Node);
|
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
|
__END_DECLS
|
||||||
|
|
||||||
#endif /* __DEV_UTILITY_H__ */
|
#endif /* __DEV_UTILITY_H__ */
|
||||||
|
@ -8,11 +8,11 @@
|
|||||||
these libraries have been tested with. Changing this configuration may
|
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.
|
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
|
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 terms and conditions of the BSD License that accompanies this distribution.
|
||||||
The full text of the license may be found at
|
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,
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
@ -28,3 +28,26 @@
|
|||||||
#define _IEEE_LIBM 1
|
#define _IEEE_LIBM 1
|
||||||
|
|
||||||
#undef WITH_RUNE
|
#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 <limits.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <setjmp.h>
|
||||||
|
|
||||||
#include <kfile.h>
|
#include <kfile.h>
|
||||||
#include <Device/Device.h>
|
#include <Device/Device.h>
|
||||||
@ -74,7 +75,6 @@ struct __MainData {
|
|||||||
char *NCmdLine; // Narrow character version of command line arguments.
|
char *NCmdLine; // Narrow character version of command line arguments.
|
||||||
|
|
||||||
void (*cleanup)(void); // Stdio Cleanup Function Pointer
|
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.
|
__xithandler_t *atexit_handler[ATEXIT_MAX]; // Array of handlers for atexit.
|
||||||
clock_t AppStartTime; // Set in Main.c and used for time.h
|
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 ASgetenv[ASCII_STRING_MAX]; // Only modified by getenv
|
||||||
char ASasctime[ASCTIME_BUFLEN]; // Only modified by asctime
|
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.
|
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);
|
void Efi2Tm( EFI_TIME *ET, struct tm *BT);
|
||||||
time_t Efi2Time( EFI_TIME *EfiBDtime);
|
time_t Efi2Time( EFI_TIME *EfiBDtime);
|
||||||
|
|
||||||
|
int ffs(int x);
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
@ -79,14 +79,14 @@ struct _Device_Node;
|
|||||||
This structure must be a multiple of 8 bytes in length.
|
This structure must be a multiple of 8 bytes in length.
|
||||||
*/
|
*/
|
||||||
struct __filedes {
|
struct __filedes {
|
||||||
|
off_t f_offset; /* current position in file */
|
||||||
const struct fileops *f_ops;
|
const struct fileops *f_ops;
|
||||||
void *devdata; /* Device-specific data */
|
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 Oflags; // From the open call
|
||||||
int Omode; // From the open call
|
int Omode; // From the open call
|
||||||
int RefCount; // Reference count of opens
|
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 MyFD; // Which FD this is.
|
||||||
UINT16 Reserved_1; // Force this structure to be a multiple of 8-bytes in length
|
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. */
|
/* Type of all Device-specific handler's open routines. */
|
||||||
typedef
|
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 & \
|
#define FILE_IS_USABLE(fp) (((fp)->f_iflags & \
|
||||||
(FIF_WANTCLOSE|FIF_LARVAL)) == 0)
|
(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.
|
fnullop_* Does nothing and returns success.
|
||||||
fbadop_* Does nothing and returns EPERM
|
fbadop_* Does nothing and returns EPERM
|
||||||
*/
|
*/
|
||||||
int fnullop_fcntl (struct __filedes *filp, UINT32 Cmd, void *p3, void *p4);
|
int EFIAPI fnullop_fcntl (struct __filedes *filp, UINT32 Cmd, void *p3, void *p4);
|
||||||
short fnullop_poll (struct __filedes *filp, short Events);
|
short EFIAPI fnullop_poll (struct __filedes *filp, short Events);
|
||||||
int fnullop_flush (struct __filedes *filp);
|
int EFIAPI fnullop_flush (struct __filedes *filp);
|
||||||
|
|
||||||
int fbadop_stat (struct __filedes *filp, struct stat *StatBuf, void *Buf);
|
int EFIAPI fbadop_stat (struct __filedes *filp, struct stat *StatBuf, void *Buf);
|
||||||
int fbadop_ioctl (struct __filedes *filp, ULONGN Cmd, void *argp);
|
int EFIAPI fbadop_ioctl (struct __filedes *filp, ULONGN Cmd, void *argp);
|
||||||
int fbadop_delete (struct __filedes *filp);
|
int EFIAPI fbadop_delete (struct __filedes *filp);
|
||||||
int fbadop_rmdir (struct __filedes *filp);
|
int EFIAPI fbadop_rmdir (struct __filedes *filp);
|
||||||
int fbadop_mkdir (const char *path, __mode_t perms);
|
int EFIAPI fbadop_mkdir (const char *path, __mode_t perms);
|
||||||
int fbadop_rename (const char *from, const char *to);
|
int EFIAPI fbadop_rename (const char *from, const char *to);
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
|
@ -39,6 +39,17 @@
|
|||||||
#include <sys/EfiCdefs.h>
|
#include <sys/EfiCdefs.h>
|
||||||
|
|
||||||
#ifndef __lint__
|
#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 brk _brk
|
||||||
#define catclose _catclose
|
#define catclose _catclose
|
||||||
#define catgets _catgets
|
#define catgets _catgets
|
||||||
@ -51,22 +62,13 @@
|
|||||||
#endif /* _REENTRANT */
|
#endif /* _REENTRANT */
|
||||||
#define fork _fork
|
#define fork _fork
|
||||||
#define fseeko _fseeko
|
#define fseeko _fseeko
|
||||||
#define ftello _ftello
|
#define inet_aton _inet_aton
|
||||||
#define getcontext _getcontext
|
#define inet_pton _inet_pton
|
||||||
#define getenv_r _getenv_r
|
|
||||||
//#define inet_aton _inet_aton
|
|
||||||
//#define inet_pton _inet_pton
|
|
||||||
#define pipe _pipe
|
#define pipe _pipe
|
||||||
#define sbrk _sbrk
|
#define sbrk _sbrk
|
||||||
//#define strerror_r _strerror_r
|
#define strerror_r _strerror_r
|
||||||
#define strlcat _strlcat
|
#define strlcat _strlcat
|
||||||
#define strlcpy _strlcpy
|
#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_errlist _sys_errlist
|
||||||
#define sys_nerr _sys_nerr
|
#define sys_nerr _sys_nerr
|
||||||
#define sys_siglist _sys_siglist
|
#define sys_siglist _sys_siglist
|
||||||
@ -79,7 +81,6 @@
|
|||||||
#define warn _warn
|
#define warn _warn
|
||||||
#define warnx _warnx
|
#define warnx _warnx
|
||||||
|
|
||||||
#if 0
|
|
||||||
//#ifdef __weak_alias
|
//#ifdef __weak_alias
|
||||||
#define MD2Data _MD2Data
|
#define MD2Data _MD2Data
|
||||||
#define MD2End _MD2End
|
#define MD2End _MD2End
|
||||||
@ -244,7 +245,6 @@
|
|||||||
#define ftrylockfile _ftrylockfile
|
#define ftrylockfile _ftrylockfile
|
||||||
#define funlockfile _funlockfile
|
#define funlockfile _funlockfile
|
||||||
#define fnmatch _fnmatch
|
#define fnmatch _fnmatch
|
||||||
#define fparseln _fparseln
|
|
||||||
#define fpgetmask _fpgetmask
|
#define fpgetmask _fpgetmask
|
||||||
#define fpgetround _fpgetround
|
#define fpgetround _fpgetround
|
||||||
#define fpgetsticky _fpgetsticky
|
#define fpgetsticky _fpgetsticky
|
||||||
|
Reference in New Issue
Block a user