"Joachim Schmitz" <[email protected]> writes:
>> > > Should we leave tv_usec untouched then? That was we round up on
>> > > the next (and subsequent?) round(s). Or just set to ENOTSUP in
>> > > setitimer if ovalue is !NULL?
>> >
>> > I was alluding to the latter.
>>
>> OK, will do that then.
Thanks.
>> Unless I screwed up the operator precedence?
I think you did, but not in the version we see below.
> int git_setitimer(int which, const struct itimerval *value,
> struct itimerval *ovalue)
> {
> int ret = 0;
>
> if (!value ) {
Style: space before ')'?
> errno = EFAULT;
> return -1;
EFAULT is good ;-)
The emulation in mingw.c 6072fc3 (Windows: Implement setitimer() and
sigaction()., 2007-11-13) may want to be tightened in a similar way.
> }
>
> if ( value->it_value.tv_sec < 0
Style: space after ')'?
> || value->it_value.tv_usec > 1000000
> || value->it_value.tv_usec < 0) {
> errno = EINVAL;
> return -1;
> }
>
> if ((ovalue) && (git_getitimer(which, ovalue) == -1))
> return -1; /* errno set in git_getitimer() */
As nobody passes non-NULL ovalue to setitimer(), I think we should
instead get rid of git_getitmier() implemenation, and change this to
if (ovalue) {
errno = ENOTSUP;
return -1;
}
which is how I understood what "the latter" in the paragraph I
quoted from you above meant.
> switch (which) {
> case ITIMER_REAL:
> /* If tv_usec is > 0, round up to next full sec */
> alarm(value->it_value.tv_sec + (value->it_value.tv_usec > 0));
OK.
> ret = 0; /* if alarm() fails, we get a SIGLIMIT */
> break;
> case ITIMER_VIRTUAL:
> case ITIMER_PROF:
> errno = ENOTSUP;
> ret = -1;
> break;
> default:
> errno = EINVAL;
> ret = -1;
> break;
> }
>
> return ret;
> }
Other than that, looks good.
Thanks.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html