Mercurial > hg > vamp-plugin-sdk
comparison src/vamp-hostsdk/Files.cpp @ 512:54277cb679ff
Wide-char environment variable lookup
author | Chris Cannam |
---|---|
date | Fri, 08 Jun 2018 11:25:19 +0100 |
parents | 628a5b8ff634 |
children | 4b619c5871ee |
comparison
equal
deleted
inserted
replaced
511:328cb056da44 | 512:54277cb679ff |
---|---|
320 closedir(d); | 320 closedir(d); |
321 #endif | 321 #endif |
322 | 322 |
323 return files; | 323 return files; |
324 } | 324 } |
325 | |
326 bool | |
327 Files::getEnvUtf8(std::string variable, std::string &value) | |
328 { | |
329 value = ""; | |
330 | |
331 #ifdef _WIN32 | |
332 int wvarlen = MultiByteToWideChar(CP_UTF8, 0, | |
333 variable.c_str(), int(variable.length()), | |
334 0, 0); | |
335 if (wvarlen < 0) { | |
336 cerr << "Vamp::HostExt: Unable to convert environment variable name " | |
337 << variable << " to wide characters" << endl; | |
338 return false; | |
339 } | |
340 | |
341 wchar_t *wvarbuf = new wchar_t[wvarlen + 1]; | |
342 (void)MultiByteToWideChar(CP_UTF8, 0, | |
343 variable.c_str(), int(variable.length()), | |
344 wvarbuf, wvarlen); | |
345 wvarbuf[wvarlen] = L'\0'; | |
346 | |
347 wchar_t *wvalue = _wgetenv(wvarbuf); | |
348 | |
349 delete[] wvarbuf; | |
350 | |
351 if (!wvalue) { | |
352 return false; | |
353 } | |
354 | |
355 int wvallen = int(wcslen(wvalue)); | |
356 int vallen = WideCharToMultiByte(CP_UTF8, 0, | |
357 wvalue, wvallen, | |
358 0, 0, 0, 0); | |
359 if (vallen < 0) { | |
360 cerr << "Vamp::HostExt: Unable to convert environment value to UTF-8" | |
361 << endl; | |
362 return false; | |
363 } | |
364 | |
365 char *val = new char[vallen + 1]; | |
366 (void)WideCharToMultiByte(CP_UTF8, 0, | |
367 wvalue, wvallen, | |
368 val, vallen, 0, 0); | |
369 val[vallen] = '\0'; | |
370 | |
371 value = val; | |
372 | |
373 delete[] val; | |
374 return true; | |
375 | |
376 #else | |
377 | |
378 char *val = getenv(variable.c_str()); | |
379 if (!val) { | |
380 return false; | |
381 } | |
382 | |
383 value = val; | |
384 return true; | |
385 | |
386 #endif | |
387 } |