Swiftpack.co - modswift/CApache as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by modswift.
modswift/CApache 2.0.2
Swift Module Maps for Apache, ApachePortableRuntime and APRUtil
⭐️ 3
🕓 4 years ago
.package(url: "https://github.com/modswift/CApache.git", from: "2.0.2")

CApache

Apache 2 Swift3 Swift4 Swift5 macOS tuxOS

A Swift system library package (C wrapper) for Apache, ApachePortableRuntime and APRUtil. This package is part of the mod_swift effort.

Using the Apache Portable Runtime

Important: This version of the package requires that you install mod_swift. It installs the necessary shims.

Setup your Package.swift to include CApache:

import PackageDescription

let package = Package(
  name: "MyTool",
	
  dependencies: [
    .Package(url: "[email protected]:modswift/CApache.git", from: "2.0.0"),
  ]
)

Import the CAPR module.

import CAPR
import CAPRUtil

Note: If you are still on Swift 3 or 4.0, use version 1.0.0.

APR Database Example

Access a SQLite3 database using the APR-Util DBD module (zer0 error handling):

let connectString = "OpenGroupware.sqlite3"
let sql = "SELECT company_id, login FROM person"

var pool         : OpaquePointer? = nil
var driverHandle : OpaquePointer? = nil
var con          : OpaquePointer? = nil
var res          : OpaquePointer? = nil

apr_pool_initialize()
apr_pool_create_ex(&pool, nil, nil, nil)
apr_dbd_init(pool)
apr_dbd_get_driver(pool, "sqlite3", &driverHandle)
apr_dbd_open(driverHandle, pool, connectString, &con)

apr_dbd_select(driverHandle, pool, con, &res, sql, 0)

var row : OpaquePointer? = nil
while true {
  let rc = apr_dbd_get_row(driverHandle, pool, res, &row, Int32(-1))
  guard rc == 0 else { break }
  
  print("record:")
  let colCount = apr_dbd_num_cols(driverHandle, res)
  for colIdx in 0..<colCount {
    let name : String
    if let cstr = apr_dbd_get_name(driverHandle, res, colIdx) {
      name = String(cString: cstr)
    }
    else {
      name = "[\(colIdx)]"
    }
		
    if let cstr = apr_dbd_get_entry(driverHandle, row, colIdx) {
      print("  \(name) = \(String(cString: cstr))")
    }
    else {
      print("  \(name) IS NULL")
    }
  }
}

Who

mod_swift is brought to you by ZeeZide. We like feedback, GitHub stars, cool contract work, presumably any form of praise you can think of.

There is a #mod_swift channel on the Noze.io Slack.

GitHub

link
Stars: 3
Last commit: 4 years ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Related Packages

Release Notes

Make Apache GREAT again!
6 years ago

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics