| 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"
|
| /******************************************************************************
|
|
|