Index: nss/lib/util/utilpars.c |
diff --git a/nss/lib/util/utilpars.c b/nss/lib/util/utilpars.c |
index d2cd3e04ae76f722aa62d4e047cb481d5bc42af4..278f9c426dd8ab020651691f337b4ce1f9b22844 100644 |
--- a/nss/lib/util/utilpars.c |
+++ b/nss/lib/util/utilpars.c |
@@ -767,6 +767,31 @@ NSSUTIL_MkSlotString(unsigned long slotID, unsigned long defaultFlags, |
* and NSS specifi parameters. |
*/ |
SECStatus |
+NSSUTIL_ArgParseModuleSpecEx(char *modulespec, char **lib, char **mod, |
+ char **parameters, char **nss, |
+ char **config) |
+{ |
+ int next; |
+ modulespec = NSSUTIL_ArgStrip(modulespec); |
+ |
+ *lib = *mod = *parameters = *nss = *config = 0; |
+ |
+ while (*modulespec) { |
+ NSSUTIL_HANDLE_STRING_ARG(modulespec,*lib,"library=",;) |
+ NSSUTIL_HANDLE_STRING_ARG(modulespec,*mod,"name=",;) |
+ NSSUTIL_HANDLE_STRING_ARG(modulespec,*parameters,"parameters=",;) |
+ NSSUTIL_HANDLE_STRING_ARG(modulespec,*nss,"nss=",;) |
+ NSSUTIL_HANDLE_STRING_ARG(modulespec,*config,"config=",;) |
+ NSSUTIL_HANDLE_FINAL_ARG(modulespec) |
+ } |
+ return SECSuccess; |
+} |
+ |
+/************************************************************************ |
+ * Parse Full module specs into: library, commonName, module parameters, |
+ * and NSS specifi parameters. |
+ */ |
+SECStatus |
NSSUTIL_ArgParseModuleSpec(char *modulespec, char **lib, char **mod, |
char **parameters, char **nss) |
{ |
@@ -788,11 +813,12 @@ NSSUTIL_ArgParseModuleSpec(char *modulespec, char **lib, char **mod, |
/************************************************************************ |
* make a new module spec from it's components */ |
char * |
-NSSUTIL_MkModuleSpec(char *dllName, char *commonName, char *parameters, |
- char *NSS) |
+NSSUTIL_MkModuleSpecEx(char *dllName, char *commonName, char *parameters, |
+ char *NSS, |
+ char *config) |
{ |
char *moduleSpec; |
- char *lib,*name,*param,*nss; |
+ char *lib,*name,*param,*nss,*conf; |
/* |
* now the final spec |
@@ -801,7 +827,13 @@ NSSUTIL_MkModuleSpec(char *dllName, char *commonName, char *parameters, |
name = nssutil_formatPair("name",commonName,'\"'); |
param = nssutil_formatPair("parameters",parameters,'\"'); |
nss = nssutil_formatPair("NSS",NSS,'\"'); |
- moduleSpec = PR_smprintf("%s %s %s %s", lib,name,param,nss); |
+ if (config) { |
+ conf = nssutil_formatPair("config",config,'\"'); |
+ moduleSpec = PR_smprintf("%s %s %s %s %s", lib,name,param,nss,conf); |
+ nssutil_freePair(conf); |
+ } else { |
+ moduleSpec = PR_smprintf("%s %s %s %s", lib,name,param,nss); |
+ } |
nssutil_freePair(lib); |
nssutil_freePair(name); |
nssutil_freePair(param); |
@@ -809,6 +841,15 @@ NSSUTIL_MkModuleSpec(char *dllName, char *commonName, char *parameters, |
return (moduleSpec); |
} |
+/************************************************************************ |
+ * make a new module spec from it's components */ |
+char * |
+NSSUTIL_MkModuleSpec(char *dllName, char *commonName, char *parameters, |
+ char *NSS) |
+{ |
+ return NSSUTIL_MkModuleSpecEx(dllName, commonName, parameters, NSS, NULL); |
+} |
+ |
#define NSSUTIL_ARG_FORTEZZA_FLAG "FORTEZZA" |
/****************************************************************************** |