On Mon, Jan 19, 2009 at 07:09:49PM +0530, Amit K. Arora wrote: > Problem : Commands in parted tool when passed with arguments throw a warning > ======== and asks for the same arguments again.
I haven't seen any response yet. Can someone please give their thoughts here ? This is a minor fix for the unnecessary warning being seen when some argument is passed to the command on the parted command prompt. Thanks. Regards, Amit Arora > > For example, if "mklabel" command is passed an argument in interactive > format, it throws "parted: invalid token: <label arg>" warning message > and asks for the disk type again. If no argument is passed, it works as > expected. > > Sample output: > # parted /dev/sdc > GNU Parted 1.8.8 > Using /dev/sdc > Welcome to GNU Parted! Type 'help' to view a list of commands. > (parted) mklabel msdos > Warning: The existing disk label on /dev/sdc will be destroyed and all > data on this disk will be lost. Do you want to continue? > parted: invalid token: msdos <<=== > THIS > Yes/No? Yes > New disk label type? [gpt]? msdos > (parted) > > According to the parted help and also the man page, "mklabel <label name>" > syntax is correct and should work. > > Solution: > ======== > > This behavior is a side effect of the commit > 0c2d6ba0757324c3975cbf10868f266fe6dbbbfe in git. > > Whats happening today is that when a user passes an argument to a > command (eg. "mklabel msdos"), parted throws up a warning to user > asking whether to continue or not and expects "Yes" or "No" as the > answer. At this time the argument "msdos" has not been processed yet, > and when the warning exception handling code tries to get the user input > (yes/no), it finds "msdos" instead ! And hence throws error message of > "parted: invalid token: msdos" > > This can be solved by changing the order of when the warning is thrown > and when the argument list of parted commands is tried to be read. The > attached patch reads the arguments first and then throws the warning. > Please accept this patch. Thanks! > > -- > Regards, > Amit Arora > > Signed-off-by: Amit K Arora <[email protected]> > > diff -Nuarp parted-1.8.8.org/parted/parted.c parted-1.8.8/parted/parted.c > --- parted-1.8.8.org/parted/parted.c 2009-01-19 03:20:37.000000000 -0600 > +++ parted-1.8.8/parted/parted.c 2009-01-19 03:20:37.000000000 -0600 > @@ -511,12 +511,11 @@ do_cp (PedDevice** dev) > _("Can't copy an extended partition.")); > goto error_destroy_disk; > } > - if (!_partition_warn_busy (src)) > - goto error_destroy_disk; > - > if (!command_line_get_partition (_("Destination partition number?"), > dst_disk, &dst)) > goto error_destroy_disk; > + if (!_partition_warn_busy (src)) > + goto error_destroy_disk; > if (!_partition_warn_busy (dst)) > goto error_destroy_disk; > > @@ -603,6 +602,9 @@ do_mklabel (PedDevice** dev) > if (!disk) ped_exception_catch (); > ped_exception_leave_all (); > > + if (!command_line_get_disk_type (_("New disk label type?"), &type)) > + goto error; > + > if (disk) { > if (!_disk_warn_busy (disk)) > goto error_destroy_disk; > @@ -612,9 +614,6 @@ do_mklabel (PedDevice** dev) > ped_disk_destroy (disk); > } > > - if (!command_line_get_disk_type (_("New disk label type?"), &type)) > - goto error; > - > disk = ped_disk_new_fresh (*dev, type); > if (!disk) > goto error; > @@ -646,15 +645,15 @@ do_mkfs (PedDevice** dev) > if (!disk) > goto error; > > + if (!command_line_get_partition (_("Partition number?"), disk, > &part)) > + goto error_destroy_disk; > + if (!command_line_get_fs_type (_("File system type?"), &type)) > + goto error_destroy_disk; > if (!opt_script_mode && !_partition_warn_loss()) > goto error_destroy_disk; > > - if (!command_line_get_partition (_("Partition number?"), disk, > &part)) > - goto error_destroy_disk; > if (!_partition_warn_busy (part)) > goto error_destroy_disk; > - if (!command_line_get_fs_type (_("File system type?"), &type)) > - goto error_destroy_disk; > > fs = ped_file_system_create (&part->geom, type, g_timer); > if (!fs) > @@ -1046,8 +1045,6 @@ do_move (PedDevice** dev) > > if (!command_line_get_partition (_("Partition number?"), disk, > &part)) > goto error_destroy_disk; > - if (!_partition_warn_busy (part)) > - goto error_destroy_disk; > if (part->type == PED_PARTITION_EXTENDED) { > ped_exception_throw (PED_EXCEPTION_ERROR, > PED_EXCEPTION_CANCEL, > _("Can't move an extended partition.")); > @@ -1064,6 +1061,8 @@ do_move (PedDevice** dev) > end = start + old_geom.length - 1; > if (!command_line_get_sector (_("End?"), *dev, &end, &range_end)) > goto error_close_fs; > + if (!_partition_warn_busy (part)) > + goto error_close_fs; > > /* set / test on "disk" */ > if (!ped_geometry_init (&new_geom, *dev, start, end - start + 1)) > @@ -1817,10 +1816,6 @@ do_resize (PedDevice** dev) > > if (!command_line_get_partition (_("Partition number?"), disk, > &part)) > goto error_destroy_disk; > - if (part->type != PED_PARTITION_EXTENDED) { > - if (!_partition_warn_busy (part)) > - goto error_destroy_disk; > - } > > start = part->geom.start; > end = part->geom.end; > @@ -1828,6 +1823,10 @@ do_resize (PedDevice** dev) > goto error_destroy_disk; > if (!command_line_get_sector (_("End?"), *dev, &end, &range_end)) > goto error_destroy_disk; > + if (part->type != PED_PARTITION_EXTENDED) { > + if (!_partition_warn_busy (part)) > + goto error_destroy_disk; > + } > > if (!ped_geometry_init (&new_geom, *dev, start, end - start + 1)) > goto error_destroy_disk; _______________________________________________ parted-devel mailing list [email protected] http://lists.alioth.debian.org/mailman/listinfo/parted-devel

