void GetGraphicsCardList(OVR::Array< OVR::String > &gpus) { gpus.Clear(); char info[256] = { 0 }; FILE *file = popen("/usr/bin/lspci", "r"); if (file) { int status = 0; while (status >= 0) { status = fscanf(file, "%*[^\n]\n"); // Read up till the end of the current line, leaving the file pointer at the beginning of the next line (skipping any leading whitespace). OVR_UNUSED(status); // Prevent GCC compiler warning: "ignoring return value of ‘int fscanf(FILE*, const char*, ...)" status = fscanf(file, "%*[^ ] VGA compatible controller: %255[^\n]", info); if (status == 1) { gpus.PushBack(String(info)); } } pclose(file); } if (gpus.GetSizeI() <= 0) { gpus.PushBack(String("No video card details found.")); } }
// Called on each resume, synchronously fetches the data. void ovr_UpdateLocalPreferences() { #if defined( ENABLE_LOCAL_PREFS ) LocalPreferences.Clear(); OVR::MemBufferFile file( localPrefsFile ); // Don't bother checking for duplicate names, later ones // will be ignored and removed on write. const char * txt = (const char *)file.Buffer; LOG( "%s is length %i", localPrefsFile, file.Length ); for ( int ofs = 0 ; ofs < file.Length ; ) { KeyPair kp; int stopPos; kp.Key = ParseToken( txt, ofs, file.Length, stopPos ); ofs = stopPos; kp.Value = ParseToken( txt, ofs, file.Length, stopPos ); ofs = stopPos; if ( kp.Key.GetSize() > 0 ) { LOG( "%s = %s", kp.Key.ToCStr(), kp.Value.ToCStr() ); LocalPreferences.PushBack( kp ); } } #endif }
//todo linux, this requires searching /var/ files void GetGraphicsCardList(OVR::Array< OVR::String > &gpus) { gpus.Clear(); }