Index: doc/man1/roar-config.1
===================================================================
--- doc/man1/roar-config.1	(revision 5811)
+++ doc/man1/roar-config.1	(revision 5828)
@@ -15,5 +15,5 @@
 roar-config [{\-\-output-pc|\-\-output-normal}] [\-\-libs] [\-\-cflags] [LIB]
 
-roar-config [\-\-product PRODUCT] [\-\-provider PROVIDER] [\-\-universal] \-\-path PATH
+roar-config [\-\-product PRODUCT] [\-\-provider PROVIDER] [\-\-universal] {\-\-path PATH|\-\-list\-path}
 
 roar-config \-\-render\-path PATH
@@ -51,14 +51,18 @@
 
 .TP
+\fB--list-path\fR
+List all known paths with corresponding values.
+
+.TP
 \fB--product PRODUCT\fR
-Product string for \-\-path.
+Product string for \-\-path and \-\-list\-path.
 
 .TP
 \fB--provider PROVIDER\fR
-Provider string for \-\-path.
+Provider string for \-\-path and \-\-list\-path.
 
 .TP
 \fB--universal\fR
-Use universal path for \-\-path.
+Use universal path for \-\-path and \-\-list\-path.
 
 .TP
Index: include/libroar/config.h
===================================================================
--- include/libroar/config.h	(revision 5823)
+++ include/libroar/config.h	(revision 5828)
@@ -181,4 +181,7 @@
 char * roar_libroar_get_path(const char * name, int null_as_universal, const char * product, const char * provider) _LIBROAR_ATTR_USE_RESULT;
 
+// list all known paths:
+ssize_t roar_libroar_list_path(const char ** list, size_t len, size_t offset) _LIBROAR_ATTR_USE_RESULT _LIBROAR_ATTR_NONNULL_ALL;
+
 #endif
 
Index: libroar/config.c
===================================================================
--- libroar/config.c	(revision 5823)
+++ libroar/config.c	(revision 5828)
@@ -608,3 +608,25 @@
 }
 
+ssize_t roar_libroar_list_path(const char ** list, size_t len, size_t offset) {
+ size_t i;
+ ssize_t idx = 0;
+
+ if ( list == NULL ) {
+  roar_err_set(ROAR_ERROR_FAULT);
+  return -1;
+ }
+
+ if ( len == 0 )
+  return 0;
+
+ if ( offset >= (sizeof(__paths)/sizeof(*__paths)) )
+  return 0;
+
+ for (i = offset; i < (sizeof(__paths)/sizeof(*__paths)); i++) {
+  list[idx++] = __paths[i].name;
+ }
+
+ return idx;
+}
+
 //ll
Index: roarclients/roar-config.c
===================================================================
--- roarclients/roar-config.c	(revision 5824)
+++ roarclients/roar-config.c	(revision 5828)
@@ -142,4 +142,40 @@
 }
 
+void list_path(int null_as_universal, const char * product, const char * provider) {
+ const char * names[32];
+ char * path;
+ size_t offset = 0;
+ ssize_t ret;
+ ssize_t i;
+ const char * err;
+ size_t errlen;
+
+ while (1) {
+  ret = roar_libroar_list_path(names, sizeof(names)/sizeof(*names), offset);
+  if ( ret < 1 )
+   break;
+  offset += (size_t)ret;
+
+  for (i = 0; i < ret; i++) {
+   path = roar_libroar_get_path(names[i], null_as_universal, product, provider);
+   if ( path == NULL && roar_error == ROAR_ERROR_INVAL )
+    path = roar_libroar_get_path(names[i], 0, product, NULL);
+   if ( path == NULL && roar_error == ROAR_ERROR_INVAL )
+    path = roar_libroar_get_path(names[i], 0, NULL, NULL);
+   if ( path == NULL ) {
+    err = roar_errorstring;
+    errlen = roar_mm_strlen(err) + roar_mm_strlen("<Error: >") + 1;
+    path = roar_mm_malloc(errlen);
+    if ( path == NULL )
+     continue;
+    snprintf(path, errlen, "<Error: %s>", err);
+   }
+
+   printf("%-24s: %s\n", names[i], path);
+   roar_mm_free(path);
+  }
+ }
+}
+
 void print_renderpath(const char * path) {
  char buf[1024];
@@ -156,5 +192,5 @@
         "       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|--list-path}\n"
         "       roar-config --render-path PATH\n");
 
@@ -166,7 +202,8 @@
         "                      - Compare version A against B with operator OP.\n"
         "  --path NAME         - Print path NAME\n"
-        "  --product PRODUCT   - Product string for --path\n"
-        "  --provider PROVIDER - Provider string for --path\n"
-        "  --universal         - Use universal path for --path\n"
+        "  --list-path         - Print all known paths\n"
+        "  --product PRODUCT   - Product string for --path/--list-path\n"
+        "  --provider PROVIDER - Provider string for --path/--list-path\n"
+        "  --universal         - Use universal path for --path/--list-path\n"
         "  --render-path PATH  - Print a rendered path\n"
         "  --libs              - Show linker flags (-lxxx) needed to link library\n"
@@ -211,4 +248,6 @@
   } else if ( !strcmp(argv[i], "--path") ) {
    print_path(argv[++i], null_as_universal, product, provider);
+  } else if ( !strcmp(argv[i], "--list-path") ) {
+   list_path(null_as_universal, product, provider);
   } else if ( !strcmp(argv[i], "--render-path") ) {
    print_renderpath(argv[++i]);
