Index: roard/driver.c
===================================================================
--- roard/driver.c	(revision 1827)
+++ roard/driver.c	(revision 1915)
@@ -26,11 +26,14 @@
 
 struct roar_driver g_driver[] = {
- { "null", "null audio driver", "/dev/null", NULL, NULL, NULL, NULL, NULL, NULL, NULL},
+ { "null", "null audio driver", "/dev/null", DRV_FLAG_NONE, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
 #ifdef ROAR_HAVE_ESD
- { "esd", "EsounD audio driver", "localhost, remote.host.dom", NULL, driver_esd_close, driver_esd_pause, NULL, NULL, driver_esd_flush, driver_esd_open_vio},
-#endif
- { "roar", "RoarAudio driver", "localhost, remote.host.dom", NULL, driver_roar_close, NULL, NULL, NULL, driver_roar_flush, driver_roar_open_vio},
+ { "esd", "EsounD audio driver", "localhost, remote.host.dom", DRV_FLAG_NONE,
+   NULL, driver_esd_close, driver_esd_pause, NULL, NULL, driver_esd_flush, driver_esd_open_vio},
+#endif
+ { "roar", "RoarAudio driver", "localhost, remote.host.dom", DRV_FLAG_NONE,
+   NULL, driver_roar_close, NULL, NULL, NULL, driver_roar_flush, driver_roar_open_vio},
 #ifdef ROAR_HAVE_IO_POSIX
- { "raw",  "RAW PCM driver", "/some/file", NULL, NULL, NULL, NULL, NULL, driver_raw_flush, driver_raw_open_vio},
+ { "raw",  "RAW PCM driver", "/some/file", DRV_FLAG_FHSEC,
+   NULL, NULL, NULL, NULL, NULL, driver_raw_flush, driver_raw_open_vio},
 #endif
 #if defined(ROAR_HAVE_OSS_BSD) || defined(ROAR_HAVE_OSS)
@@ -38,17 +41,22 @@
 #define ROAR_DEFAULT_OSS_DEV "no default device"
 #endif
- { "oss", "Open Sound System", ROAR_DEFAULT_OSS_DEV, NULL, NULL, NULL, NULL, NULL, NULL, driver_oss_open},
+ { "oss", "Open Sound System", ROAR_DEFAULT_OSS_DEV, DRV_FLAG_NONE,
+   NULL, NULL, NULL, NULL, NULL, NULL, driver_oss_open},
 #endif
 #ifdef ROAR_HAVE_LIBAO
- { "ao", "libao audio driver", "DRIVER", NULL, driver_ao_close, NULL, NULL, NULL, NULL, driver_ao_open_vio},
+ { "ao", "libao audio driver", "DRIVER", DRV_FLAG_NONE,
+   NULL, driver_ao_close, NULL, NULL, NULL, NULL, driver_ao_open_vio},
 #endif
 #ifdef ROAR_HAVE_LIBSHOUT
- {"shout", "libshout streaming", "http://user:pw@host:port/mount.ogg", NULL, driver_shout_close, NULL, NULL, NULL, NULL, driver_shout_open_vio},
+ {"shout", "libshout streaming", "http://user:pw@host:port/mount.ogg", DRV_FLAG_NONE,
+  NULL, driver_shout_close, NULL, NULL, NULL, NULL, driver_shout_open_vio},
 #endif
 #ifdef ROAR_HAVE_LIBSNDIO
- {"sndio", "OpenBSD sndio", "/dev/audio, /tmp/aucat-<uid>/default", NULL, NULL, NULL, NULL, NULL, NULL, driver_sndio_open},
-#endif
- {"dmx", "DMX512 driver", "/dev/dmx", NULL, NULL, NULL, NULL, NULL, NULL, driver_dmx_open_vio},
- {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} // end of list
+ {"sndio", "OpenBSD sndio", "/dev/audio, /tmp/aucat-<uid>/default", DRV_FLAG_NONE,
+  NULL, NULL, NULL, NULL, NULL, NULL, driver_sndio_open},
+#endif
+ {"dmx", "DMX512 driver", "/dev/dmx", DRV_FLAG_NONE,
+  NULL, NULL, NULL, NULL, NULL, NULL, driver_dmx_open_vio},
+ {NULL, NULL, NULL, DRV_FLAG_NONE, NULL, NULL, NULL, NULL, NULL, NULL, NULL} // end of list
                                 };
 
@@ -56,9 +64,10 @@
  int i;
 
- printf("  Driver Type - Description (devices)\n");
+ printf("  Driver Flag - Description (devices)\n");
  printf("------------------------------------------------------\n");
 
  for (i = 0; g_driver[i].name != NULL; i++) {
-  printf("  %-8s %c%c - %s (devices: %s)\n", g_driver[i].name,
+  printf("  %-7s %c%c%c - %s (devices: %s)\n", g_driver[i].name,
+                g_driver[i].flags & DRV_FLAG_FHSEC                                                         ? 's' : ' ',
                 g_driver[i].open     != NULL || (g_driver[i].open == NULL && g_driver[i].vio_init == NULL) ? 'S' : ' ',
                 g_driver[i].vio_init != NULL || (g_driver[i].open == NULL && g_driver[i].vio_init == NULL) ? 'V' : ' ',
Index: roard/include/driver.h
===================================================================
--- roard/include/driver.h	(revision 1824)
+++ roard/include/driver.h	(revision 1915)
@@ -84,8 +84,12 @@
 #endif
 
+#define DRV_FLAG_NONE           0x00
+#define DRV_FLAG_FHSEC          0x01
+
 struct roar_driver {
  char * name;
  char * desc;
  char * devices;
+ unsigned int flags;
  int (*open )(DRIVER_USERDATA_T * inst, char * device, struct roar_audio_info * info);
  int (*close)(DRIVER_USERDATA_T   inst);
