is struct utimbuf in the standard sys/types.h?

Guy Harris guy at auspex.uucp
Wed Aug 8 03:37:01 AEST 1990

From:  guy at auspex.uucp (Guy Harris)

>I am having some difficulty following the above.  How can a portable
>application do anything to vendor-defined fields?

That's precisely the problem.

>Isn't the application non-portable as soon as it does anything (read or write)
>to a vendor-defined field?

Yup.  Unfortunately, the application is non-functional (at least not
*correctly* functional) if it *doesn't* initialize the vendor-defined
fields of a structure that's handed to the system, unless the system can
somehow always figure out that they haven't been initialized - e.g., if
there's some flag field in the structure that *is* specified by the
standard, and you have to set some flag in that field *not* specified by
the standard in order to get the system to look at the other fields not
in the standard.

Unfortunately, in the case of "utime()", there's no such flag, so a
portable application can, at best, only avoid setting the microseconds
values of a file's accessed or modified times to some random value by
"memset"ting the entire "utimbuf" structure to zero before filling it in
and using it (or otherwise ensuring that the structure is zero before
using it, e.g. using a static structure).

Volume-Number: Volume 21, Number 20

More information about the Comp.std.unix mailing list