Hi Bart,

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?

Thanks.

Bonnie

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 
>>> contain
>>> > > 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 
>>> call
>>> > > 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 
>> handler?:
>>
>> 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?
>>
>> Thanks,
>> - 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
> async-signal-safe.
> 
> I can help you get this into shape.
> 
> - Bart
> 
> 
> 

Reply via email to