Ver Fonte

Merge pull request #280 from voynovia/feature/linux

fixed warnings and linux support
Damian Kołakowski há 8 anos atrás
pai
commit
e36920ecb7
4 ficheiros alterados com 54 adições e 2 exclusões
  1. 24 0
      Example/main.swift
  2. 22 1
      Package.swift
  3. 5 0
      README.md
  4. 3 1
      Sources/String+File.swift

+ 24 - 0
Example/main.swift

@@ -0,0 +1,24 @@
+import Swifter
+import Dispatch
+
+let server = HttpServer()
+server["/"] = scopes {
+  html {
+    body {
+      center {
+        img { src = "https://swift.org/assets/images/swift.svg" }
+      }
+    }
+  }
+}
+server["/files/:path"] = directoryBrowser("/")
+
+let semaphore = DispatchSemaphore(value: 0)
+do {
+  try server.start(9080, forceIPv4: true)
+  print("Server has started ( port = \(try server.port()) ). Try to connect now...")
+  semaphore.wait()
+} catch {
+  print("Server start error: \(error)")
+  semaphore.signal()
+}

+ 22 - 1
Package.swift

@@ -1,5 +1,26 @@
+// swift-tools-version:4.0
+
 import PackageDescription
 
 let package = Package(
-    name: "Swifter"
+  name: "Swifter",
+  products: [
+    .library(
+      name: "Swifter",
+      targets: ["Swifter"]),
+    .executable(
+      name: "Example",
+      targets: ["Example"])
+  ],
+  dependencies: [],
+  targets: [
+    .target(
+      name: "Swifter",
+      dependencies: [],
+      path: "./Sources"),
+    .target(
+      name: "Example",
+      dependencies: ["Swifter"],
+      path: "./Example"),
+    ]
 )

+ 5 - 0
README.md

@@ -83,3 +83,8 @@ let package = Package(
 )
 ```
 
+### Docker.
+```
+docker run -d -p 9080:9080 -v `pwd`:/Swifter -w /Swifter --name Swifter swift bash -c "swift run"
+```
+

+ 3 - 1
Sources/String+File.swift

@@ -115,7 +115,9 @@ extension String {
             var name = ent.pointee.d_name
             let fileName = withUnsafePointer(to: &name) { (ptr) -> String? in
                 #if os(Linux)
-                    return String(validatingUTF8: [CChar](UnsafeBufferPointer<CChar>(start: UnsafePointer(unsafeBitCast(ptr, to: UnsafePointer<CChar>.self)), count: 256)))
+                  return String(validatingUTF8: ptr.withMemoryRebound(to: CChar.self, capacity: Int(ent.pointee.d_reclen), { (ptrc) -> [CChar] in
+                    return [CChar](UnsafeBufferPointer(start: ptrc, count: 256))
+                  }))
                 #else
                     var buffer = ptr.withMemoryRebound(to: CChar.self, capacity: Int(ent.pointee.d_reclen), { (ptrc) -> [CChar] in
                       return [CChar](UnsafeBufferPointer(start: ptrc, count: Int(ent.pointee.d_namlen)))