23#include <freerdp/utils/helpers.h> 
   25#include <winpr/path.h> 
   26#include <freerdp/version.h> 
   27#include <freerdp/build-config.h> 
   29#if !defined(WITH_FULL_CONFIG_PATH) 
   30static char* freerdp_settings_get_legacy_config_path(
void)
 
   32  char product[
sizeof(FREERDP_PRODUCT_STRING)] = { 0 };
 
   34  for (
size_t i = 0; i < 
sizeof(product); i++)
 
   35    product[i] = (
char)tolower(FREERDP_PRODUCT_STRING[i]);
 
   37  return GetKnownSubPath(KNOWN_PATH_XDG_CONFIG_HOME, product);
 
   41char* freerdp_GetConfigFilePath(BOOL system, 
const char* filename)
 
   43  eKnownPathTypes 
id = system ? KNOWN_PATH_SYSTEM_CONFIG_HOME : KNOWN_PATH_XDG_CONFIG_HOME;
 
   45#if defined(FREERDP_USE_VENDOR_PRODUCT_CONFIG_DIR) 
   46  char* vendor = GetKnownSubPath(
id, FREERDP_VENDOR_STRING);
 
   48#if !defined(WITH_FULL_CONFIG_PATH) 
   49  if (!system && (_stricmp(FREERDP_VENDOR_STRING, FREERDP_PRODUCT_STRING) == 0))
 
   50    return freerdp_settings_get_legacy_config_path();
 
   53  char* vendor = GetKnownPath(
id);
 
   58#if defined(WITH_RESOURCE_VERSIONING) 
   59  const char* verstr = FREERDP_PRODUCT_STRING FREERDP_API_VERSION;
 
   61  const char* verstr = FREERDP_PRODUCT_STRING;
 
   64  char* base = GetCombinedPath(vendor, verstr);
 
   73  char* path = GetCombinedPath(base, filename);
 
   78WINPR_JSON* freerdp_GetJSONConfigFile(BOOL system, 
const char* filename)
 
   80  char* path = freerdp_GetConfigFilePath(system, filename);
 
WINPR_API WINPR_JSON * WINPR_JSON_ParseFromFile(const char *filename)
Parse a JSON string read from a file filename.