util-linux/disk-utils/fdisk.h
Karel Zak c1154128db fdisk: fix readline interaction with signals
The high-level readline API is crazy to use with signals. Fortunately
the library provides low-level rl_callback_* API. In this case we can
use poll() to wait for input and control all signals, etc.

This patch also a little changes fdisk behavior on CTRL+C and CTRL+D.
The signals does not kill fdisk, but forces fdisk to return to the
main menu, if already in the main menu then exit. If the disk layout
has been modified than ask "Do you really want to exit...".

Signed-off-by: Karel Zak <kzak@redhat.com>
2017-08-24 15:48:46 +02:00

56 lines
1.6 KiB
C

#ifndef UTIL_LINUX_FDISK_H
#define UTIL_LINUX_FDISK_H
/*
* fdisk.h
*/
#include "c.h"
#include <assert.h>
#include <libfdisk.h>
/* Let's temporary include private libfdisk header file. The final libfdisk.h
* maybe included when fdisk.c and libfdisk code will be completely spit.
*/
#include "blkdev.h"
#include "colors.h"
#include "debug.h"
#include "nls.h"
#include "fdisk-list.h"
#define FDISKPROG_DEBUG_INIT (1 << 1)
#define FDISKPROG_DEBUG_MENU (1 << 3)
#define FDISKPROG_DEBUG_MISC (1 << 4)
#define FDISKPROG_DEBUG_ASK (1 << 5)
#define FDISKPROG_DEBUG_ALL 0xFFFF
extern int pwipemode;
extern struct fdisk_table *original_layout;
extern int device_is_used;
extern int is_interactive;
UL_DEBUG_DECLARE_MASK(fdisk);
#define DBG(m, x) __UL_DBG(fdisk, FDISKPROG_DEBUG_, m, x)
#define ON_DBG(m, x) __UL_DBG_CALL(fdisk, FDISKPROG_DEBUG_, m, x)
extern int get_user_reply(const char *prompt,
char *buf, size_t bufsz);
extern int process_fdisk_menu(struct fdisk_context **cxt);
extern int ask_callback(struct fdisk_context *cxt, struct fdisk_ask *ask,
void *data __attribute__((__unused__)));
extern int print_partition_info(struct fdisk_context *cxt);
/* prototypes for fdisk.c */
extern void dump_firstsector(struct fdisk_context *cxt);
extern void dump_disklabel(struct fdisk_context *cxt);
extern void list_partition_types(struct fdisk_context *cxt);
extern void change_partition_type(struct fdisk_context *cxt);
extern void toggle_dos_compatibility_flag(struct fdisk_context *cxt);
extern void follow_wipe_mode(struct fdisk_context *cxt);
#endif /* UTIL_LINUX_FDISK_H */