diff options
author | Karel Zak | 2013-05-15 13:33:24 +0200 |
---|---|---|
committer | Karel Zak | 2013-09-16 16:46:54 +0200 |
commit | 34b06299ce71aea4fd2b1437217ced0be013d91d (patch) | |
tree | 844e384045dbb41fb2fe21428fe8030e6ee63849 /libfdisk/src/ask.c | |
parent | libfdisk: (sun) move driver from fdisk to library (diff) | |
download | kernel-qcow2-util-linux-34b06299ce71aea4fd2b1437217ced0be013d91d.tar.gz kernel-qcow2-util-linux-34b06299ce71aea4fd2b1437217ced0be013d91d.tar.xz kernel-qcow2-util-linux-34b06299ce71aea4fd2b1437217ced0be013d91d.zip |
libfdisk: add asktype "string" and support UUID partition change
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libfdisk/src/ask.c')
-rw-r--r-- | libfdisk/src/ask.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/libfdisk/src/ask.c b/libfdisk/src/ask.c index 0127d645a..9beccb4bf 100644 --- a/libfdisk/src/ask.c +++ b/libfdisk/src/ask.c @@ -368,6 +368,52 @@ int fdisk_ask_number(struct fdisk_context *cxt, return rc; } +char *fdisk_ask_string_get_result(struct fdisk_ask *ask) +{ + assert(ask); + assert(fdisk_is_ask(ask, STRING)); + return ask->data.str.result; +} + +/* + * The @result has to be poiter to the allocated buffer. + */ +int fdisk_ask_string_set_result(struct fdisk_ask *ask, char *result) +{ + assert(ask); + ask->data.str.result = result; + return 0; +} + +/* + * Don't forget to deallocate @result. + */ +int fdisk_ask_string(struct fdisk_context *cxt, + const char *query, + char **result) +{ + struct fdisk_ask *ask; + int rc; + + assert(cxt); + + ask = fdisk_new_ask(); + if (!ask) + return -ENOMEM; + + rc = fdisk_ask_set_type(ask, FDISK_ASKTYPE_STRING); + if (!rc) + fdisk_ask_set_query(ask, query); + if (!rc) + rc = fdisk_do_ask(cxt, ask); + if (!rc) + *result = fdisk_ask_string_get_result(ask); + + fdisk_free_ask(ask); + DBG(ASK, dbgprint("result: %s [rc=%d]\n", *result, rc)); + return rc; +} + int fdisk_ask_yesno(struct fdisk_context *cxt, const char *query, int *result) |