enhanced qse_env_t to use the natural charater type for underlying process execution system call.
enanced qse_pio_t to accept environment
This commit is contained in:
@ -29,6 +29,15 @@
|
||||
* an environment block.
|
||||
*/
|
||||
|
||||
|
||||
#if defined(_WIN32) && defined(QSE_CHAR_IS_WCHAR)
|
||||
typedef qse_wchar_t qse_env_char_t;
|
||||
# define QSE_ENV_CHAR_IS_WCHAR
|
||||
#else
|
||||
typedef qse_mchar_t qse_env_char_t;
|
||||
# define QSE_ENV_CHAR_IS_MCHAR
|
||||
#endif
|
||||
|
||||
/**
|
||||
* The qse_env_t type defines a cross-platform environment block.
|
||||
*/
|
||||
@ -42,14 +51,14 @@ struct qse_env_t
|
||||
{
|
||||
qse_size_t capa;
|
||||
qse_size_t len;
|
||||
qse_char_t* ptr;
|
||||
qse_env_char_t* ptr;
|
||||
} str;
|
||||
|
||||
struct
|
||||
{
|
||||
qse_size_t capa;
|
||||
qse_size_t len;
|
||||
qse_char_t** ptr;
|
||||
qse_env_char_t** ptr;
|
||||
} arr;
|
||||
};
|
||||
|
||||
@ -87,17 +96,36 @@ void qse_env_clear (
|
||||
#define qse_env_getstr(env) ((env)->str.ptr)
|
||||
#define qse_env_getarr(env) ((env)->arr.ptr)
|
||||
|
||||
int qse_env_insert (
|
||||
int qse_env_insertw (
|
||||
qse_env_t* env,
|
||||
const qse_char_t* name,
|
||||
const qse_char_t* value
|
||||
const qse_wchar_t* name,
|
||||
const qse_wchar_t* value
|
||||
);
|
||||
|
||||
int qse_env_delete (
|
||||
int qse_env_insertm (
|
||||
qse_env_t* env,
|
||||
const qse_char_t* name
|
||||
const qse_mchar_t* name,
|
||||
const qse_mchar_t* value
|
||||
);
|
||||
|
||||
int qse_env_deletew (
|
||||
qse_env_t* env,
|
||||
const qse_wchar_t* name
|
||||
);
|
||||
|
||||
int qse_env_deletem (
|
||||
qse_env_t* env,
|
||||
const qse_mchar_t* name
|
||||
);
|
||||
|
||||
#if defined(QSE_CHAR_IS_WCHAR)
|
||||
# define qse_env_insert(env,name,value) qse_env_insertw(env,name,value)
|
||||
# define qse_env_delete(env,name) qse_env_deletew(env,name)
|
||||
#else
|
||||
# define qse_env_insert(env,name,value) qse_env_insertm(env,name,value)
|
||||
# define qse_env_delete(env,name) qse_env_deletem(env,name)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: pio.h 533 2011-08-04 15:43:28Z hyunghwan.chung $
|
||||
* $Id: pio.h 538 2011-08-09 16:08:26Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -24,6 +24,7 @@
|
||||
#include <qse/types.h>
|
||||
#include <qse/macros.h>
|
||||
#include <qse/cmn/tio.h>
|
||||
#include <qse/cmn/env.h>
|
||||
|
||||
/** @file
|
||||
* This file defines a piped interface to a child process. You can execute
|
||||
@ -190,12 +191,15 @@ QSE_DEFINE_COMMON_FUNCTIONS (pio)
|
||||
* pipes to it. #QSE_PIO_SHELL causes the function to execute @a cmd via
|
||||
* the default shell of an underlying system: /bin/sh on *nix, cmd.exe on win32.
|
||||
* On *nix systems, a full path to the command is needed if it is not specified.
|
||||
* If @a env is #QSE_NULL, the environment of @a cmd inherits that of the
|
||||
* calling process.
|
||||
* @return #qse_pio_t object on success, #QSE_NULL on failure
|
||||
*/
|
||||
qse_pio_t* qse_pio_open (
|
||||
qse_mmgr_t* mmgr, /**< memory manager */
|
||||
qse_size_t ext, /**< extension size */
|
||||
const qse_char_t* cmd, /**< command to execute */
|
||||
qse_env_t* env, /**< environment */
|
||||
int oflags /**< 0 or a number OR'ed of the
|
||||
#qse_pio_oflag_t enumerators*/
|
||||
);
|
||||
@ -218,6 +222,7 @@ qse_pio_t* qse_pio_init (
|
||||
qse_pio_t* pio, /**< pio object */
|
||||
qse_mmgr_t* mmgr, /**< memory manager */
|
||||
const qse_char_t* cmd, /**< command to execute */
|
||||
qse_env_t* env, /**< environment */
|
||||
int oflags /**< 0 or a number OR'ed of the
|
||||
#qse_pio_oflag_t enumerators*/
|
||||
);
|
||||
|
Reference in New Issue
Block a user