Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Mar 2008 04:03:52 GMT
From:      Jeremy Faulkner <gldisater@gmail.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/122102: New Port devel/tango - alternate library for the D programming language
Message-ID:  <200803260403.m2Q43q9I039862@www.freebsd.org>
Resent-Message-ID: <200803260410.m2Q4A3ES025349@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         122102
>Category:       ports
>Synopsis:       New Port devel/tango - alternate library for the D programming language
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Mar 26 04:10:03 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Jeremy Faulkner
>Release:        FreeBSD 7.0-RELEASE
>Organization:
>Environment:
>Description:
New port to add the Tango library as a replacement for Phobos.

Patch for Tango 0.99.5 written by "Ralith" from tango ticket:
http://www.dsource.org/projects/tango/ticket/896
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	tango
#	tango/distinfo
#	tango/Makefile
#	tango/pkg-plist
#	tango/files
#	tango/files/patch-bsd_final.diff
#	tango/pkg-descr
#
echo c - tango
mkdir -p tango > /dev/null 2>&1
echo x - tango/distinfo
sed 's/^X//' >tango/distinfo << 'END-of-tango/distinfo'
XMD5 (tango-0.99.5-src.tar.gz) = 6d6b9fcaa25ee253b48f3871823b2ac2
XSHA256 (tango-0.99.5-src.tar.gz) = 7f2a28c43293587208d70ffa6c92e1528236a4df751de249467ccecbc2f6da56
XSIZE (tango-0.99.5-src.tar.gz) = 1810097
END-of-tango/distinfo
echo x - tango/Makefile
sed 's/^X//' >tango/Makefile << 'END-of-tango/Makefile'
X# New ports collection makefile for: tango
X# Date created:         24 March 2008
X# Whom:                 Jeremy Faulkner <gldisater@gmail.com>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	tango
XPORTVERSION=	0.99.5
XCATEGORIES=	devel
XMASTER_SITES=	http://downloads.dsource.org/projects/${PORTNAME}/${PORTVERSION}/
XDISTNAME=	${PORTNAME}-${PORTVERSION}-src
X
XMAINTAINER=	gldisater@gmail.com
XCOMMENT=	Alternate standard library for the D programing language
X
XBUILD_DEPENDS=	gdc:$(PORTSDIR)/lang/gdc \
X		bash:${PORTSDIR}/shells/bash
X
XGDCVERSION=	4.1.3
X
Xdo-build:
X	cd ${WRKSRC}/lib && ${LOCALBASE}/bin/bash build-gdc.sh
X	cd ${WRKSRC}/lib && ${LOCALBASE}/bin/bash build-tango.sh gdc
X
Xdo-install:
X	${INSTALL_PROGRAM} ${WRKSRC}/lib/libgphobos.a ${LOCALBASE}/lib/
X	${INSTALL_PROGRAM} ${WRKSRC}/lib/libgtango.a ${LOCALBASE}/lib/
X	${INSTALL_DATA} ${WRKSRC}/object.di ${LOCALBASE}/include/d/${GDCVERSION}/
X	${CP} -r ${WRKSRC}/tango/ ${LOCALBASE}/include/d/${GDCVERSION}/tango/
X	${FIND} ${LOCALBASE}/include/d/${GDCVERSION}/tango -type d -print0 | ${XARGS} -0 -J % ${CHMOD} 755 %
X	${FIND} ${LOCALBASE}/include/d/${GDCVERSION}/tango -type f -print0 | ${XARGS} -0 -J % ${CHMOD} 644 %
X
Xmaintainer-buildplist:
X	cd ${LOCALBASE} && ${FIND} include/d/${GDCVERSION}/tango -type f > ~/tmp/tango/pkg-plist
X	echo "include/d/${GDCVERSION}/object.di" >> ~/tmp/tango/pkg-list
X	echo "lib/libgphobos.a" >> ~/tmp/tango/pkg-plist
X	echo "lib/libgtango.a" >> ~/tmp/tango/pkg-plist
X	cd ${LOCALBASE} && ${FIND} include/d/${GDCVERSION}/tango -type d | ${CAT} -b | ${SORT} -nr | ${AWK} '{ print "@dirrm " $2 }' >> ~/tmp/tango/pkg-plist
X
X.include <bsd.port.mk>
END-of-tango/Makefile
echo x - tango/pkg-plist
sed 's/^X//' >tango/pkg-plist << 'END-of-tango/pkg-plist'
Xinclude/d/4.1.3/tango/core/sync/ReadWriteMutex.d
Xinclude/d/4.1.3/tango/core/sync/Semaphore.d
Xinclude/d/4.1.3/tango/core/sync/Config.d
Xinclude/d/4.1.3/tango/core/sync/Mutex.d
Xinclude/d/4.1.3/tango/core/sync/Barrier.d
Xinclude/d/4.1.3/tango/core/sync/Condition.d
Xinclude/d/4.1.3/tango/core/Variant.d
Xinclude/d/4.1.3/tango/core/BitArray.d
Xinclude/d/4.1.3/tango/core/Exception.di
Xinclude/d/4.1.3/tango/core/ByteSwap.d
Xinclude/d/4.1.3/tango/core/Atomic.d
Xinclude/d/4.1.3/tango/core/Memory.di
Xinclude/d/4.1.3/tango/core/Tuple.d
Xinclude/d/4.1.3/tango/core/Version.d
Xinclude/d/4.1.3/tango/core/Array.d
Xinclude/d/4.1.3/tango/core/Runtime.di
Xinclude/d/4.1.3/tango/core/Thread.di
Xinclude/d/4.1.3/tango/core/Traits.d
Xinclude/d/4.1.3/tango/core/Vararg.d
Xinclude/d/4.1.3/tango/core/BitManip.di
Xinclude/d/4.1.3/tango/core/Signal.d
Xinclude/d/4.1.3/tango/net/model/UriView.d
Xinclude/d/4.1.3/tango/net/ftp/Telnet.d
Xinclude/d/4.1.3/tango/net/ftp/FtpClient.d
Xinclude/d/4.1.3/tango/net/cluster/model/IMessage.d
Xinclude/d/4.1.3/tango/net/cluster/model/ICluster.d
Xinclude/d/4.1.3/tango/net/cluster/model/IChannel.d
Xinclude/d/4.1.3/tango/net/cluster/model/ICache.d
Xinclude/d/4.1.3/tango/net/cluster/model/IConsumer.d
Xinclude/d/4.1.3/tango/net/cluster/tina/util/model/IServer.d
Xinclude/d/4.1.3/tango/net/cluster/tina/util/ServerThread.d
Xinclude/d/4.1.3/tango/net/cluster/tina/util/AbstractServer.d
Xinclude/d/4.1.3/tango/net/cluster/tina/QueueServer.d
Xinclude/d/4.1.3/tango/net/cluster/tina/Cluster.d
Xinclude/d/4.1.3/tango/net/cluster/tina/ClusterServer.d
Xinclude/d/4.1.3/tango/net/cluster/tina/CacheServer.d
Xinclude/d/4.1.3/tango/net/cluster/tina/RollCall.d
Xinclude/d/4.1.3/tango/net/cluster/tina/TaskServer.d
Xinclude/d/4.1.3/tango/net/cluster/tina/TaskThread.d
Xinclude/d/4.1.3/tango/net/cluster/tina/ClusterCache.d
Xinclude/d/4.1.3/tango/net/cluster/tina/ClusterTypes.d
Xinclude/d/4.1.3/tango/net/cluster/tina/ClusterQueue.d
Xinclude/d/4.1.3/tango/net/cluster/tina/CmdParser.d
Xinclude/d/4.1.3/tango/net/cluster/tina/CacheThread.d
Xinclude/d/4.1.3/tango/net/cluster/tina/ClusterThread.d
Xinclude/d/4.1.3/tango/net/cluster/tina/QueueFile.d
Xinclude/d/4.1.3/tango/net/cluster/tina/ClusterTask.d
Xinclude/d/4.1.3/tango/net/cluster/tina/QueueThread.d
Xinclude/d/4.1.3/tango/net/cluster/tina/ProtocolWriter.d
Xinclude/d/4.1.3/tango/net/cluster/tina/ProtocolReader.d
Xinclude/d/4.1.3/tango/net/cluster/NetworkRegistry.d
Xinclude/d/4.1.3/tango/net/cluster/NetworkCall.d
Xinclude/d/4.1.3/tango/net/cluster/CacheInvalidatee.d
Xinclude/d/4.1.3/tango/net/cluster/NetworkAlert.d
Xinclude/d/4.1.3/tango/net/cluster/NetworkQueue.d
Xinclude/d/4.1.3/tango/net/cluster/QueuedCache.d
Xinclude/d/4.1.3/tango/net/cluster/NetworkCache.d
Xinclude/d/4.1.3/tango/net/cluster/NetworkTask.d
Xinclude/d/4.1.3/tango/net/cluster/NetworkClient.d
Xinclude/d/4.1.3/tango/net/cluster/NetworkMessage.d
Xinclude/d/4.1.3/tango/net/cluster/CacheInvalidator.d
Xinclude/d/4.1.3/tango/net/C/OpenSSL.d
Xinclude/d/4.1.3/tango/net/C/OpenSSL.d.orig
Xinclude/d/4.1.3/tango/net/http/model/HttpParamsView.d
Xinclude/d/4.1.3/tango/net/http/HttpStack.d
Xinclude/d/4.1.3/tango/net/http/HttpPost.d
Xinclude/d/4.1.3/tango/net/http/HttpParams.d
Xinclude/d/4.1.3/tango/net/http/HttpConst.d
Xinclude/d/4.1.3/tango/net/http/HttpGet.d
Xinclude/d/4.1.3/tango/net/http/HttpClient.d
Xinclude/d/4.1.3/tango/net/http/HttpTokens.d
Xinclude/d/4.1.3/tango/net/http/HttpCookies.d
Xinclude/d/4.1.3/tango/net/http/HttpTriplet.d
Xinclude/d/4.1.3/tango/net/http/ChunkStream.d
Xinclude/d/4.1.3/tango/net/http/HttpHeaders.d
Xinclude/d/4.1.3/tango/net/DatagramConduit.d
Xinclude/d/4.1.3/tango/net/SSLSocketConduit.d
Xinclude/d/4.1.3/tango/net/SocketListener.d
Xinclude/d/4.1.3/tango/net/ServerSocket.d
Xinclude/d/4.1.3/tango/net/Uri.d
Xinclude/d/4.1.3/tango/net/PKI.d
Xinclude/d/4.1.3/tango/net/InternetAddress.d
Xinclude/d/4.1.3/tango/net/SocketConduit.d
Xinclude/d/4.1.3/tango/net/MulticastConduit.d
Xinclude/d/4.1.3/tango/net/Socket.d
Xinclude/d/4.1.3/tango/net/Socket.d.orig
Xinclude/d/4.1.3/tango/net/SSLServerSocket.d
Xinclude/d/4.1.3/tango/group/collection.d
Xinclude/d/4.1.3/tango/group/log.d
Xinclude/d/4.1.3/tango/group/http.d
Xinclude/d/4.1.3/tango/group/file.d
Xinclude/d/4.1.3/tango/group/text.d
Xinclude/d/4.1.3/tango/group/stream.d
Xinclude/d/4.1.3/tango/group/math.d
Xinclude/d/4.1.3/tango/group/net.d
Xinclude/d/4.1.3/tango/group/digest.d
Xinclude/d/4.1.3/tango/group/time.d
Xinclude/d/4.1.3/tango/group/convert.d
Xinclude/d/4.1.3/tango/io/selector/model/ISelector.d
Xinclude/d/4.1.3/tango/io/selector/AbstractSelector.d
Xinclude/d/4.1.3/tango/io/selector/EpollSelector.d
Xinclude/d/4.1.3/tango/io/selector/Selector.d
Xinclude/d/4.1.3/tango/io/selector/PollSelector.d
Xinclude/d/4.1.3/tango/io/selector/SelectSelector.d
Xinclude/d/4.1.3/tango/io/selector/SelectorException.d
Xinclude/d/4.1.3/tango/io/compress/c/zlib.d
Xinclude/d/4.1.3/tango/io/compress/c/bzlib.d
Xinclude/d/4.1.3/tango/io/compress/BzipStream.d
Xinclude/d/4.1.3/tango/io/compress/ZlibStream.d
Xinclude/d/4.1.3/tango/io/archive/Zip.d
Xinclude/d/4.1.3/tango/io/protocol/model/IProtocol.d
Xinclude/d/4.1.3/tango/io/protocol/model/IWriter.d
Xinclude/d/4.1.3/tango/io/protocol/model/IReader.d
Xinclude/d/4.1.3/tango/io/protocol/PickleProtocol.d
Xinclude/d/4.1.3/tango/io/protocol/Allocator.d
Xinclude/d/4.1.3/tango/io/protocol/Reader.d
Xinclude/d/4.1.3/tango/io/protocol/NativeProtocol.d
Xinclude/d/4.1.3/tango/io/protocol/EndianProtocol.d
Xinclude/d/4.1.3/tango/io/protocol/Writer.d
Xinclude/d/4.1.3/tango/io/model/IBuffer.d
Xinclude/d/4.1.3/tango/io/model/IListener.d
Xinclude/d/4.1.3/tango/io/model/IConduit.d
Xinclude/d/4.1.3/tango/io/stream/SnoopStream.d
Xinclude/d/4.1.3/tango/io/stream/FormatStream.d
Xinclude/d/4.1.3/tango/io/stream/FileStream.d
Xinclude/d/4.1.3/tango/io/stream/EndianStream.d
Xinclude/d/4.1.3/tango/io/stream/DigestStream.d
Xinclude/d/4.1.3/tango/io/stream/LineStream.d
Xinclude/d/4.1.3/tango/io/stream/BufferStream.d
Xinclude/d/4.1.3/tango/io/stream/DataFileStream.d
Xinclude/d/4.1.3/tango/io/stream/DataStream.d
Xinclude/d/4.1.3/tango/io/stream/GreedyStream.d
Xinclude/d/4.1.3/tango/io/stream/TextFileStream.d
Xinclude/d/4.1.3/tango/io/stream/TypedStream.d
Xinclude/d/4.1.3/tango/io/stream/UtfStream.d
Xinclude/d/4.1.3/tango/io/stream/MapStream.d
Xinclude/d/4.1.3/tango/io/digest/MerkleDamgard.d
Xinclude/d/4.1.3/tango/io/digest/Sha256.d
Xinclude/d/4.1.3/tango/io/digest/Tiger.d
Xinclude/d/4.1.3/tango/io/digest/Md4.d
Xinclude/d/4.1.3/tango/io/digest/Sha01.d
Xinclude/d/4.1.3/tango/io/digest/Sha512.d
Xinclude/d/4.1.3/tango/io/digest/Sha0.d
Xinclude/d/4.1.3/tango/io/digest/Sha1.d
Xinclude/d/4.1.3/tango/io/digest/Crc32.d
Xinclude/d/4.1.3/tango/io/digest/Digest.d
Xinclude/d/4.1.3/tango/io/digest/Md2.d
Xinclude/d/4.1.3/tango/io/digest/Md5.d
Xinclude/d/4.1.3/tango/io/vfs/model/Vfs.d
Xinclude/d/4.1.3/tango/io/vfs/ZipFolder.d
Xinclude/d/4.1.3/tango/io/vfs/VirtualFolder.d
Xinclude/d/4.1.3/tango/io/vfs/FileFolder.d
Xinclude/d/4.1.3/tango/io/vfs/LinkedFolder.d
Xinclude/d/4.1.3/tango/io/FileScan.d
Xinclude/d/4.1.3/tango/io/FileSystem.d
Xinclude/d/4.1.3/tango/io/FileRoots.d
Xinclude/d/4.1.3/tango/io/GrowBuffer.d
Xinclude/d/4.1.3/tango/io/TempFile.d
Xinclude/d/4.1.3/tango/io/FileConst.d
Xinclude/d/4.1.3/tango/io/Console.d
Xinclude/d/4.1.3/tango/io/UnicodeFile.d
Xinclude/d/4.1.3/tango/io/Buffer.d
Xinclude/d/4.1.3/tango/io/Print.d
Xinclude/d/4.1.3/tango/io/FileConduit.d
Xinclude/d/4.1.3/tango/io/DeviceConduit.d
Xinclude/d/4.1.3/tango/io/Conduit.d
Xinclude/d/4.1.3/tango/io/FilePath.d
Xinclude/d/4.1.3/tango/io/File.d
Xinclude/d/4.1.3/tango/io/FilePath.d.orig
Xinclude/d/4.1.3/tango/io/Stdout.d
Xinclude/d/4.1.3/tango/io/MappedBuffer.d
Xinclude/d/4.1.3/tango/math/IEEE.d
Xinclude/d/4.1.3/tango/math/Probability.d
Xinclude/d/4.1.3/tango/math/Random.d
Xinclude/d/4.1.3/tango/math/Bessel.d
Xinclude/d/4.1.3/tango/math/IEEE.d.orig
Xinclude/d/4.1.3/tango/math/Elliptic.d
Xinclude/d/4.1.3/tango/math/Math.d
Xinclude/d/4.1.3/tango/math/GammaFunction.d
Xinclude/d/4.1.3/tango/math/ErrorFunction.d
Xinclude/d/4.1.3/tango/time/chrono/Gregorian.d
Xinclude/d/4.1.3/tango/time/chrono/Hebrew.d
Xinclude/d/4.1.3/tango/time/chrono/Taiwan.d
Xinclude/d/4.1.3/tango/time/chrono/Korean.d
Xinclude/d/4.1.3/tango/time/chrono/Calendar.d
Xinclude/d/4.1.3/tango/time/chrono/Hijri.d
Xinclude/d/4.1.3/tango/time/chrono/Japanese.d
Xinclude/d/4.1.3/tango/time/chrono/ThaiBuddhist.d
Xinclude/d/4.1.3/tango/time/chrono/GregorianBased.d
Xinclude/d/4.1.3/tango/time/WallClock.d
Xinclude/d/4.1.3/tango/time/StopWatch.d
Xinclude/d/4.1.3/tango/time/Time.d
Xinclude/d/4.1.3/tango/time/Clock.d
Xinclude/d/4.1.3/tango/time/ISO8601.d
Xinclude/d/4.1.3/tango/sys/linux/linux.d
Xinclude/d/4.1.3/tango/sys/linux/epoll.d
Xinclude/d/4.1.3/tango/sys/linux/socket.d
Xinclude/d/4.1.3/tango/sys/freebsd/freebsd.d
Xinclude/d/4.1.3/tango/sys/darwin/darwin.d
Xinclude/d/4.1.3/tango/sys/win32/CodePage.d
Xinclude/d/4.1.3/tango/sys/win32/Types.di
Xinclude/d/4.1.3/tango/sys/win32/UserGdi.di
Xinclude/d/4.1.3/tango/sys/win32/Macros.di
Xinclude/d/4.1.3/tango/sys/win32/IUnknown.d
Xinclude/d/4.1.3/tango/sys/win32/Process.di
Xinclude/d/4.1.3/tango/sys/Pipe.d
Xinclude/d/4.1.3/tango/sys/Environment.d
Xinclude/d/4.1.3/tango/sys/SharedLib.d
Xinclude/d/4.1.3/tango/sys/Common.d
Xinclude/d/4.1.3/tango/sys/Process.d
Xinclude/d/4.1.3/tango/text/convert/Float.d.orig
Xinclude/d/4.1.3/tango/text/convert/TimeStamp.d
Xinclude/d/4.1.3/tango/text/convert/Format.d
Xinclude/d/4.1.3/tango/text/convert/Float.d
Xinclude/d/4.1.3/tango/text/convert/Integer.d
Xinclude/d/4.1.3/tango/text/convert/Sprint.d
Xinclude/d/4.1.3/tango/text/convert/Utf.d
Xinclude/d/4.1.3/tango/text/convert/Layout.d
Xinclude/d/4.1.3/tango/text/convert/UnicodeBom.d
Xinclude/d/4.1.3/tango/text/xml/SaxParser.d
Xinclude/d/4.1.3/tango/text/xml/XmlPrinter.d
Xinclude/d/4.1.3/tango/text/xml/PullParser.d
Xinclude/d/4.1.3/tango/text/xml/Document.d
Xinclude/d/4.1.3/tango/text/locale/Convert.d
Xinclude/d/4.1.3/tango/text/locale/Data.d
Xinclude/d/4.1.3/tango/text/locale/Collation.d
Xinclude/d/4.1.3/tango/text/locale/Win32.d
Xinclude/d/4.1.3/tango/text/locale/Posix.d
Xinclude/d/4.1.3/tango/text/locale/Locale.d
Xinclude/d/4.1.3/tango/text/locale/Parse.d
Xinclude/d/4.1.3/tango/text/locale/Core.d
Xinclude/d/4.1.3/tango/text/stream/RegexIterator.d
Xinclude/d/4.1.3/tango/text/stream/QuoteIterator.d
Xinclude/d/4.1.3/tango/text/stream/StreamIterator.d
Xinclude/d/4.1.3/tango/text/stream/LineIterator.d
Xinclude/d/4.1.3/tango/text/stream/SimpleIterator.d
Xinclude/d/4.1.3/tango/text/Ascii.d
Xinclude/d/4.1.3/tango/text/Unicode.d
Xinclude/d/4.1.3/tango/text/Util.d
Xinclude/d/4.1.3/tango/text/Text.d
Xinclude/d/4.1.3/tango/text/UnicodeData.d
Xinclude/d/4.1.3/tango/text/Regex.d
Xinclude/d/4.1.3/tango/text/Properties.d
Xinclude/d/4.1.3/tango/stdc/posix/net/if_.d
Xinclude/d/4.1.3/tango/stdc/posix/arpa/inet.d
Xinclude/d/4.1.3/tango/stdc/posix/netinet/tcp.d
Xinclude/d/4.1.3/tango/stdc/posix/netinet/in_.d
Xinclude/d/4.1.3/tango/stdc/posix/sys/mman.d
Xinclude/d/4.1.3/tango/stdc/posix/sys/types.d
Xinclude/d/4.1.3/tango/stdc/posix/sys/select.d
Xinclude/d/4.1.3/tango/stdc/posix/sys/socket.d
Xinclude/d/4.1.3/tango/stdc/posix/sys/types.d.orig
Xinclude/d/4.1.3/tango/stdc/posix/sys/mman.d.orig
Xinclude/d/4.1.3/tango/stdc/posix/sys/uio.d
Xinclude/d/4.1.3/tango/stdc/posix/sys/stat.d.orig
Xinclude/d/4.1.3/tango/stdc/posix/sys/time.d
Xinclude/d/4.1.3/tango/stdc/posix/sys/ipc.d
Xinclude/d/4.1.3/tango/stdc/posix/sys/shm.d
Xinclude/d/4.1.3/tango/stdc/posix/sys/wait.d
Xinclude/d/4.1.3/tango/stdc/posix/sys/stat.d
Xinclude/d/4.1.3/tango/stdc/posix/poll.d
Xinclude/d/4.1.3/tango/stdc/posix/time.d
Xinclude/d/4.1.3/tango/stdc/posix/stdlib.d.orig
Xinclude/d/4.1.3/tango/stdc/posix/pwd.d
Xinclude/d/4.1.3/tango/stdc/posix/fcntl.d
Xinclude/d/4.1.3/tango/stdc/posix/signal.d.orig
Xinclude/d/4.1.3/tango/stdc/posix/unistd.d
Xinclude/d/4.1.3/tango/stdc/posix/termios.d
Xinclude/d/4.1.3/tango/stdc/posix/dirent.d
Xinclude/d/4.1.3/tango/stdc/posix/inttypes.d
Xinclude/d/4.1.3/tango/stdc/posix/dlfcn.d
Xinclude/d/4.1.3/tango/stdc/posix/config.d
Xinclude/d/4.1.3/tango/stdc/posix/pthread.d.orig
Xinclude/d/4.1.3/tango/stdc/posix/utime.d
Xinclude/d/4.1.3/tango/stdc/posix/time.d.orig
Xinclude/d/4.1.3/tango/stdc/posix/stdlib.d
Xinclude/d/4.1.3/tango/stdc/posix/semaphore.d.orig
Xinclude/d/4.1.3/tango/stdc/posix/ucontext.d
Xinclude/d/4.1.3/tango/stdc/posix/setjmp.d
Xinclude/d/4.1.3/tango/stdc/posix/semaphore.d
Xinclude/d/4.1.3/tango/stdc/posix/stdio.d
Xinclude/d/4.1.3/tango/stdc/posix/signal.d
Xinclude/d/4.1.3/tango/stdc/posix/pthread.d
Xinclude/d/4.1.3/tango/stdc/posix/sched.d
Xinclude/d/4.1.3/tango/stdc/limits.d
Xinclude/d/4.1.3/tango/stdc/fenv.d.orig
Xinclude/d/4.1.3/tango/stdc/ctype.d
Xinclude/d/4.1.3/tango/stdc/math.d.orig
Xinclude/d/4.1.3/tango/stdc/time.d
Xinclude/d/4.1.3/tango/stdc/stdint.d
Xinclude/d/4.1.3/tango/stdc/stdarg.d
Xinclude/d/4.1.3/tango/stdc/stdio.d
Xinclude/d/4.1.3/tango/stdc/string.d
Xinclude/d/4.1.3/tango/stdc/signal.d
Xinclude/d/4.1.3/tango/stdc/complex.d
Xinclude/d/4.1.3/tango/stdc/errno.d
Xinclude/d/4.1.3/tango/stdc/locale.d
Xinclude/d/4.1.3/tango/stdc/wctype.d
Xinclude/d/4.1.3/tango/stdc/inttypes.d
Xinclude/d/4.1.3/tango/stdc/time.d.orig
Xinclude/d/4.1.3/tango/stdc/stringz.d
Xinclude/d/4.1.3/tango/stdc/stddef.d
Xinclude/d/4.1.3/tango/stdc/tgmath.d
Xinclude/d/4.1.3/tango/stdc/fenv.d
Xinclude/d/4.1.3/tango/stdc/config.d
Xinclude/d/4.1.3/tango/stdc/math.d
Xinclude/d/4.1.3/tango/stdc/stdlib.d
Xinclude/d/4.1.3/tango/util/log/model/IHierarchy.d
Xinclude/d/4.1.3/tango/util/log/model/ILevel.d
Xinclude/d/4.1.3/tango/util/log/NullAppender.d
Xinclude/d/4.1.3/tango/util/log/Hierarchy.d
Xinclude/d/4.1.3/tango/util/log/Trace.d
Xinclude/d/4.1.3/tango/util/log/ConsoleAppender.d
Xinclude/d/4.1.3/tango/util/log/Event.d
Xinclude/d/4.1.3/tango/util/log/Configurator.d
Xinclude/d/4.1.3/tango/util/log/PropertyConfigurator.d
Xinclude/d/4.1.3/tango/util/log/EventLayout.d
Xinclude/d/4.1.3/tango/util/log/Logger.d
Xinclude/d/4.1.3/tango/util/log/RollingFileAppender.d
Xinclude/d/4.1.3/tango/util/log/Log.d
Xinclude/d/4.1.3/tango/util/log/SocketAppender.d
Xinclude/d/4.1.3/tango/util/log/Log4Layout.d
Xinclude/d/4.1.3/tango/util/log/MailAppender.d
Xinclude/d/4.1.3/tango/util/log/DateLayout.d
Xinclude/d/4.1.3/tango/util/log/FileAppender.d
Xinclude/d/4.1.3/tango/util/log/Appender.d
Xinclude/d/4.1.3/tango/util/collection/impl/BagCollection.d
Xinclude/d/4.1.3/tango/util/collection/impl/SeqCollection.d
Xinclude/d/4.1.3/tango/util/collection/impl/Cell.d
Xinclude/d/4.1.3/tango/util/collection/impl/Collection.d
Xinclude/d/4.1.3/tango/util/collection/impl/LLPair.d
Xinclude/d/4.1.3/tango/util/collection/impl/RBPair.d
Xinclude/d/4.1.3/tango/util/collection/impl/SetCollection.d
Xinclude/d/4.1.3/tango/util/collection/impl/MapCollection.d
Xinclude/d/4.1.3/tango/util/collection/impl/LLCell.d
Xinclude/d/4.1.3/tango/util/collection/impl/RBCell.d
Xinclude/d/4.1.3/tango/util/collection/impl/CLCell.d
Xinclude/d/4.1.3/tango/util/collection/impl/AbstractIterator.d
Xinclude/d/4.1.3/tango/util/collection/impl/DefaultComparator.d
Xinclude/d/4.1.3/tango/util/collection/iterator/InterleavingIterator.d
Xinclude/d/4.1.3/tango/util/collection/iterator/FilteringIterator.d
Xinclude/d/4.1.3/tango/util/collection/iterator/ArrayIterator.d
Xinclude/d/4.1.3/tango/util/collection/model/SortedValues.d
Xinclude/d/4.1.3/tango/util/collection/model/Sortable.d
Xinclude/d/4.1.3/tango/util/collection/model/Iterator.d
Xinclude/d/4.1.3/tango/util/collection/model/Comparator.d
Xinclude/d/4.1.3/tango/util/collection/model/SeqView.d
Xinclude/d/4.1.3/tango/util/collection/model/SortedKeys.d
Xinclude/d/4.1.3/tango/util/collection/model/BagView.d
Xinclude/d/4.1.3/tango/util/collection/model/Bag.d
Xinclude/d/4.1.3/tango/util/collection/model/Dispenser.d
Xinclude/d/4.1.3/tango/util/collection/model/Set.d
Xinclude/d/4.1.3/tango/util/collection/model/Map.d
Xinclude/d/4.1.3/tango/util/collection/model/SetView.d
Xinclude/d/4.1.3/tango/util/collection/model/Seq.d
Xinclude/d/4.1.3/tango/util/collection/model/MapView.d
Xinclude/d/4.1.3/tango/util/collection/model/HashParams.d
Xinclude/d/4.1.3/tango/util/collection/model/View.d
Xinclude/d/4.1.3/tango/util/collection/model/GuardIterator.d
Xinclude/d/4.1.3/tango/util/collection/TreeMap.d
Xinclude/d/4.1.3/tango/util/collection/HashSet.d
Xinclude/d/4.1.3/tango/util/collection/CircularSeq.d
Xinclude/d/4.1.3/tango/util/collection/HashMap.d
Xinclude/d/4.1.3/tango/util/collection/ArrayBag.d
Xinclude/d/4.1.3/tango/util/collection/ArraySeq.d
Xinclude/d/4.1.3/tango/util/collection/LinkMap.d
Xinclude/d/4.1.3/tango/util/collection/LinkSeq.d
Xinclude/d/4.1.3/tango/util/collection/TreeBag.d
Xinclude/d/4.1.3/tango/util/Convert.d
Xinclude/d/4.1.3/tango/util/PathUtil.d
Xinclude/d/4.1.3/tango/util/ArgParser.d
X@dirrm include/d/4.1.3/tango/util/collection/model
X@dirrm include/d/4.1.3/tango/util/collection/iterator
X@dirrm include/d/4.1.3/tango/util/collection/impl
X@dirrm include/d/4.1.3/tango/util/collection
X@dirrm include/d/4.1.3/tango/util/log/model
X@dirrm include/d/4.1.3/tango/util/log
X@dirrm include/d/4.1.3/tango/util
X@dirrm include/d/4.1.3/tango/stdc/posix/sys
X@dirrm include/d/4.1.3/tango/stdc/posix/netinet
X@dirrm include/d/4.1.3/tango/stdc/posix/arpa
X@dirrm include/d/4.1.3/tango/stdc/posix/net
X@dirrm include/d/4.1.3/tango/stdc/posix
X@dirrm include/d/4.1.3/tango/stdc
X@dirrm include/d/4.1.3/tango/text/stream
X@dirrm include/d/4.1.3/tango/text/locale
X@dirrm include/d/4.1.3/tango/text/xml
X@dirrm include/d/4.1.3/tango/text/convert
X@dirrm include/d/4.1.3/tango/text
X@dirrm include/d/4.1.3/tango/sys/win32
X@dirrm include/d/4.1.3/tango/sys/darwin
X@dirrm include/d/4.1.3/tango/sys/freebsd
X@dirrm include/d/4.1.3/tango/sys/linux
X@dirrm include/d/4.1.3/tango/sys
X@dirrm include/d/4.1.3/tango/time/chrono
X@dirrm include/d/4.1.3/tango/time
X@dirrm include/d/4.1.3/tango/math
X@dirrm include/d/4.1.3/tango/io/vfs/model
X@dirrm include/d/4.1.3/tango/io/vfs
X@dirrm include/d/4.1.3/tango/io/digest
X@dirrm include/d/4.1.3/tango/io/stream
X@dirrm include/d/4.1.3/tango/io/model
X@dirrm include/d/4.1.3/tango/io/protocol/model
X@dirrm include/d/4.1.3/tango/io/protocol
X@dirrm include/d/4.1.3/tango/io/archive
X@dirrm include/d/4.1.3/tango/io/compress/c
X@dirrm include/d/4.1.3/tango/io/compress
X@dirrm include/d/4.1.3/tango/io/selector/model
X@dirrm include/d/4.1.3/tango/io/selector
X@dirrm include/d/4.1.3/tango/io
X@dirrm include/d/4.1.3/tango/group
X@dirrm include/d/4.1.3/tango/net/http/model
X@dirrm include/d/4.1.3/tango/net/http
X@dirrm include/d/4.1.3/tango/net/C
X@dirrm include/d/4.1.3/tango/net/cluster/tina/util/model
X@dirrm include/d/4.1.3/tango/net/cluster/tina/util
X@dirrm include/d/4.1.3/tango/net/cluster/tina
X@dirrm include/d/4.1.3/tango/net/cluster/model
X@dirrm include/d/4.1.3/tango/net/cluster
X@dirrm include/d/4.1.3/tango/net/ftp
X@dirrm include/d/4.1.3/tango/net/model
X@dirrm include/d/4.1.3/tango/net
X@dirrm include/d/4.1.3/tango/core/sync
X@dirrm include/d/4.1.3/tango/core
X@dirrm include/d/4.1.3/tango
END-of-tango/pkg-plist
echo c - tango/files
mkdir -p tango/files > /dev/null 2>&1
echo x - tango/files/patch-bsd_final.diff
sed 's/^X//' >tango/files/patch-bsd_final.diff << 'END-of-tango/files/patch-bsd_final.diff'
XIndex: lib/common/tango/core/Thread.d
X===================================================================
X--- lib/common/tango/core/Thread.d	(revision 3329)
X+++ lib/common/tango/core/Thread.d	(working copy)
X@@ -7,7 +7,6 @@
X  */
X module tango.core.Thread;
X 
X-
X // this should be true for most architectures
X version = StackGrowsDown;
X 
X@@ -20,7 +19,6 @@
X {
X     import tango.core.Exception;
X 
X-
X     //
X     // exposed by compiler runtime
X     //
X@@ -181,8 +179,20 @@
X             //       implementation actually requires default initialization
X             //       then pthread_cleanup should be restructured to maintain
X             //       the current lack of a link dependency.
X-            pthread_cleanup cleanup = void;
X-            cleanup.push( &thread_cleanupHandler, cast(void*) obj );
X+            version(linux)
X+			{
X+				pthread_cleanup cleanup = void;
X+				cleanup.push( &thread_cleanupHandler, cast(void*) obj );
X+			}
X+			else version(darwin)
X+			{
X+				pthread_cleanup cleanup = void;
X+				cleanup.push( &thread_cleanupHandler, cast(void*) obj );
X+			}
X+			else
X+			{
X+				pthread_cleanup_push(&thread_cleanupHandler, cast(void*) obj);
X+			}
X 
X             // NOTE: For some reason this does not always work for threads.
X             //obj.m_main.bstack = getStackBottom();
X@@ -2802,11 +2812,11 @@
X             status = pthread_key_create( &sm_this, null );
X             assert( status == 0 );
X 
X-          static if( is( typeof( ucontext_t ) ) )
X-          {
X-            status = getcontext( &sm_utxt );
X-            assert( status == 0 );
X-          }
X+			static if( is( typeof( ucontext_t ) ) )
X+			{
X+				status = getcontext( &sm_utxt );
X+				assert( status == 0 );
X+			}
X         }
X     }
X 
XIndex: lib/build-gdc.sh
X===================================================================
X--- lib/build-gdc.sh	(revision 3329)
X+++ lib/build-gdc.sh	(working copy)
X@@ -54,9 +54,9 @@
X 
X OLDHOME=$HOME
X export HOME=`pwd`
X-$MAKE clean -fgdc-posix.mak DC="$GDMD" || exit 1
X-$MAKE lib doc install -fgdc-posix.mak DC="$GDMD" ADD_CFLAGS="$ADD_CFLAGS" || exit 1
X-$MAKE clean -fgdc-posix.mak DC="$GDMD" || exit 1
X-chmod 644 ../tango/core/*.di || exit 1
X+$MAKE clean -fgdc-posix.mak DC="$GDMD" || (echo "Build failed!" && exit 1)
X+$MAKE lib doc install -fgdc-posix.mak DC="$GDMD" ADD_CFLAGS="$ADD_CFLAGS" || (echo "Build failed!" && exit 1)
X+$MAKE clean -fgdc-posix.mak DC="$GDMD" || (echo "Build failed!" && exit 1)
X+chmod 644 ../tango/core/*.di || (echo "Build failed! Missing crucial .di files." && exit 1)
X 
X export HOME=$OLDHOME
XIndex: tango/text/convert/Float.d
X===================================================================
X--- tango/text/convert/Float.d	(revision 3329)
X+++ tango/text/convert/Float.d	(working copy)
X@@ -27,10 +27,10 @@
X 
X private import Integer = tango.text.convert.Integer;
X 
X+private import tango.stdc.math;
X+
X private alias real NumType;
X 
X-private extern (C) NumType log10l(NumType x);
X-
X /******************************************************************************
X 
X         Constants
XIndex: tango/net/C/OpenSSL.d
X===================================================================
X--- tango/net/C/OpenSSL.d	(revision 3329)
X+++ tango/net/C/OpenSSL.d	(working copy)
X@@ -728,6 +728,11 @@
X 	{
X 		char[][] loadPath = [ "/usr/lib/libssl.dylib", "libssl.dylib" ];
X 	}
X+	version (freebsd)
X+	{
X+		// TODO: Support other ssl libraries(?)
X+		char[][] loadPath = [ "libgnutls-openssl.so" ];
X+	}
X     if ((ssllib = loadLib(loadPath)) !is null)
X     {
X 
XIndex: tango/net/Socket.d
X===================================================================
X--- tango/net/Socket.d	(revision 3329)
X+++ tango/net/Socket.d	(working copy)
X@@ -68,7 +68,6 @@
X 
X private import  tango.core.Exception;
X 
X-
X /*******************************************************************************
X 
X 
X@@ -195,7 +194,19 @@
X                 int fcntl(socket_t s, int f, ...);
X                 uint inet_addr(char* cp);
X                 int bind(socket_t s, sockaddr* name, int namelen);
X-                int connect(socket_t s, sockaddr* name, int namelen);
X+                version(linux)
X+				{
X+					int connect(socket_t s, sockaddr* name, int namelen);
X+				}
X+				else version(darwin)
X+				{
X+					int connect(socket_t s, sockaddr* name, int namelen);
X+				}
X+				else version(freebsd)
X+				{
X+					int connect(socket_t s, sockaddr* name, uint namelen);
X+				}
X+				
X                 int listen(socket_t s, int backlog);
X                 socket_t accept(socket_t s, sockaddr* addr, int* addrlen);
X                 int close(socket_t s);
X@@ -248,8 +259,9 @@
X 
X struct sockaddr
X {
X-        ushort sa_family;
X-        char[14] sa_data = [0];
X+	version(freebsd) ubyte sa_len = this.sizeof;
X+	ushort sa_family;
X+	char[14] sa_data;
X }
X 
X 
X@@ -506,6 +518,62 @@
X                 UDP =     17, // appears to be correct
X         }
X }
X+else version (freebsd)
X+{
X+        enum SocketOption: int
X+        {
X+                SO_DEBUG        = 0x0001,		/* turn on debugging info recording */
X+                SO_BROADCAST    = 0x0020,		/* permit sending of broadcast msgs */
X+                SO_REUSEADDR    = 0x0004,		/* allow local address reuse */
X+                SO_LINGER       = 0x0080,		/* linger on close if data present */
X+				//SO_DONTLINGER   = ~(SO_LINGER),
X+                SO_OOBINLINE    = 0x0100,		/* leave received OOB data in line */
X+                SO_ACCEPTCONN   = 0x0002,		/* socket has had listen() */
X+                SO_KEEPALIVE    = 0x0008,		/* keep connections alive */
X+                SO_DONTROUTE    = 0x0010,		/* just use interface addresses */
X+                SO_TYPE         = 0x1008,               /* get socket type */
X+
X+                /*
X+                 * Additional options, not kept in so_options.
X+                 */
X+                SO_SNDBUF       = 0x1001,		/* send buffer size */
X+                SO_RCVBUF       = 0x1002,		/* receive buffer size */
X+                SO_ERROR        = 0x1007,		/* get error status and clear */
X+
X+                // OptionLevel.IP settings
X+                IP_MULTICAST_TTL = 10,
X+                IP_MULTICAST_LOOP = 11,
X+                IP_ADD_MEMBERSHIP = 12,
X+                IP_DROP_MEMBERSHIP = 13,
X+
X+                // OptionLevel.TCP settings
X+                TCP_NODELAY = 0x01,
X+        }
X+
X+
X+        union linger
X+        {
X+                struct {
X+                       int l_onoff;             // option on/off
X+                       int l_linger;            // linger time
X+                       };
X+                int[2]          array;          // combined
X+        }
X+
X+        /***************************************************************
X+
X+                Question: are these correct for FreeBSD?
X+
X+        ***************************************************************/
X+
X+        enum SocketOptionLevel
X+        {
X+                SOCKET =  0xffff,
X+                IP =      0,  // appears to be correct
X+                TCP =     6,  // appears to be correct
X+                UDP =     17, // appears to be correct
X+        }
X+}
X else version (linux)
X {
X         /***************************************************************
X@@ -662,6 +730,18 @@
X                         //INET6 =      10,
X                 }
X         }
X+        else version (freebsd)
X+        {
X+                enum AddressFamily: ushort
X+                {
X+                        UNSPEC =     0,
X+                        UNIX =       1,
X+                        INET =       2,
X+                        IPX =        23,
X+                        APPLETALK =  16,
X+						INET6 =      28,
X+                }
X+        }
X         else version (linux)
X         {
X                 enum AddressFamily: int
X@@ -851,9 +931,9 @@
X 
X         Socket connect(Address to)
X         {
X-                if(SOCKET_ERROR == .connect (sock, to.name(), to.nameLen()))
X-                {
X-                        if(!blocking)
X+			if(SOCKET_ERROR == .connect (sock, to.name(), to.nameLen()))
X+			{
X+					if(!blocking)
X                         {
X                                 version(Win32)
X                                 {
X@@ -1006,7 +1086,8 @@
X 
X                 auto option = (onOff) ? SocketOption.IP_ADD_MEMBERSHIP : SocketOption.IP_DROP_MEMBERSHIP;
X                 mrq.imr_interface = 0;
X-                mrq.imr_multiaddr = address.sin.sin_addr;
X+                version(freebsd) mrq.imr_multiaddr = address.sin.sin_addr.s_addr;
X+				else mrq.imr_multiaddr = address.sin.sin_addr;
X 
X                 if (.setsockopt(sock, SocketOptionLevel.IP, option, &mrq, mrq.sizeof) == SOCKET_ERROR)
X                     exception ("Unable to perform multicast join: ");
X@@ -1446,7 +1527,7 @@
X 
X         int nameLen()
X         {
X-                return sa.sizeof;
X+			return sa.sizeof;
X         }
X 
X 
X@@ -1666,14 +1747,33 @@
X 
X         ***********************************************************************/
X 
X-        struct sockaddr_in
X-        {
X-                ushort sinfamily = AddressFamily.INET;
X-                ushort sin_port;
X-                uint sin_addr; //in_addr
X-                char[8] sin_zero = [0];
X-        }
X+		version(freebsd)
X+		{
X+			struct in_addr
X+			{
X+				uint s_addr;
X+			}
X 
X+			struct sockaddr_in
X+			{
X+				ubyte sin_len = this.sizeof;
X+				ubyte sin_family = AddressFamily.INET;
X+				ushort sin_port;
X+				in_addr sin_addr;
X+				char[8] sin_zero;
X+			}
X+		}
X+		else
X+		{
X+			struct sockaddr_in
X+			{
X+				ushort sin_family = AddressFamily.INET;
X+				ushort sin_port;
X+				uint sin_addr; //in_addr
X+				char[8] sin_zero;
X+			}
X+		}
X+
X         sockaddr_in sin;
X 
X 
X@@ -1695,7 +1795,7 @@
X 
X         int nameLen()
X         {
X-                return sin.sizeof;
X+			return sin.sizeof;
X         }
X 
X 
X@@ -1745,7 +1845,8 @@
X 
X         uint addr()
X         {
X-                return ntohl(sin.sin_addr);
X+			version(freebsd) return ntohl(sin.sin_addr.s_addr);
X+			else return ntohl(sin.sin_addr);
X         }
X 
X 
X@@ -1766,7 +1867,8 @@
X                                 exception ("Unable to resolve '"~addr~"': ");
X                         uiaddr = ih.addrList[0];
X                 }
X-                sin.sin_addr = htonl(uiaddr);
X+                version(freebsd) sin.sin_addr.s_addr = htonl(uiaddr);
X+				else sin.sin_addr = htonl(uiaddr);
X                 sin.sin_port = htons(cast(ushort) port);
X         }
X 
X@@ -1778,8 +1880,9 @@
X 
X         this(uint addr, ushort port)
X         {
X-                sin.sin_addr = htonl(addr);
X-                sin.sin_port = htons(port);
X+			version(freebsd) sin.sin_addr.s_addr = htonl(addr);
X+			else sin.sin_addr = htonl(addr);
X+			sin.sin_port = htons(port);
X         }
X 
X 
X@@ -1790,8 +1893,9 @@
X 
X         this(ushort port)
X         {
X-                sin.sin_addr = 0; //any, "0.0.0.0"
X-                sin.sin_port = htons(port);
X+			version(freebsd) sin.sin_addr.s_addr = 0; //any, "0.0.0.0"
X+			else sin.sin_addr = 0; //any, "0.0.0.0"
X+			sin.sin_port = htons(port);
X         }
X 
X         /***********************************************************************
X@@ -1801,7 +1905,8 @@
X 
X         synchronized char[] toAddrString()
X         {
X-                return .toString(inet_ntoa(sin.sin_addr)).dup;
X+			version(freebsd) return .toString(inet_ntoa(sin.sin_addr.s_addr)).dup;
X+			else return .toString(inet_ntoa(sin.sin_addr)).dup;
X         }
X 
X 
XIndex: tango/io/FilePath.d
X===================================================================
X--- tango/io/FilePath.d	(revision 3329)
X+++ tango/io/FilePath.d	(working copy)
X@@ -1648,9 +1648,25 @@
X 
X                         getInfo (name, stats);
X 
X-                        time.modified = convert (cast(timeval*) &stats.st_mtime);
X-                        time.accessed = convert (cast(timeval*) &stats.st_atime);
X-                        time.created  = convert (cast(timeval*) &stats.st_ctime);
X+						version(linux)
X+						{
X+							time.modified = convert (cast(timeval*) &stats.st_mtime);
X+							time.accessed = convert (cast(timeval*) &stats.st_atime);
X+							time.created  = convert (cast(timeval*) &stats.st_ctime);
X+						}
X+						version(darwin)
X+						{
X+							time.modified = convert (cast(timeval*) &stats.st_mtime);
X+							time.accessed = convert (cast(timeval*) &stats.st_atime);
X+							time.created  = convert (cast(timeval*) &stats.st_ctime);
X+						}
X+						else version(freebsd)
X+						{
X+							time.modified = convert (cast(timeval*) &stats.st_mtimespec.tv_sec);
X+							time.accessed = convert (cast(timeval*) &stats.st_atimespec.tv_sec);
X+							time.created  = convert (cast(timeval*) &stats.st_ctimespec.tv_sec);
X+						}
X+						
X                         return time;
X                 }
X 
X@@ -1701,8 +1717,21 @@
X                             exception (source);
X 
X                         utimbuf utim;
X-                        utim.actime = stats.st_atime;
X-                        utim.modtime = stats.st_mtime;
X+						version(linux)
X+						{
X+							utim.actime = stats.st_atime;
X+							utim.modtime = stats.st_mtime;
X+						}
X+						version(darwin)
X+						{
X+							utim.actime = stats.st_atime;
X+							utim.modtime = stats.st_mtime;
X+						}
X+						version(freebsd)
X+						{
X+							utim.actime = stats.st_atimespec.tv_sec;
X+							utim.modtime = stats.st_mtimespec.tv_sec;
X+						}
X                         if (utime (dest.ptr, &utim) is -1)
X                             exception (dest);
X                 }
XIndex: tango/math/IEEE.d
X===================================================================
X--- tango/math/IEEE.d	(revision 3329)
X+++ tango/math/IEEE.d	(working copy)
X@@ -552,7 +552,7 @@
X             }
X         } else {
X             exp = (ex - F.EXPBIAS) >>> 4;
X-            ve[F.EXPPOS_SHORT] = (0x8000 & ve[F.EXPPOS_SHORT]) | 0x3FE0;
X+            vu[F.EXPPOS_SHORT] = (0x8000 & vu[F.EXPPOS_SHORT]) | 0x3FE0;
X         }
X     } else if (!(*vl & 0x7FFF_FFFF_FFFF_FFFF)) {
X         // value is +-0.0
X@@ -560,7 +560,7 @@
X     } else {
X         // denormal
X         ushort sgn;
X-        sgn = (0x8000 & ve[F.EXPPOS_SHORT])| 0x3FE0;
X+        sgn = (0x8000 & vu[F.EXPPOS_SHORT])| 0x3FE0;
X         *vl &= 0x7FFF_FFFF_FFFF_FFFF;
X 
X         int i = -0x3FD+11;
X@@ -569,7 +569,7 @@
X             *vl <<= 1;
X         } while (*vl > 0);
X         exp = i;
X-        ve[F.EXPPOS_SHORT] = sgn;
X+        vu[F.EXPPOS_SHORT] = sgn;
X     }
X    return value;
X   }else { //static if(real.mant_dig==106) // doubledouble
XIndex: tango/stdc/time.d
X===================================================================
X--- tango/stdc/time.d	(revision 3329)
X+++ tango/stdc/time.d	(working copy)
X@@ -93,3 +93,7 @@
X {
X     void tzset();
X }
X+else version( freebsd )
X+{
X+	void tzset();
X+}
X\ No newline at end of file
XIndex: tango/stdc/fenv.d
X===================================================================
X--- tango/stdc/fenv.d	(revision 3329)
X+++ tango/stdc/fenv.d	(working copy)
X@@ -110,6 +110,11 @@
X     private extern fenv_t _FE_DFL_ENV;
X     fenv_t* FE_DFL_ENV = &_FE_DFL_ENV;
X }
X+else version( freebsd )
X+{
X+    private extern fenv_t _FE_DFL_ENV;
X+    fenv_t* FE_DFL_ENV = &_FE_DFL_ENV;
X+}
X else
X {
X     static assert( false );
XIndex: tango/stdc/posix/time.d
X===================================================================
X--- tango/stdc/posix/time.d	(revision 3329)
X+++ tango/stdc/posix/time.d	(working copy)
X@@ -250,6 +250,7 @@
X }
X else version( freebsd )
X {
X+	extern c_long timezone;		// Is this right for BSD?
X     //tm*   getdate(char *);
X     char* strptime(char*, char*, tm*);
X }
XIndex: tango/stdc/posix/signal.d
X===================================================================
X--- tango/stdc/posix/signal.d	(revision 3329)
X+++ tango/stdc/posix/signal.d	(working copy)
X@@ -88,12 +88,6 @@
X   SIGEV_THREAD
X }
X 
X-union sigval
X-{
X-    int     sival_int;
X-    void*   sival_ptr;
X-}
X-
X private extern (C) int __libc_current_sigrtmin();
X private extern (C) int __libc_current_sigrtmax();
X 
X@@ -257,6 +251,11 @@
X 
X version( linux )
X {
X+	union sigval
X+	{
X+		int     sival_int;
X+		void*   sival_ptr;
X+	}
X     const SIG_HOLD = cast(sigfn_t) 1;
X 
X     private const _SIGSET_NWORDS = 1024 / (8 * c_ulong.sizeof);
X@@ -378,6 +377,11 @@
X }
X else version( darwin )
X {
X+	union sigval
X+	{
X+		int     sival_int;
X+		void*   sival_ptr;
X+	}
X     //SIG_HOLD
X 
X     alias uint sigset_t;
X@@ -487,7 +491,7 @@
X 	}
X 
X 	int kill(pid_t, int);
X-	int sigaction(int, sigaction_t*, sigaction_t);
X+	int sigaction(int, sigaction_t*, sigaction_t*);
X 	int sigaddset(sigset_t*, int);
X 	int sigdelset(sigset_t*, int);
X 	int sigemptyset(sigset_t *);
X@@ -798,6 +802,28 @@
X     int sigtimedwait( sigset_t*, siginfo_t*, timespec*);
X     int sigwaitinfo( sigset_t*, siginfo_t*);
X }
X+else version( freebsd )
X+{
X+	alias uint __lwpid_t;
X+	struct sigevent
X+	{
X+		int sigev_notify;
X+		int sigev_signo;
X+		sigval sigev_value;
X+		private union __sigev_un
X+		{
X+			__lwpid_t _threadid;
X+			struct __sigev_thread
X+			{
X+				void function(sigval) _function;
X+				void* _attribute;
X+			}
X+			__sigev_thread _sigev_thread;
X+			c_long[8] __spare__;
X+		}
X+		__sigev_un _sigev_un;
X+	}
X+}
X 
X //
X // Threads (THR)
XIndex: tango/stdc/posix/stdlib.d
X===================================================================
X--- tango/stdc/posix/stdlib.d	(revision 3329)
X+++ tango/stdc/posix/stdlib.d	(working copy)
X@@ -78,6 +78,10 @@
X {
X     int posix_memalign(void**, size_t, size_t);
X }
X+else version( freebsd )
X+{
X+    int posix_memalign(void**, size_t, size_t);
X+}
X 
X //
X // C Extension (CX)
X@@ -101,6 +105,11 @@
X 
X     void* valloc(size_t); // LEGACY non-standard
X }
X+else version( freebsd )
X+{
X+    int setenv(char*, char*, int);
X+    int unsetenv(char*);
X+}
X 
X //
X // Thread-Safe Functions (TSF)
X@@ -258,9 +267,93 @@
X 
X     c_long a64l(char*);
X     double drand48();
X-    //char*  ecvt(double, int, int *, int *); // LEGACY
X-    double erand48(ushort[3]);
X-    //char*  fcvt(double, int, int *, int *); // LEGACY
X+
X+	// Unimplemented on FreeBSD, but required by tango
X+	import tango.stdc.math : modf;
X+	char* ecvt(double arg, int ndigits, int* decpt, int* sign)
X+	{
X+		return(cvt(arg, ndigits, decpt, sign, true));
X+	}
X+	char* fcvt(double arg, int ndigits, int* decpt, int* sign)
X+	{
X+		return(cvt(arg, ndigits, decpt, sign, false));
X+	}
X+	private char* cvt(double arg, int ndigits, int* decpt, int* sign, bool eflag)
X+	{
X+		int r2;
X+		double fi, fj;
X+		char* p, p1;
X+		char[] buf;
X+
X+		if (ndigits<0)
X+			ndigits = 0;
X+		buf = new char[ndigits];
X+
X+		r2 = 0;
X+		*sign = 0;
X+		p = &buf[0];
X+		if (arg<0) {
X+			*sign = 1;
X+			arg = -arg;
X+		}
X+		arg = modf(arg, &fi);
X+		p1 = &buf[$-1];
X+		/*
X+		 * Do integer part
X+		 */
X+		if (fi != 0) {
X+			p1 = &buf[$-1];
X+			while (fi != 0) {
X+				fj = modf(fi/10, &fi);
X+				*--p1 = cast(int)((fj+.03)*10) + '0';
X+				r2++;
X+			}
X+			while (p1 < &buf[$-1])
X+				*p++ = *p1++;
X+		} else if (arg > 0) {
X+			while ((fj = arg*10) < 1) {
X+				arg = fj;
X+				r2--;
X+			}
X+		}
X+		p1 = &buf[ndigits];
X+		if (!eflag)
X+			p1 += r2;
X+		*decpt = r2;
X+		if (p1 < &buf[0]) {
X+			buf[0] = '\0';
X+			return(buf.ptr);
X+		}
X+		while (p<=p1 && p<&buf[$-1]) {
X+			arg *= 10;
X+			arg = modf(arg, &fj);
X+			*p++ = cast(int)fj + '0';
X+		}
X+		if (p1 >= &buf[$-1]) {
X+			buf[$-2] = '\0';
X+			return(buf.ptr);
X+		}
X+		p = p1;
X+		*p1 += 5;
X+		while (*p1 > '9') {
X+			*p1 = '0';
X+			if (p1>buf.ptr)
X+				++*--p1;
X+			else {
X+				*p1 = '1';
X+				(*decpt)++;
X+				if (!eflag) {
X+					if (p>buf.ptr)
X+						*p = '0';
X+					p++;
X+				}
X+			}
X+		}
X+		*p = '\0';
X+		return(buf.ptr);
X+	}
X+
X+	double erand48(ushort[3]);
X     //char*  gcvt(double, int, char*); // LEGACY
X     int    getsubopt(char**, char**, char**);
X     int    grantpt(int);
XIndex: tango/stdc/posix/semaphore.d
X===================================================================
X--- tango/stdc/posix/semaphore.d	(revision 3329)
X+++ tango/stdc/posix/semaphore.d	(working copy)
X@@ -58,9 +58,7 @@
X }
X else version( freebsd )
X {
X-	const uint SEM_MAGIC = 0x09fa4012;
X-	const SEM_USER = 0;
X-	struct sem_t
X+	struct sem
X 	{
X 		uint magic;
X 		pthread_mutex_t lock;
X@@ -75,10 +73,9 @@
X 			sem** le_prev;
X 		}
X 		_entry entry;
X-		sem_t** backpointer;
X+		sem** backpointer;
X 	}
X-
X-	const SEM_FAILED = cast(sem_t*) null;
X+	alias sem* sem_t;
X }
X 
X int sem_close(sem_t*);
XIndex: tango/stdc/posix/pthread.d
X===================================================================
X--- tango/stdc/posix/pthread.d	(revision 3329)
X+++ tango/stdc/posix/pthread.d	(working copy)
X@@ -282,7 +282,19 @@
X     int pthread_barrierattr_init(pthread_barrierattr_t*);
X     int pthread_barrierattr_setpshared(pthread_barrierattr_t*, int);
X }
X+else version( freebsd )
X+{
X+    const PTHREAD_BARRIER_SERIAL_THREAD = -1;
X 
X+    int pthread_barrier_destroy(pthread_barrier_t*);
X+    int pthread_barrier_init(pthread_barrier_t*, pthread_barrierattr_t*, uint);
X+    int pthread_barrier_wait(pthread_barrier_t*);
X+    int pthread_barrierattr_destroy(pthread_barrierattr_t*);
X+    int pthread_barrierattr_getpshared(pthread_barrierattr_t*, int*);
X+    int pthread_barrierattr_init(pthread_barrierattr_t*);
X+    int pthread_barrierattr_setpshared(pthread_barrierattr_t*, int);
X+}
X+
X //
X // Clock (CS)
X //
X@@ -310,6 +322,14 @@
X     int pthread_spin_trylock(pthread_spinlock_t*);
X     int pthread_spin_unlock(pthread_spinlock_t*);
X }
X+version( freebsd )
X+{
X+    int pthread_spin_destroy(pthread_spinlock_t*);
X+    int pthread_spin_init(pthread_spinlock_t*, int);
X+    int pthread_spin_lock(pthread_spinlock_t*);
X+    int pthread_spin_trylock(pthread_spinlock_t*);
X+    int pthread_spin_unlock(pthread_spinlock_t*);
X+}
X 
X //
X // XOpen (XSI)
X@@ -356,7 +376,22 @@
X     int pthread_mutexattr_settype(pthread_mutexattr_t*, int);
X     int pthread_setconcurrency(int);
X }
X+else version( freebsd )
X+{
X+    const PTHREAD_MUTEX_NORMAL      = 3;
X+    const PTHREAD_MUTEX_ERRORCHECK  = 1;
X+    const PTHREAD_MUTEX_RECURSIVE   = 2;
X+	const PTHREAD_MUTEX_ADAPTIVE_NP = 4;
X+	const PTHREAD_MUTEX_TYPE_MAX	= 5;
X 
X+    int pthread_attr_getguardsize(pthread_attr_t*, size_t*);
X+    int pthread_attr_setguardsize(pthread_attr_t*, size_t);
X+    int pthread_getconcurrency();
X+    int pthread_mutexattr_gettype(pthread_mutexattr_t*, int*);
X+    int pthread_mutexattr_settype(pthread_mutexattr_t*, int);
X+    int pthread_setconcurrency(int);
X+}
X+
X //
X // CPU Time (TCT)
X //
X@@ -390,6 +425,12 @@
X     int pthread_rwlock_timedrdlock(pthread_rwlock_t*, timespec*);
X     int pthread_rwlock_timedwrlock(pthread_rwlock_t*, timespec*);
X }
X+else version( freebsd )
X+{
X+    int pthread_mutex_timedlock(pthread_mutex_t*, timespec*);
X+    int pthread_rwlock_timedrdlock(pthread_rwlock_t*, timespec*);
X+    int pthread_rwlock_timedwrlock(pthread_rwlock_t*, timespec*);
X+}
X 
X //
X // Priority (TPI|TPP)
X@@ -461,7 +502,25 @@
X     int pthread_setschedparam(pthread_t, int, sched_param*);
X     //int pthread_setschedprio(pthread_t, int);
X }
X+else version( freebsd )
X+{
X+    enum
X+    {
X+        PTHREAD_SCOPE_SYSTEM    = 0x2,
X+        PTHREAD_SCOPE_PROCESS   = 0
X+    }
X 
X+    int pthread_attr_getinheritsched(pthread_attr_t*, int*);
X+    int pthread_attr_getschedpolicy(pthread_attr_t*, int*);
X+    int pthread_attr_getscope(pthread_attr_t*, int*);
X+    int pthread_attr_setinheritsched(pthread_attr_t*, int);
X+    int pthread_attr_setschedpolicy(pthread_attr_t*, int);
X+    int pthread_attr_setscope(pthread_attr_t*, int);
X+    int pthread_getschedparam(pthread_t, int*, sched_param*);
X+    int pthread_setschedparam(pthread_t, int, sched_param*);
X+    //int pthread_setschedprio(pthread_t, int);
X+}
X+
X //
X // Stack (TSA|TSS)
X //
X@@ -492,6 +551,15 @@
X     int pthread_attr_setstackaddr(pthread_attr_t*, void*);
X     int pthread_attr_setstacksize(pthread_attr_t*, size_t);
X }
X+else version( freebsd )
X+{
X+    int pthread_attr_getstack(pthread_attr_t*, void**, size_t*);
X+    int pthread_attr_getstackaddr(pthread_attr_t*, void**);
X+    int pthread_attr_getstacksize(pthread_attr_t*, size_t*);
X+    int pthread_attr_setstack(pthread_attr_t*, void*, size_t);
X+    int pthread_attr_setstackaddr(pthread_attr_t*, void*);
X+    int pthread_attr_setstacksize(pthread_attr_t*, size_t);
X+}
X 
X //
X // Shared Synchronization (TSH)
XIndex: tango/stdc/posix/sys/types.d
X===================================================================
X--- tango/stdc/posix/sys/types.d	(revision 3329)
X+++ tango/stdc/posix/sys/types.d	(working copy)
X@@ -90,6 +90,7 @@
X     alias size_t    ssize_t;
X     //time_t (defined in tango.stdc.time)
X     alias uint      uid_t;
X+	alias uint		fflags_t;
X }
X 
X //
X@@ -135,13 +136,13 @@
X }
X else version( freebsd )
X {
X-    //clock_t
X+    alias c_ulong clock_t;
X     alias ulong fsblkcnt_t;
X     alias ulong fsfilcnt_t;
X     alias long  id_t;
X-    // key_t
X-    alias c_long   suseconds_t; // C long
X-    alias uint  useconds_t; // C unsigned int
X+	alias c_long key_t;
X+    alias c_long suseconds_t;
X+    alias uint  useconds_t;
X }
X 
X //
X@@ -346,26 +347,118 @@
X }
X else version( freebsd )
X {
X-    struct pthread;
X-
X-    /*
X-    
X-    {
X-
X-        c_long                  tid;
X-        umutex                  lock;
X-        umtx_t                  cycle;
X-        int                     locklevel; // C int
X-        int                     critical_count; // C int
X-        int                     sigblock; // C int
X-        TAILQ_ENTRY(pthread)    tle;
X-        TAILQ_ENTRY(pthread)    gcle;
X-        LIST_ENTRY(pthread)     hle;
X-        int                     refcount; // C int
X-    }
X-    */
X-
X-    alias pthread* pthread_t;
X+	private
X+	{
X+		version = pthread_libkse; // Is this always right?
X+		
X+		version(pthread_libc_r)
X+		{
X+			enum : size_t
X+			{
X+				ATTR_SIZE = 44,
X+				COND_SIZE = 44,
X+				CONDATTR_SIZE = 8,
X+				KEY_SIZE = int.sizeof,
X+				MUTEX_SIZE = 64,
X+				MUTEXATTR_SIZE = 16,
X+				ONCE_SIZE = 8,
X+				RWLOCK_SIZE = 20,
X+				RWLOCKATTR_SIZE = 4,
X+				PTHREAD_SIZE = 1024
X+			}
X+		}
X+		else version(pthread_libkse)
X+		{
X+			enum : size_t
X+			{
X+				ATTR_SIZE = 44,
X+				COND_SIZE = 44,
X+				CONDATTR_SIZE = 8,
X+				KEY_SIZE = 16,
X+				MUTEX_SIZE = 68,
X+				MUTEXATTR_SIZE = 16,
X+				ONCE_SIZE = 8,
X+				RWLOCK_SIZE = 20,
X+				RWLOCKATTR_SIZE = 4,
X+				PTHREAD_SIZE = 476
X+			}
X+		}
X+		else version(pthread_libthr)
X+		{
X+			enum : size_t
X+			{
X+				ATTR_SIZE = 32,
X+				COND_SIZE = 56,
X+				CONDATTR_SIZE = 8,
X+				KEY_SIZE = 12,
X+				MUTEX_SIZE = 60,
X+				MUTEXATTR_SIZE = 16,
X+				ONCE_SIZE = 8,
X+				RWLOCK_SIZE = 20,
X+				RWLOCKATTR_SIZE = 4,
X+				PTHREAD_SIZE = 248
X+			}		
X+		}
X+	}
X+	struct pthread_attr
X+	{
X+		byte[ATTR_SIZE] __opaque;
X+	}
X+	alias pthread_attr* pthread_attr_t;
X+	
X+	struct pthread_cond
X+	{
X+		byte[COND_SIZE] __opaque;
X+	}
X+	alias pthread_cond* pthread_cond_t;
X+	
X+	struct pthread_cond_attr
X+	{
X+		byte[CONDATTR_SIZE] __opaque;
X+	}
X+	alias pthread_cond_attr* pthread_condattr_t;
X+	
X+	struct pthread_key
X+	{
X+		byte[KEY_SIZE] __opaque;
X+	}
X+	alias pthread_key* pthread_key_t;
X+	
X+	struct pthread_mutex
X+	{
X+		byte[MUTEX_SIZE] __opaque;
X+	}
X+	alias pthread_mutex* pthread_mutex_t;
X+	
X+	struct pthread_mutex_attr
X+	{
X+		byte[MUTEXATTR_SIZE] __opaque;
X+	}
X+	alias pthread_mutex_attr* pthread_mutexattr_t;
X+	
X+	struct pthread_once
X+	{
X+		byte[ONCE_SIZE] __opaque;
X+	}
X+	alias pthread_once* pthread_once_t;
X+	
X+	struct pthread_rwlock
X+	{
X+		byte[RWLOCK_SIZE] __opaque;
X+	}
X+	alias pthread_rwlock* pthread_rwlock_t;
X+	
X+	struct pthread_rwlockattr
X+	{
X+		byte[RWLOCKATTR_SIZE] __opaque;
X+	}
X+	alias pthread_rwlockattr* pthread_rwlockattr_t;
X+	
X+	struct pthread
X+	{
X+		byte[PTHREAD_SIZE] __opaque;
X+	}
X+	alias pthread* pthread_t;
X }
X 
X //
X@@ -412,6 +505,23 @@
X }
X else version( freebsd )
X {
X+	alias uint __lwpid_t;
X+	
X+	struct umutex
X+	{
X+		__lwpid_t m_owner;		// volatile
X+		uint m_flags;
X+		uint[2] m_ceilings;
X+		uint[4] m_spare;
X+	}
X+	
X+	struct ucond
X+	{
X+		uint c_has_waiters;
X+		uint c_flags;
X+		uint[2] c_spare;		// volatile
X+	}
X+	
X     struct pthread_barrier {
X         umutex                  b_lock;
X         ucond                   b_cv;
X@@ -447,9 +557,11 @@
X }
X else version( freebsd )
X {
X-    private struct pthread_spinlock;
X-
X-    alias pthread_spinlock* pthread_spinlock_t;
X+	struct pthread_spinlock
X+	{
X+		umutex s_lock;
X+	}
X+	alias pthread_spinlock* pthread_spinlock_t;
X }
X 
X //
XIndex: tango/stdc/posix/sys/mman.d
X===================================================================
X--- tango/stdc/posix/sys/mman.d	(revision 3329)
X+++ tango/stdc/posix/sys/mman.d	(working copy)
X@@ -161,7 +161,7 @@
X 
X     int	msync(void*, size_t, int);
X }
X-else version( darwin )
X+else version( freebsd )
X {
X     const MAP_SHARED    = 0x0001;
X     const MAP_PRIVATE   = 0x0002;
XIndex: tango/stdc/posix/sys/stat.d
X===================================================================
X--- tango/stdc/posix/sys/stat.d	(revision 3329)
X+++ tango/stdc/posix/sys/stat.d	(working copy)
X@@ -272,27 +272,28 @@
X {
X     struct stat_t
X     {
X-        dev_t       st_dev;
X-        ino_t       st_ino;
X-        mode_t      st_mode;
X-        nlink_t     st_nlink;
X-        uid_t       st_uid;
X-        gid_t       st_gid;
X-        dev_t       st_rdev;
X-        time_t      st_atime;
X-        c_long      st_atimensec;
X-        time_t      st_mtime;
X-        c_long      st_mtimensec;
X-        time_t      st_ctime;
X-        c_long      st_ctimensec;
X-        off_t       st_size;
X-        blkcnt_t    st_blocks;
X-        blksize_t   st_blksize;
X-        uint        st_flags;
X-        uint        st_gen;
X-        int         st_lspare;
X-        time_t      st_birthtime;
X-		c_long      st_birthtimensec;
X+        dev_t st_dev;
X+		ino_t st_ino;
X+		mode_t st_mode;
X+		nlink_t st_nlink;
X+		uid_t st_uid;
X+		gid_t st_gid;
X+		dev_t st_rdev;
X+
X+		timespec st_atimespec;
X+		timespec st_mtimespec;
X+		timespec st_ctimespec;
X+
X+		off_t st_size;
X+		blkcnt_t st_blocks;
X+		blksize_t st_blksize;
X+		fflags_t st_flags;
X+		uint st_gen;
X+		int st_lspare;
X+		
X+		timespec st_birthtimespec;
X+		
X+		byte[16 - timespec.sizeof] padding;
X     }
X 
X     const S_IRUSR   = 0000400;
XIndex: tango/stdc/math.d
X===================================================================
X--- tango/stdc/math.d	(revision 3329)
X+++ tango/stdc/math.d	(working copy)
X@@ -363,22 +363,11 @@
X }
X else version( freebsd )
X {
X-    enum
X-    {
X-		FP_INFINITE = 0x01,
X-		FP_NAN = 0x02,
X-		FP_NORMAL = 0x04,
X-		FP_SUBNORMAL = 0x08,
X-		FP_ZERO = 0x10
X-    }
X+	// Because FreeBSD <8.0 lacks certain math functions, we must
X+	// use gcc's built-in versions. At the time of this writing it
X+	// is safe to assme that gdc is the compiler in use on this platform.
X+	import gcc.builtins;
X 
X-    enum
X-    {
X-        FP_FAST_FMA  = 0,
X-        FP_FAST_FMAF = 0,
X-        FP_FAST_FMAL = 0,
X-    }
X-
X 	int	__fpclassifyd(double);
X 	int	__fpclassifyf(float);
X 	int	__fpclassifyl(real);
X@@ -405,7 +394,7 @@
X     //int isfinite(real-floating x);
X     int isfinite(float x)       { return __isfinitef(x); }
X     int isfinite(double x)      { return __isfinite(x); }
X-	int isfinite(double x)      { return __isfinitel(x); }
X+	int isfinite(real x)      { return __isfinitel(x); }
X 
X     //int isinf(real-floating x);
X     int isinf(float x)          { return __isinff(x); }
X@@ -425,7 +414,7 @@
X     //int signbit(real-floating x);
X     int signbit(float x)     { return __signbitf(x); }
X     int signbit(double x)    { return __signbit(x); }
X-	int signbit(double x)    { return __signbit(x); }
X+	int signbit(real x)    { return __signbit(x); }
X     }
X }
X 
X@@ -464,31 +453,38 @@
X 
X double  acos(double x);
X float   acosf(float x);
X-real    acosl(real x);
X+version(freebsd) real    acosl(real x) { return __builtin_acosl(x); }
X+else real    acosl(real x);
X 
X double  asin(double x);
X float   asinf(float x);
X-real    asinl(real x);
X+version(freebsd) real    asinl(real x) { return __builtin_asinl(x); }
X+else real    asinl(real x);
X 
X double  atan(double x);
X float   atanf(float x);
X-real    atanl(real x);
X+version(freebsd) real    atanl(real x) { return __builtin_atanl(x); }
X+else real    atanl(real x);
X 
X double  atan2(double y, double x);
X float   atan2f(float y, float x);
X-real    atan2l(real y, real x);
X+version(freebsd) real    atan2l(real y, real x) { return __builtin_atan2l(y, x); }
X+else real    atan2l(real y, real x);
X 
X double  cos(double x);
X float   cosf(float x);
X-real    cosl(real x);
X+version(freebsd) real    cosl(real x) { return __builtin_cosl(x); }
X+else real    cosl(real x);
X 
X double  sin(double x);
X float   sinf(float x);
X-real    sinl(real x);
X+version(freebsd) real    sinl(real x) { return __builtin_sinl(x); }
X+else real    sinl(real x);
X 
X double  tan(double x);
X float   tanf(float x);
X-real    tanl(real x);
X+version(freebsd) real    tanl(real x) { return __builtin_tanl(x); }
X+else real    tanl(real x);
X 
X double  acosh(double x);
X float   acoshf(float x);
X@@ -504,27 +500,33 @@
X 
X double  cosh(double x);
X float   coshf(float x);
X-real    coshl(real x);
X+version(freebsd) real    coshl(real x) { return __builtin_coshl(x); }
X+else real    coshl(real x);
X 
X double  sinh(double x);
X float   sinhf(float x);
X-real    sinhl(real x);
X+version(freebsd) real    sinhl(real x) { return __builtin_sinhl(x); }
X+else real    sinhl(real x);
X 
X double  tanh(double x);
X float   tanhf(float x);
X-real    tanhl(real x);
X+version(freebsd) real    tanhl(real x) { return __builtin_tanhl(x); }
X+else real    tanhl(real x);
X 
X double  exp(double x);
X float   expf(float x);
X-real    expl(real x);
X+version(freebsd) real    expl(real x) { return __builtin_expl(x); }
X+else real    expl(real x);
X 
X double  exp2(double x);
X float   exp2f(float x);
X-real    exp2l(real x);
X+version(freebsd) real exp2l(real x) { return __builtin_exp2l(x); }
X+else real    exp2l(real x);
X 
X double  expm1(double x);
X float   expm1f(float x);
X-real    expm1l(real x);
X+version(freebsd) real expm1l(real x) { return __builtin_expm1l(x); }
X+else real    expm1l(real x);
X 
X double  frexp(double value, int* exp);
X float   frexpf(float value, int* exp);
X@@ -540,23 +542,28 @@
X 
X double  log(double x);
X float   logf(float x);
X-real    logl(real x);
X+version(freebsd) real logl(real x) { return __builtin_logl(x); }
X+else real    logl(real x);
X 
X double  log10(double x);
X float   log10f(float x);
X-real    log10l(real x);
X+version(freebsd) real log10l(real x) { return __builtin_log10l(x);}
X+else real    log10l(real x);
X 
X double  log1p(double x);
X float   log1pf(float x);
X-real    log1pl(real x);
X+version(freebsd) real log1pl(real x) { return __builtin_log1pl(x); }
X+else real    log1pl(real x);
X 
X double  log2(double x);
X float   log2f(float x);
X-real    log2l(real x);
X+version(freebsd) real log2l(real x) { return __builtin_log2l(x); }
X+else real    log2l(real x);
X 
X double  logb(double x);
X float   logbf(float x);
X-real    logbl(real x);
X+version(freebsd) real logbl(real x) { return __builtin_logbl(x); }
X+else real    logbl(real x);
X 
X double  modf(double value, double* iptr);
X float   modff(float value, float* iptr);
X@@ -572,7 +579,8 @@
X 
X double  cbrt(double x);
X float   cbrtf(float x);
X-real    cbrtl(real x);
X+version(freebsd) real cbrtl(real x) { return __builtin_cbrtl(x); }
X+else real    cbrtl(real x);
X 
X double  fabs(double x);
X float   fabsf(float x);
X@@ -584,7 +592,8 @@
X 
X double  pow(double x, double y);
X float   powf(float x, float y);
X-real    powl(real x, real y);
X+version(freebsd) real    powl(real x, real y) { return __builtin_powl(x, y); }
X+else real    powl(real x, real y);
X 
X double  sqrt(double x);
X float   sqrtf(float x);
X@@ -624,11 +633,13 @@
X 
X c_long  lrint(double x);
X c_long  lrintf(float x);
X-c_long  lrintl(real x);
X+version(freebsd) c_long lrintl(real x) { return __builtin_lrintl(x); }
X+else c_long  lrintl(real x);
X 
X-long    llrint(double x);
X-long    llrintf(float x);
X-long    llrintl(real x);
X+long  llrint(double x);
X+long  llrintf(float x);
X+version(freebsd) long llrintl(real x) { return __builtin_llrintl(x); }
X+else long  llrintl(real x);
X 
X double  round(double x);
X float   roundf(float x);
X@@ -648,7 +659,8 @@
X 
X double  fmod(double x, double y);
X float   fmodf(float x, float y);
X-real    fmodl(real x, real y);
X+version(freebsd) real fmodl(real x, real y) { return __builtin_fmodl(x, y); }
X+else real    fmodl(real x, real y);
X 
X double  remainder(double x, double y);
X float   remainderf(float x, float y);
END-of-tango/files/patch-bsd_final.diff
echo x - tango/pkg-descr
sed 's/^X//' >tango/pkg-descr << 'END-of-tango/pkg-descr'
XTango is a cross-platform open-source software library, written in the D
Xprogramming language for D programmers. It is structured as a cohesive and
Xcomprehensive library for general purpose usage, and is supported by a growing
Xnumber of recognized D enthusiasts.
X
XWWW: http://www.dsource.org/projects/tango
END-of-tango/pkg-descr
exit



>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200803260403.m2Q43q9I039862>