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>