This file is the only result google gives me: nsReadConfig.cpp, and if we skip down to around line #200, this is the block of code:
// Once the config file is read, we should check that the vendor name
// is consistent By checking for the vendor name after reading the config
// file we allow for the preference to be set (and locked) by the creator
// of the cfg file meaning the file can not be renamed (successfully).
PRInt32 obscureValue = 0;
(void) prefBranch->GetIntPref("general.config.obscure_value", &obscureValue);
PR_LOG(MCD, PR_LOG_DEBUG, ("evaluating .cfg file %s with obscureValue %d\n", lockFileName.get(), obscureValue));
rv = openAndEvaluateJSFile(lockFileName.get(), PR_TRUE, obscureValue, PR_TRUE);
PR_LOG(MCD, PR_LOG_DEBUG, ("error evaluating .cfg file %s %x\n", lockFileName.get(), rv));
rv = prefBranch->GetCharPref("general.config.filename",
// There is NO REASON we should ever get here. This is POST reading
// of the config file.
Now I haven't programmed any C++ since my freshman year at RIT, but I can't believe there isn't an easier way to do this.