summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsef <sef@FreeBSD.org>1997-06-22 19:04:03 +0000
committersef <sef@FreeBSD.org>1997-06-22 19:04:03 +0000
commit5bb5b9c674fc85cdb7a230aa57e80daed3afe82d (patch)
treecdbc8fad8f655ea080ee5df0f274bcc2943ea59d
parent472218ee7167476755c216566067072be6ba5b4a (diff)
downloadFreeBSD-src-5bb5b9c674fc85cdb7a230aa57e80daed3afe82d.zip
FreeBSD-src-5bb5b9c674fc85cdb7a230aa57e80daed3afe82d.tar.gz
For the xenix_ftime() routine, don't use the native version of the struct --
the XENIX version is packed, and two bytes smaller than ours. So, define the structure, and have it packed. I used the __attribte__((packed)) modifier for this; I could also have surrounded the struct definition with #pragma pack(2) -- but that would have meant making ibcs2_timeb's definition outside the function. This may need to be revisited if we ever want to compile with a compiler other than gcc. (I also used 'unsigned long' instead of 'time_t' because I am writing to match an external specification -- and the definition of time_t could change.) Reviewed by: Steven Wallace
-rw-r--r--sys/i386/ibcs2/ibcs2_xenix.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/i386/ibcs2/ibcs2_xenix.c b/sys/i386/ibcs2/ibcs2_xenix.c
index d294924..a4a6fbc 100644
--- a/sys/i386/ibcs2/ibcs2_xenix.c
+++ b/sys/i386/ibcs2/ibcs2_xenix.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ibcs2_xenix.c,v 1.10 1997/03/24 11:37:49 bde Exp $
+ * $Id: ibcs2_xenix.c,v 1.11 1997/05/07 20:05:45 peter Exp $
*/
#include <sys/param.h>
@@ -119,7 +119,12 @@ xenix_ftime(p, uap, retval)
int *retval;
{
struct timeval tv;
- struct timeb itb;
+ struct ibcs2_timeb {
+ unsigned long time __attribute__((packed));
+ unsigned short millitm;
+ short timezone;
+ short dstflag;
+ } itb;
DPRINTF(("IBCS2: 'xenix ftime'\n"));
microtime(&tv);
@@ -129,7 +134,7 @@ xenix_ftime(p, uap, retval)
itb.dstflag = tz.tz_dsttime != DST_NONE;
return copyout((caddr_t)&itb, (caddr_t)SCARG(uap, tp),
- sizeof(struct timeb));
+ sizeof(struct ibcs2_timeb));
}
int
OpenPOWER on IntegriCloud