1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
std::list<const char *> MyClass::getEnvParametersMatching(const char *keyRegex)
{
std::list<const char *> *listRet = new std::list<const char *>();
static regex_t patternBuf;
extern char **environ;
char strEnviron[256];
char* pchVarName = NULL;
if ( regcomp( &patternBuf, keyRegex, REG_EXTENDED ) == 0 )
{
// Parcours de l'environnement
while ( *environ != NULL )
{
// Extrait le nom de la variable
strcpy( strEnviron, *environ );
pchVarName = strtok( strEnviron, "=");
// Si la clé correspond
if (regexec( &patternBuf, pchVarName, 0, 0, 0 ) == 0)
{
// On l'ajoute à la list
listRet->push_back( *environ ); // SEG FAULT ???
}
// Variable d'environnement suivante
environ++;
}
}
return listRet;
} |
Partager