[parted-devel] what if interactive in libparted

Sebastian Parschauer sparschauer at suse.de
Wed Mar 22 13:49:44 UTC 2017


On 21.03.2017 03:25, Wang Dong wrote:
[snip]
> Thanks for your reply.
> 
> Yeah, I have read the parted.c as you pointed. The switch here is
> */opt_script_mode.
> /*But it is a static one/*, *and /libparted is dynamic lib. /
> /*/
> /*Actually, I got a scenario in which I need to distinguish the modes and
> print different messages to user. But it is disk label related. So it
> cannot
> be implemented in the front end.*/
> /*
> It is an exception, in which I would like to give a interactive question
> in interactive mode
> and a message in script mode. Well this looks like a feature in the
> front end.
> 
> I read the code about the initialization of exception handler.
> And all the exception output is redirected to the stderr.
> Is there any way to check this, may I ask this?*/

The method of choice is splitting functionality so that a certain error
code is returned by a libparted function and the front-end reacts on
that return code accordingly by throwing the exception from there.

Good examples are: _disk_warn_busy() calling ped_device_is_busy() and
_partition_warn_busy() calling ped_partition_is_busy().

ped_exception_throw() is used all over the place.

There are yes/no exceptions (PED_EXCEPTION_YES_NO), yes/no/cancel
exceptions (PED_EXCEPTION_YES_NO_CANCEL), PED_EXCEPTION_RETRY_CANCEL,
PED_EXCEPTION_IGNORE_CANCEL, ...
See: include/parted/exception.h

If your stuff is disk label related, then you likely need to change
do_mklabel().

Cheers,
Sebastian



More information about the parted-devel mailing list