static void fdisk_ask_menu_reset_items(struct fdisk_ask *ask);
-/**
- * fdisk_new_ask:
- *
- * Returns: newly allocated ask instance.
- */
struct fdisk_ask *fdisk_new_ask(void)
{
struct fdisk_ask *ask = calloc(1, sizeof(struct fdisk_ask));
return ask;
}
-/**
- * fdisk_reset_ask:
- * @ask: ask instance
- *
- * Resets all ask setting.
- */
void fdisk_reset_ask(struct fdisk_ask *ask)
{
int refcount;
return ask->query;
}
-/**
- * fdisk_ask_set_query:
- * @ask: ask instance
- * @str: new query string
- *
- * Returns: 0 on success, <0 on error
- */
int fdisk_ask_set_query(struct fdisk_ask *ask, const char *str)
{
assert(ask);
return ask->type;
}
-/**
- * fdisk_ask_set_type:
- * @ask: ask instance
- * @type: new ask type
- *
- * Returns: 0 on success, <0 on error
- */
int fdisk_ask_set_type(struct fdisk_ask *ask, int type)
{
assert(ask);
#define is_number_ask(a) (fdisk_is_ask(a, NUMBER) || fdisk_is_ask(a, OFFSET))
+/**
+ * fdisk_ask_number_get_range:
+ * @ask: ask instance
+ *
+ * Returns: string with range (e.g. "1,3,5-10")
+ */
const char *fdisk_ask_number_get_range(struct fdisk_ask *ask)
{
assert(ask);
return 0;
}
+/**
+ * fdisk_ask_number_get_default:
+ * @ask: ask instance
+ *
+ * Returns: default number
+ *
+ */
uint64_t fdisk_ask_number_get_default(struct fdisk_ask *ask)
{
assert(ask);
return 0;
}
+/**
+ * fdisk_ask_number_get_low"
+ * @ask: ask instance
+ *
+ * Returns: minimal possible number when ask for numbers in range
+ */
uint64_t fdisk_ask_number_get_low(struct fdisk_ask *ask)
{
assert(ask);
return 0;
}
+/**
+ * fdisk_ask_number_get_high"
+ * @ask: ask instance
+ *
+ * Returns: maximal possible number when ask for numbers in range
+ */
uint64_t fdisk_ask_number_get_high(struct fdisk_ask *ask)
{
assert(ask);
return 0;
}
+/**
+ * fdisk_ask_number_get_result:
+ * @ask: ask instance
+ *
+ * Returns: result
+ */
uint64_t fdisk_ask_number_get_result(struct fdisk_ask *ask)
{
assert(ask);
return ask->data.num.result;
}
+/**
+ * fdisk_ask_number_set_result:
+ * @ask: ask instance
+ * @ask: dialog result
+ *
+ * Returns: 0 on success, <0 on error
+ */
int fdisk_ask_number_set_result(struct fdisk_ask *ask, uint64_t result)
{
assert(ask);
return 0;
}
+/**
+ * fdisk_ask_number_get_base:
+ * @ask: ask instance
+ *
+ * Returns: base when user specify number in relative notation (+<size>)
+ */
uint64_t fdisk_ask_number_get_base(struct fdisk_ask *ask)
{
assert(ask);
return 0;
}
-/* if numbers are not in bytes, then specify number of bytes per the unit */
+/**
+ * fdisk_ask_number_get_unit:
+ * @ask: ask instance
+ *
+ * Returns: number of bytes per the unit
+ */
uint64_t fdisk_ask_number_get_unit(struct fdisk_ask *ask)
{
assert(ask);
return ask->data.num.relative;
}
+/**
+ * fdisk_ask_number_set_relative
+ * @ask: ask instance
+ * @relative: 0 or 1
+ *
+ * Inform libfdisk that user specified number in relative notation rather than
+ * by explicit number. This info allows to fdisk do some optimization (e.g.
+ * align end of partiton, etc.)
+ *
+ * Returns: 0 on success, <0 on error
+ */
int fdisk_ask_number_set_relative(struct fdisk_ask *ask, int relative)
{
assert(ask);
return 0;
}
+/**
+ * fdisk_ask_number_inchars:
+ * @ask: ask instance
+ *
+ * For example for BSD is normal to address partition by chars rather than by
+ * number (first partition is 'a').
+ *
+ * Returns: 1 if number should be presented as chars
+ *
+ */
int fdisk_ask_number_inchars(struct fdisk_ask *ask)
{
assert(ask);
* @partnum: returns partition number
* @wantnew: 0|1
*
- * This function uses libfdisk Ask API to get a partition number.
+ * High-level API to ask for used or unused partition number.
*
* Returns: 0 on success, < 0 on error, 1 if no free/used partition
*/
return rc;
}
-/* very basic wraper to ask numbers */
+/**
+ * fdisk_ask_number:
+ * @cxt: context
+ * @low: minimal possible number
+ * @dflt: default suggestion
+ * @high: maximal possible number
+ * @query: question string
+ * @result: returns result
+ *
+ * Returns: 0 on success, <0 on error.
+ */
int fdisk_ask_number(struct fdisk_context *cxt,
uintmax_t low,
uintmax_t dflt,
return rc;
}
+/**
+ * fdisk_ask_string_get_result:
+ * @ask: ask instance
+ *
+ * Returns: pointer to dialog result
+ */
char *fdisk_ask_string_get_result(struct fdisk_ask *ask)
{
assert(ask);
return ask->data.str.result;
}
-/*
- * The @result has to be poiter to the allocated buffer.
+/**
+ * fdisk_ask_string_set_result:
+ * @ask: ask instance
+ * @result: pointer to allocated buffer with string
+ *
+ * You don't have to care about the @result deallocation, libfdisk is going to
+ * deallocate the result when destroy @ask instance.
+ *
+ * Returns: 0 on success, <0 on error
*/
int fdisk_ask_string_set_result(struct fdisk_ask *ask, char *result)
{
return 0;
}
-/*
- * Don't forget to deallocate @result.
+/**
+ * fdisk_ask_string:
+ * @cxt: context:
+ * @query: question string
+ * @result: returns allocated buffer
+ *
+ * High-level API to ask for strings. Don't forget to deallocate the @result.
+ *
+ * Returns: 0 on success, <0 on error.
*/
int fdisk_ask_string(struct fdisk_context *cxt,
const char *query,
return rc;
}
+/**
+ * fdisk_ask_yesno:
+ * @cxt: context
+ * @query: question string
+ * @result: returns 0 (no) or 1 (yes)
+ *
+ * Hight-level API to ask Yes/No questions
+ *
+ * Returns: 0 on success, <0 on error
+ */
int fdisk_ask_yesno(struct fdisk_context *cxt,
const char *query,
int *result)
return rc;
}
-uint64_t fdisk_ask_yesno_get_result(struct fdisk_ask *ask)
+/**
+ * fdisk_ask_yesno_get_result:
+ * @ask: ask instance
+ *
+ * Returns: 0 or 1
+ */
+int fdisk_ask_yesno_get_result(struct fdisk_ask *ask)
{
assert(ask);
assert(fdisk_is_ask(ask, YESNO));
return ask->data.yesno.result;
}
-int fdisk_ask_yesno_set_result(struct fdisk_ask *ask, uint64_t result)
+/**
+ * fdisk_ask_yesno_set_result:
+ * @ask: ask instance
+ * @result: 1 or 0
+ *
+ * Returns: 0 on success, <0 on error
+ */
+int fdisk_ask_yesno_set_result(struct fdisk_ask *ask, int result)
{
assert(ask);
ask->data.yesno.result = result;
return 0;
}
+/**
+ * fdisk_ask_menu_get_default:
+ * @ask: ask instance
+ *
+ * Returns: default menu item key
+ */
int fdisk_ask_menu_get_default(struct fdisk_ask *ask)
{
assert(ask);
return ask->data.menu.dfl;
}
+/**
+ * fdisk_ask_menu_set_result:
+ * @ask: ask instance
+ * @key: result
+ *
+ * Returns: 0 on success, <0 on error
+ */
int fdisk_ask_menu_set_result(struct fdisk_ask *ask, int key)
{
assert(ask);
}
+/**
+ * fdisk_ask_menu_get_result:
+ * @ask: ask instance
+ * @key: returns selected menu item key
+ *
+ * Returns: 0 on success, <0 on error.
+ */
int fdisk_ask_menu_get_result(struct fdisk_ask *ask, int *key)
{
assert(ask);
return 0;
}
-/* returns: 0 = success, <0 = error, >0 = idx out-of-range */
+/**
+ * fdisk_ask_menu_get_item:
+ * @ask: ask menu instance
+ * @idx: wanted menu item index
+ * @key: returns key of the menu item
+ * @name: returns name of the menu item
+ * @desc: returns description of the menu item
+ *
+ * Returns: 0 on success, <0 on error, >0 if idx out-of-range
+ */
int fdisk_ask_menu_get_item(struct fdisk_ask *ask, size_t idx, int *key,
const char **name, const char **desc)
{
}
}
+/**
+ * fdisk_ask_menu_get_nitems:
+ * @ask: ask instance
+ *
+ * Returns: number of menu items
+ */
size_t fdisk_ask_menu_get_nitems(struct fdisk_ask *ask)
{
struct ask_menuitem *mi;
#define is_print_ask(a) (fdisk_is_ask(a, WARN) || fdisk_is_ask(a, WARNX) || fdisk_is_ask(a, INFO))
+/**
+ * fdisk_ask_print_get_errno:
+ * @ask: ask instance
+ *
+ * Returns: error number for warning/error messages
+ */
int fdisk_ask_print_get_errno(struct fdisk_ask *ask)
{
assert(ask);
return 0;
}
+/**
+ * fdisk_ask_print_get_mesg:
+ * @ask: ask instance
+ *
+ * Returns: pointer to message
+ */
const char *fdisk_ask_print_get_mesg(struct fdisk_ask *ask)
{
assert(ask);
return rc;
}
+/**
+ * fdisk_info:
+ * @cxt: context
+ * @fmt: printf-like formatted string
+ *
+ * High-level API to print info messages,
+ *
+ * Returns: 0 on success, <0 on error
+ */
int fdisk_info(struct fdisk_context *cxt, const char *fmt, ...)
{
int rc;
return rc;
}
+/**
+ * fdisk_info:
+ * @cxt: context
+ * @fmt: printf-like formatted string
+ *
+ * High-level API to print warning message (errno expected)
+ *
+ * Returns: 0 on success, <0 on error
+ */
int fdisk_warn(struct fdisk_context *cxt, const char *fmt, ...)
{
int rc;
return rc;
}
+/**
+ * fdisk_warnx:
+ * @cxt: context
+ * @fmt: printf-like formatted string
+ *
+ * High-level API to print warning message
+ *
+ * Returns: 0 on success, <0 on error
+ */
int fdisk_warnx(struct fdisk_context *cxt, const char *fmt, ...)
{
int rc;
extern void fdisk_deinit_label(struct fdisk_label *lb);
/* ask.c */
-extern int fdisk_info_new_partition(
+struct fdisk_ask *fdisk_new_ask(void);
+void fdisk_reset_ask(struct fdisk_ask *ask);
+int fdisk_ask_set_query(struct fdisk_ask *ask, const char *str);
+int fdisk_ask_set_type(struct fdisk_ask *ask, int type);
+int fdisk_do_ask(struct fdisk_context *cxt, struct fdisk_ask *ask);
+int fdisk_ask_number_set_range(struct fdisk_ask *ask, const char *range);
+int fdisk_ask_number_set_default(struct fdisk_ask *ask, uint64_t dflt);
+int fdisk_ask_number_set_low(struct fdisk_ask *ask, uint64_t low);
+int fdisk_ask_number_set_high(struct fdisk_ask *ask, uint64_t high);
+int fdisk_ask_number_set_base(struct fdisk_ask *ask, uint64_t base);
+int fdisk_ask_number_set_unit(struct fdisk_ask *ask, uint64_t unit);
+int fdisk_ask_number_is_relative(struct fdisk_ask *ask);
+int fdisk_ask_menu_set_default(struct fdisk_ask *ask, int dfl);
+int fdisk_ask_menu_add_item(struct fdisk_ask *ask, int key,
+ const char *name, const char *desc);
+int fdisk_ask_print_set_errno(struct fdisk_ask *ask, int errnum);
+int fdisk_ask_print_set_mesg(struct fdisk_ask *ask, const char *mesg);
+int fdisk_info_new_partition(
struct fdisk_context *cxt,
int num, sector_t start, sector_t stop,
struct fdisk_parttype *t);
/* ask.c */
#define fdisk_is_ask(a, x) (fdisk_ask_get_type(a) == FDISK_ASKTYPE_ ## x)
-extern struct fdisk_ask *fdisk_new_ask(void);
-extern void fdisk_reset_ask(struct fdisk_ask *ask);
-extern void fdisk_ref_ask(struct fdisk_ask *ask);
-extern void fdisk_unref_ask(struct fdisk_ask *ask);
-extern const char *fdisk_ask_get_query(struct fdisk_ask *ask);
-extern int fdisk_ask_set_query(struct fdisk_ask *ask, const char *str);
-extern int fdisk_ask_get_type(struct fdisk_ask *ask);
-extern int fdisk_ask_set_type(struct fdisk_ask *ask, int type);
-
-extern int fdisk_do_ask(struct fdisk_context *cxt, struct fdisk_ask *ask);
-
-extern const char *fdisk_ask_number_get_range(struct fdisk_ask *ask);
-extern int fdisk_ask_number_set_range(struct fdisk_ask *ask, const char *range);
-extern uint64_t fdisk_ask_number_get_default(struct fdisk_ask *ask);
-extern int fdisk_ask_number_set_default(struct fdisk_ask *ask, uint64_t dflt);
-extern uint64_t fdisk_ask_number_get_low(struct fdisk_ask *ask);
-extern int fdisk_ask_number_set_low(struct fdisk_ask *ask, uint64_t low);
-extern uint64_t fdisk_ask_number_get_high(struct fdisk_ask *ask);
-extern int fdisk_ask_number_set_high(struct fdisk_ask *ask, uint64_t high);
-extern uint64_t fdisk_ask_number_get_base(struct fdisk_ask *ask);
-extern int fdisk_ask_number_set_base(struct fdisk_ask *ask, uint64_t base);
-extern uint64_t fdisk_ask_number_get_unit(struct fdisk_ask *ask);
-extern int fdisk_ask_number_set_unit(struct fdisk_ask *ask, uint64_t unit);
-extern uint64_t fdisk_ask_number_get_result(struct fdisk_ask *ask);
-extern int fdisk_ask_number_set_result(struct fdisk_ask *ask, uint64_t result);
-extern int fdisk_ask_number_set_relative(struct fdisk_ask *ask, int relative);
-extern int fdisk_ask_number_is_relative(struct fdisk_ask *ask);
-extern int fdisk_ask_number_inchars(struct fdisk_ask *ask);
-
-extern int fdisk_ask_number(struct fdisk_context *cxt,
+void fdisk_ref_ask(struct fdisk_ask *ask);
+void fdisk_unref_ask(struct fdisk_ask *ask);
+const char *fdisk_ask_get_query(struct fdisk_ask *ask);
+int fdisk_ask_get_type(struct fdisk_ask *ask);
+const char *fdisk_ask_number_get_range(struct fdisk_ask *ask);
+uint64_t fdisk_ask_number_get_default(struct fdisk_ask *ask);
+uint64_t fdisk_ask_number_get_low(struct fdisk_ask *ask);
+uint64_t fdisk_ask_number_get_high(struct fdisk_ask *ask);
+uint64_t fdisk_ask_number_get_result(struct fdisk_ask *ask);
+int fdisk_ask_number_set_result(struct fdisk_ask *ask, uint64_t result);
+uint64_t fdisk_ask_number_get_base(struct fdisk_ask *ask);
+uint64_t fdisk_ask_number_get_unit(struct fdisk_ask *ask);
+int fdisk_ask_number_set_relative(struct fdisk_ask *ask, int relative);
+int fdisk_ask_number_inchars(struct fdisk_ask *ask);
+int fdisk_ask_partnum(struct fdisk_context *cxt, size_t *partnum, int wantnew);
+
+int fdisk_ask_number(struct fdisk_context *cxt,
uintmax_t low,
uintmax_t dflt,
uintmax_t high,
const char *query,
uintmax_t *result);
-
-extern int fdisk_ask_string(struct fdisk_context *cxt,
+char *fdisk_ask_string_get_result(struct fdisk_ask *ask);
+int fdisk_ask_string_set_result(struct fdisk_ask *ask, char *result);
+int fdisk_ask_string(struct fdisk_context *cxt,
const char *query,
char **result);
-
-extern char *fdisk_ask_string_get_result(struct fdisk_ask *ask);
-extern int fdisk_ask_string_set_result(struct fdisk_ask *ask, char *result);
-
-extern int fdisk_ask_yesno(struct fdisk_context *cxt, const char *query, int *result);
-extern uint64_t fdisk_ask_yesno_get_result(struct fdisk_ask *ask);
-extern int fdisk_ask_yesno_set_result(struct fdisk_ask *ask, uint64_t result);
-
-extern int fdisk_info(struct fdisk_context *cxt, const char *fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-extern int fdisk_colon(struct fdisk_context *cxt, const char *fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-
-extern int fdisk_warnx(struct fdisk_context *cxt, const char *fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-extern int fdisk_warn(struct fdisk_context *cxt, const char *fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-
-extern int fdisk_ask_print_get_errno(struct fdisk_ask *ask);
-extern int fdisk_ask_print_set_errno(struct fdisk_ask *ask, int errnum);
-extern const char *fdisk_ask_print_get_mesg(struct fdisk_ask *ask);
-extern int fdisk_ask_print_set_mesg(struct fdisk_ask *ask, const char *mesg);
-
-
-extern size_t fdisk_ask_menu_get_nitems(struct fdisk_ask *ask);
-extern int fdisk_ask_menu_set_default(struct fdisk_ask *ask, int dfl);
-extern int fdisk_ask_menu_get_default(struct fdisk_ask *ask);
-extern int fdisk_ask_menu_set_result(struct fdisk_ask *ask, int key);
-extern int fdisk_ask_menu_get_result(struct fdisk_ask *ask, int *key);
-extern int fdisk_ask_menu_get_item(struct fdisk_ask *ask, size_t idx, int *key,
+int fdisk_ask_yesno(struct fdisk_context *cxt,
+ const char *query,
+ int *result);
+int fdisk_ask_yesno_get_result(struct fdisk_ask *ask);
+int fdisk_ask_yesno_set_result(struct fdisk_ask *ask, int result);
+int fdisk_ask_menu_get_default(struct fdisk_ask *ask);
+int fdisk_ask_menu_set_result(struct fdisk_ask *ask, int key);
+int fdisk_ask_menu_get_result(struct fdisk_ask *ask, int *key);
+int fdisk_ask_menu_get_item(struct fdisk_ask *ask, size_t idx, int *key,
const char **name, const char **desc);
-extern int fdisk_ask_menu_add_item(struct fdisk_ask *ask, int key,
- const char *name, const char *desc);
+size_t fdisk_ask_menu_get_nitems(struct fdisk_ask *ask);
+int fdisk_ask_print_get_errno(struct fdisk_ask *ask);
+const char *fdisk_ask_print_get_mesg(struct fdisk_ask *ask);
-extern int fdisk_ask_partnum(struct fdisk_context *cxt, size_t *partnum, int wantnew);
+int fdisk_info(struct fdisk_context *cxt, const char *fmt, ...);
+int fdisk_warn(struct fdisk_context *cxt, const char *fmt, ...);
+int fdisk_warnx(struct fdisk_context *cxt, const char *fmt, ...);
/* utils.h */
extern char *fdisk_partname(const char *dev, size_t partno);