Index: doc/man1/roar-config.1
===================================================================
--- doc/man1/roar-config.1	(revision 5801)
+++ doc/man1/roar-config.1	(revision 5811)
@@ -5,5 +5,5 @@
 .SH NAME
 
-roar-config \- get information of installed RoarAudio librarys
+roar-config \- get information of installed RoarAudio libraries
 
 .SH SYNOPSIS
@@ -17,8 +17,10 @@
 roar-config [\-\-product PRODUCT] [\-\-provider PROVIDER] [\-\-universal] \-\-path PATH
 
+roar-config \-\-render\-path PATH
+
 .SH DESCRIPTION
 
 This small tool prints information about installed versions and needed flags to work
-with the RoarAudio librarys.
+with the RoarAudio libraries.
 
 .SH "OPTIONS"
@@ -61,4 +63,9 @@
 
 .TP
+\fB--render-path PATH\fR
+Render the given path. The path can be any absolute path, a path relative to the user's home directory
+(prefixed with ~/) or a path relative to a path as used by --path (prefixed with $ and path name).
+
+.TP
 \fB--libs\fR
 Show linker flags (\-lxxx) needed to link library
Index: libroar/env.c
===================================================================
--- libroar/env.c	(revision 5754)
+++ libroar/env.c	(revision 5811)
@@ -121,4 +121,30 @@
 }
 
+static char * __get_path(const char ** inpath) {
+ char buf_path[64];
+ size_t i;
+
+ (*inpath)++;
+
+ for (i = 0; i < sizeof(buf_path); i++) {
+  if ( (*inpath)[i] == '/' || (*inpath)[i] == 0 ) {
+   break;
+  } else {
+   buf_path[i] = (*inpath)[i];
+  }
+ }
+
+ if ( i == sizeof(buf_path) ) {
+  roar_err_set(ROAR_ERROR_NOSPC);
+  return NULL;
+ }
+
+ buf_path[i] = 0;
+
+ (*inpath) += i;
+
+ return roar_libroar_get_path(buf_path, 0, NULL, NULL);
+}
+
 int roar_env_render_path_r(char * out, size_t len, const char * inpath) {
  size_t inlen;
@@ -126,5 +152,7 @@
  size_t homelen = 0;
  const char * home;
- enum { UNKNOWN, COPY, HOME } mode = UNKNOWN;
+ const char * prefix = NULL;
+ char * prefix_path = NULL;
+ enum { UNKNOWN, COPY, HOME, PREFIX } mode = UNKNOWN;
 
  if ( len == 0 && inpath == NULL )
@@ -159,8 +187,21 @@
   needlen = inlen + homelen - 1;
   mode    = HOME;
- }
-
- if ( len < (needlen + 1) )
-  return -1;
+  prefix  = home;
+  inpath++;
+ } else if ( inpath[0] == '$' ) {
+  prefix_path = __get_path(&inpath);
+  if ( prefix_path == NULL )
+   return -1;
+  needlen = roar_mm_strlen(inpath) + roar_mm_strlen(prefix_path) + 1;
+  mode    = PREFIX;
+  prefix  = prefix_path;
+ }
+
+ if ( len < (needlen + 1) ) {
+  if ( prefix_path != NULL )
+   roar_mm_free(prefix_path);
+  roar_err_set(ROAR_ERROR_NOSPC);
+  return -1;
+ }
 
  switch (mode) {
@@ -170,12 +211,18 @@
    break;
   case HOME:
-    roar_mm_strlcpy(out, home, len);
-    roar_mm_strlcat(out, inpath+1, len); // strip only ~, so we have the / if home is not /-terminated.
+  case PREFIX:
+    roar_mm_strlcpy(out, prefix, len);
+    roar_mm_strlcat(out, inpath, len); // strip only ~, so we have the / if home is not /-terminated.
    break;
   default:
+    if ( prefix_path != NULL )
+     roar_mm_free(prefix_path);
+    roar_err_set(ROAR_ERROR_NOTSUP);
     return -1;
    break;
  }
 
+ if ( prefix_path != NULL )
+  roar_mm_free(prefix_path);
  return 0;
 }
Index: roarclients/roar-config.c
===================================================================
--- roarclients/roar-config.c	(revision 5810)
+++ roarclients/roar-config.c	(revision 5811)
@@ -142,9 +142,20 @@
 }
 
+void print_renderpath(const char * path) {
+ char buf[1024];
+
+ if ( roar_env_render_path_r(buf, sizeof(buf), path) != 0 ) {
+  fprintf(stderr, "Error: Can not render path: %s: %s\n", path, roar_errorstring);
+  return;
+ }
+ printf("%s\n", buf);
+}
+
 void usage (void) {
  printf("Usage: roar-config --version\n"
         "       roar-config --compare-versions VERSIONA OPERATOR VERSIONB\n"
         "       roar-config [{--output-pc|--output-normal}] [--libs] [--cflags] [LIB]\n"
-        "       roar-config [--product PRODUCT] [--provider PROVIDER] [--universal] --path PATH\n");
+        "       roar-config [--product PRODUCT] [--provider PROVIDER] [--universal] --path PATH\n"
+        "       roar-config --render-path PATH\n");
 
  printf("\nOptions:\n\n");
@@ -158,4 +169,5 @@
         "  --provider PROVIDER - Provider string for --path\n"
         "  --universal         - Use universal path for --path\n"
+        "  --render-path PATH  - Print a rendered path\n"
         "  --libs              - Show linker flags (-lxxx) needed to link library\n"
         "  --cflags            - Show compiler flags needed to link library\n"
@@ -199,4 +211,6 @@
   } else if ( !strcmp(argv[i], "--path") ) {
    print_path(argv[++i], null_as_universal, product, provider);
+  } else if ( !strcmp(argv[i], "--render-path") ) {
+   print_renderpath(argv[++i]);
   } else if ( !strcmp(argv[i], "--libs") ) {
    libs   = 1;
