*BSD News Article 20080


Return to BSD News archive

Newsgroups: comp.os.386bsd.apps
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!spool.mu.edu!umn.edu!csus.edu!netcom.com!alm
From: alm@netcom.com (Andrew Moore)
Subject: Re: 386BSD versions of sources...
Message-ID: <almCCDvz8.LAs@netcom.com>
Organization: Netcom Online Communications Services (408-241-9760 login: guest)
References: <CCB4ru.7K@sugar.NeoSoft.COM> <2179@foxim.nl> <CCDDt4.3rv@unx.sas.com>
Date: Thu, 26 Aug 1993 20:37:56 GMT
Lines: 54

In article <CCDDt4.3rv@unx.sas.com> sastdr@torpid.unx.sas.com (Thomas David Rivers) writes:
>
>  In regards to C news; I had almost no problem building it on
> 386bsd.
>
>  The only difficulties are:
>
>       1) the flock() function has been deprecated in 386bsd,
>             (C news provides a nice clone one in the Sys V specific
>              directory)

Oh, I think you mean ftime(3).  flock is not deprecated, I believe.
Here is a version of ftime for 386bsd which looks a little cleaner than the
one included with C News:

/*
 *  A reimplementation of the 'deprecated' ftime
 *  system call using modern BSD 4.3 and later calls.
 *  Note that under BSDI/386, the kernel runs on UTC
 *  time so we cannot really use the time zone info
 *  from the gettimeofday system call. Therefore we
 *  use the localtime library function which does
 *  all appropriate conversions.
 *  Erik Forsberg.
 */

#include <unistd.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/timeb.h>

int ftime(tbp)
	struct timeb *tbp;
{
	struct timeval tv;
	struct tm *tmp;

	if (tbp == NULL)
		return(-1);

	if (gettimeofday(&tv, (struct timezone *) NULL) < 0)
		return(-1);

	if ((tmp = localtime(&tv.tv_sec)) == NULL)
		return(-1);

	tbp->time = tv.tv_sec;
	tbp->millitm = tv.tv_usec / 1000;

	tbp->timezone = - tmp->tm_gmtoff / 60;
	tbp->dstflag = tmp->tm_isdst;

	return(0);
}