Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!fletcher From: guy@auspex.uucp (Guy Harris) Newsgroups: comp.std.unix Subject: Re: is struct utimbuf in the standard sys/types.h? Message-ID: <10980@cs.utexas.edu> Date: 7 Aug 90 17:37:01 GMT References: <423@usenix.ORG> <10937@cs.utexas.edu> Sender: fletcher@cs.utexas.edu Reply-To: std-unix@uunet.uu.net Organization: Auspex Systems, Santa Clara Lines: 29 Approved: fletcher@cs.utexas.edu (Guest Moderator, Fletcher Mattox) From: guy@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