- Get opensc.conf from %windir% rather than hard-coded C:\\WINNT (Stef)

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@875 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
okir 2003-01-20 10:12:28 +00:00
parent 1a994ef760
commit 501cdbd7e0
2 changed files with 18 additions and 2 deletions

View File

@ -40,7 +40,10 @@
#define HAVE_IO_H
#define HAVE_GETPASS
#define OPENSC_CONF_PATH "C:\\WINNT\\opensc.conf"
/* %windir% is replaced by the path of the Windows directory,
* this is C:\WINNT or C:\WINDOWS on most systems.
*/
#define OPENSC_CONF_PATH "%windir%\\opensc.conf"
#define PATH_MAX _MAX_PATH

View File

@ -27,6 +27,9 @@
#include <errno.h>
#include <sys/stat.h> /* for mkdir */
#include <limits.h>
#ifdef _WIN32
#include <windows.h>
#endif
int _sc_add_reader(struct sc_context *ctx, struct sc_reader *reader)
{
@ -325,9 +328,19 @@ void process_config_file(struct sc_context *ctx, struct _sc_ctx_options *opts)
{
int i, r, count = 0;
scconf_block **blocks;
char *conf_path = OPENSC_CONF_PATH;
memset(ctx->conf_blocks, 0, sizeof(ctx->conf_blocks));
ctx->conf = scconf_new(OPENSC_CONF_PATH);
#ifdef _WIN32
if (!strncmp(conf_path, "%windir%", 8)) {
static char temp_path[PATH_MAX];
GetWindowsDirectory(opensc_conf_path, sizeof(temp_path));
strcat(opensc_conf_path, conf_path + 8);
conf_path = temp_path;
}
#endif
ctx->conf = scconf_new(conf_path);
if (ctx->conf == NULL)
return;
r = scconf_parse(ctx->conf);