]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
fdisk: add callacks for info, warn and warnx Ask API
authorKarel Zak <kzak@redhat.com>
Wed, 30 Jan 2013 13:50:55 +0000 (14:50 +0100)
committerKarel Zak <kzak@redhat.com>
Mon, 11 Mar 2013 12:00:55 +0000 (13:00 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
fdisks/fdisk-ask.c

index c27deae76d8666978eb5f27c5072dce764eaa937..19d1628ae651534d56576b1d847edec3ac2bc519 100644 (file)
@@ -167,6 +167,7 @@ static int ask_offset(struct fdisk_context *cxt,
 int ask_callback(struct fdisk_context *cxt, struct fdisk_ask *ask,
                    void *data __attribute__((__unused__)))
 {
+       va_list ap;
        char buf[BUFSIZ];
 
        assert(cxt);
@@ -177,6 +178,25 @@ int ask_callback(struct fdisk_context *cxt, struct fdisk_ask *ask,
                return ask_number(cxt, ask, buf, sizeof(buf));
        case FDISK_ASKTYPE_OFFSET:
                return ask_offset(cxt, ask, buf, sizeof(buf));
+       case FDISK_ASKTYPE_INFO:
+               fdisk_ask_print_get_va(ask, ap);
+               vfprintf(stdout, fdisk_ask_print_get_mesg(ask), ap);
+               fputc('\n', stdout);
+               va_end(ap);
+               break;
+       case FDISK_ASKTYPE_WARNX:
+               fdisk_ask_print_get_va(ask, ap);
+               vfprintf(stderr, fdisk_ask_print_get_mesg(ask), ap);
+               fputc('\n', stderr);
+               va_end(ap);
+               break;
+       case FDISK_ASKTYPE_WARN:
+               fdisk_ask_print_get_va(ask, ap);
+               vfprintf(stderr, fdisk_ask_print_get_mesg(ask), ap);
+               errno = fdisk_ask_print_get_errno(ask);
+               fprintf(stderr, ": %m\n");
+               va_end(ap);
+               break;
        default:
                warnx(_("internal error: unssuported dialog type %d"), fdisk_ask_get_type(ask));
                return -EINVAL;