--- Makefile | 1 + libutil/promptyn.c | 23 +++++++++++++++++++++++ util.h | 1 + 3 files changed, 25 insertions(+) create mode 100644 libutil/promptyn.c diff --git a/Makefile b/Makefile index 3243b1c..0a5c930 100644 --- a/Makefile +++ b/Makefile _AT_@ -63,6 +63,7 @@ LIBUTILSRC =\ libutil/mkdirp.c\ libutil/mode.c\ libutil/parseoffset.c\ + libutil/promptyn.c\ libutil/putword.c\ libutil/reallocarray.c\ libutil/recurse.c\ diff --git a/libutil/promptyn.c b/libutil/promptyn.c new file mode 100644 index 0000000..0214ee3 --- /dev/null +++ b/libutil/promptyn.c _AT_@ -0,0 +1,23 @@ +/* See LICENSE file for copyright and license details. */ +#include <stdio.h> +#include <stdarg.h> + +int +promptyn(const char *nomsg, const char *promptfmt, ...) +{ + va_list ap; + + va_start(ap, promptfmt); + vfprintf(stderr, promptfmt, ap); + va_end(ap); + + fprintf(stderr, " (y/n [n]): "); + switch (getchar()) { + case 'y': case 'Y': + return 0; + default: + fprintf(stderr, "%s\n", nomsg); + return 1; + } +} + diff --git a/util.h b/util.h index 8d5004b..6060d95 100644 --- a/util.h +++ b/util.h _AT_@ -73,6 +73,7 @@ int concat(int, const char *, int, const char *); /* misc */ void enmasse(int, char **, int (*)(const char *, const char *, int)); +int promptyn(const char *, const char *, ...); void fnck(const char *, const char *, int (*)(const char *, const char *, int), int); mode_t getumask(void); char *humansize(off_t); -- 2.37.3Received on Sat Nov 19 2022 - 22:42:58 CET
This archive was generated by hypermail 2.3.0 : Sat Nov 19 2022 - 22:48:31 CET