> On 17 Dec 2015, at 22:47, Daniel Eggert via swift-users > <swift-users@swift.org> wrote: > > If I need access to the C fcntl(2): > > int fcntl(int, int, ...) > > can I get the swift-package-manager or swift-build-tool to compile C code > that wraps this into a non-vararg version: > > int SocketHelper_fcntl_setFlags(int const fildes, int const flags) > { > return fcntl(fildes, F_SETFL, flags); > } > > int SocketHelper_fcntl_getFlags(int const fildes) > { > return fcntl(fildes, F_GETFL); > } > > ?
I solved it like this: typealias fcntlType = @convention(c) (CInt, CInt, CInt) -> (CInt) let fcntlAddr = dlsym(UnsafeMutablePointer<Void>(bitPattern: Int(-2)), "fcntl") let fcntlType: myFcntl = unsafeBitCast(fcntlAddr, fcntlType.self) which admittedly is a bit tacky, but it works for now. /Daniel _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users