I assume your comment about helping to get this into shape means you
will sponsor Ryan's work. Can someone file a bug, if there isn't one
already, so I can add this to the table?
Bart Smaalders wrote:
> Matty wrote:
>> On 4/5/07, James Carlson <james.d.carlson at sun.com> wrote:
>>> Darren J Moffat writes:
>>> > Matty wrote:
>>> > > Howdy,
>>> > >
>>> > > Most Linux and BSD distributions ship with a version of dd that
>>> > > displays the status of a copy operation when a SIGUSR1 signal is
>>> > > received. For some reason /usr/bin/dd on Solaris hosts doesn't
>>> > > this capability, and I would like to add it. After reading
>>> through the
>>> > > source code for dd.c, it looks like adding this support would be as
>>> > > simple as installing a signal handler for SIGUSR1, and having it
>>> > > the function stats. I am attaching code (which I copied from the dd
>>> > > that ships with Fedora Core Linux)
>>> > What license is that dd code you copied under ?
>>> > You can't just copy code like that without considering the licenses.
>>> Indeed. That's GPLv2 code, which would require OpenSolaris dd to
>>> become GPLv2 as well.
>>> That can't be done. Either start provably from scratch or use
>>> software under a compatible license.
>> Your absolutely right, and Stephen Hahn was nice enough to point this
>> out in an email last night. Since the existing code uses signal to
>> register the SIGINT signal handler (I reckon the issues Bart mentioned
>> are minimized since it exit()'s after printing the statistics):
>> if (signal(SIGINT, SIG_IGN) != SIG_IGN)
>> (void) signal(SIGINT, term);
>> Do folks see any issue with using similar code to add a SIGUSR1 signal
>> if (signal(SIGUSR1, SIG_IGN) != SIG_IGN)
>> (void) signal(SIGUSR1, stats);
>> This would minmize the amount of code that would need to be added to
>> get stats functionality, and would address the license issues. If this
>> solution isn't acceptable, could I get a sponsor assigned to help me
>> work through a community approved solution?
>> - Ryan
> Note that SA_RESTART must be set; otherwise dd from a pipe or other slow
> device will return an error condition. I also like Casper's suggestion
> to use sprintf and write to stderr, since sprintf is now
> I can help you get this into shape.
> - Bart