conf.set('WITH_BLKID', 1)
endif
+libbsd_dep = dependency('libbsd', required: false)
+if libbsd_dep.found()
+ conf.set('WITH_LIBBSD', 1)
+endif
+
capng_dep = dependency('libcap-ng', required: get_option('capng'))
if capng_dep.found()
conf.set('WITH_CAPNG', 1)
'dlopen': dlopen_dep.found(),
'fuse': fuse_dep.found(),
'glusterfs': glusterfs_dep.found(),
+ 'libbsd': libbsd_dep.found(),
'libiscsi': libiscsi_dep.found(),
'libkvm': libkvm_dep.found(),
'libnbd': libnbd_dep.found(),
# include <conio.h>
#endif /* WIN32 */
+#ifdef WITH_LIBBSD
+# include <bsd/readpassphrase.h>
+#endif
+
#ifdef __linux__
# include <sys/sysmacros.h>
#endif
}
return g_string_free(pw, FALSE);
+#elif WITH_LIBBSD /* !WIN32 */
+# ifndef PASS_MAX
+# define PASS_MAX 1024
+# endif
+ char *pass = NULL;
+ g_autofree char *buffer = g_new0(char, PASS_MAX);
+
+ pass = readpassphrase("", buffer, PASS_MAX, 0);
+ if (pass == NULL) {
+ return NULL;
+ }
+
+ return g_steal_pointer(&buffer);
#else /* !WIN32 */
return g_strdup(getpass(""));
#endif /* ! WIN32 */