[Cluster-devel] [PATCH 3/3] mkfs i18n:
Carlos Maiolino
cmaiolino at redhat.com
Tue Sep 6 17:41:55 UTC 2011
Use rpmatch() function to get answer to
yes-or-no questions during mkfs confirmation
Signed-off-by: Carlos Maiolino <cmaiolino at redhat.com>
---
gfs2/mkfs/main_mkfs.c | 30 ++++++++++++++++++++++--------
1 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/gfs2/mkfs/main_mkfs.c b/gfs2/mkfs/main_mkfs.c
index 4751f19..d68cf98 100644
--- a/gfs2/mkfs/main_mkfs.c
+++ b/gfs2/mkfs/main_mkfs.c
@@ -456,8 +456,11 @@ fail:
static void are_you_sure(struct gfs2_sbd *sdp)
{
- char input[32];
+ char *line = NULL;
+ size_t len = 0;
int fd;
+ int ret = -1;
+ int res = 0;
fd = open(sdp->device_name, O_RDONLY|O_CLOEXEC);
if (fd < 0)
@@ -465,14 +468,25 @@ static void are_you_sure(struct gfs2_sbd *sdp)
printf( _("This will destroy any data on %s.\n"), sdp->device_name);
check_dev_content(sdp->device_name);
close(fd);
- printf( _("\nAre you sure you want to proceed? [y/n] "));
- if(!fgets(input, 32, stdin))
- die( _("unable to read from stdin\n"));
+
+ do{
+ printf( _("\nAre you sure you want to proceed? [y/n]"));
+ ret = getline(&line, &len, stdin);
+ res = rpmatch(line);
+
+ if (res > 0){
+ free(line);
+ return;
+ }
+ if (!res){
+ printf("\n");
+ die( _("aborted\n"));
+ }
+
+ }while(ret >= 0);
- if (input[0] != 'y')
- die( _("aborted\n"));
- else
- printf("\n");
+ if(line)
+ free(line);
}
/**
--
1.7.6
More information about the Cluster-devel
mailing list