Index: README.md
==================================================================
--- README.md
+++ README.md
@@ -9,14 +9,15 @@
Table of Contents
* [What is ObjFW?](#what)
+ * [Installation](#installation)
* [License](#license)
* [Releases](#releases)
* [Cloning the repository](#cloning)
- * [Installation](#installation)
+ * [Building from source](#building-from-source)
* [macOS and iOS](#macos-and-ios)
* [Building as a framework](#building-framework)
* [Using the macOS or iOS framework in Xcode](#framework-in-xcode)
* [Broken Xcode versions](#broken-xcode-versions)
* [Windows](#windows)
@@ -72,10 +73,33 @@
ObjFW also comes with its own lightweight and extremely fast Objective-C
runtime, which in real world use cases was found to be significantly faster
than both GNU's and Apple's runtime.
+
+Installation
+
+ ObjFW packages are available for various operating systems and can be
+ installed as following:
+
+ Operating System | Command
+ -----------------|---------------------------------------------
+ Alpine Linux | `doas apk add objfw`
+ CRUX | `sudo prt-get depinst objfw`
+ Fedora | `sudo dnf install objfw`
+ FreeBSD | `sudo pkg install objfw`
+ Haiku | `pkgman install objfw`
+ Haiku (gcc2h) | `pkgman install objfw_x86`
+ macOS (Homebrew) | `brew install objfw`
+ macOS (pkgsrc) | `cd $PKGSRCDIR/devel/objfw && make install`
+ NetBSD | `cd /usr/pkgsrc/devel/objfw && make install`
+ OpenBSD | `doas pkg_add objfw`
+ OpenIndiana | `sudo pkg install developer/objfw`
+
+ If your operating system is not listed, you can
+ build ObjFW from source.
+
License
ObjFW is released under three licenses:
@@ -91,11 +115,11 @@
none of them work for you, contact me and we can find a solution.
Releases
- Releases of ObjFW, as well as changelogs and the accompanying documentation
+ Releases of ObjFW, as well as change logs and the accompanying documentation,
can be found [here](https://objfw.nil.im/wiki?name=Releases).
Cloning the repository
@@ -115,14 +139,10 @@
wiki pages, etc.:
$ cd objfw
$ fossil ui
- It's also possible to open the same local repository multiple times, so that
- you have multiple working directories all backed by the same local
- repository.
-
In order to verify the signature of the currently checked out checkin, you
can use:
$ fossil artifact current | gpg --verify
@@ -139,13 +159,13 @@
$ git clone https://github.com/ObjFW/ObjFW
Git commits are not signed, so if you want to check the signature of an
individual commit, branch head or tag, please use Fossil.
-Installation
+Building from source
- To install ObjFW, just run the following commands:
+ To build ObjFW from source and install it, just run the following commands:
$ ./configure
$ make
$ make check
$ sudo make install
@@ -162,11 +182,11 @@
When building for macOS or iOS, everything is built as a `.framework` by
default if `--disable-shared` has not been specified to `./configure`. The
frameworks will end up in `$PREFIX/Library/Frameworks`.
To build for macOS, just follow the
- regular instructions above.
+ regular instructions above.
To build for iOS, follow the regular instructions, but instead of
`./configure` do something like this:
$ clang="xcrun --sdk iphoneos clang"
Index: src/OFHTTPClient.m
==================================================================
--- src/OFHTTPClient.m
+++ src/OFHTTPClient.m
@@ -176,12 +176,12 @@
[headers setObject: authorization forKey: @"Authorization"];
}
if ([headers objectForKey: @"User-Agent"] == nil)
- [headers setObject: @"Something using ObjFW "
- @""
+ [headers setObject: @"OFHTTPClient (ObjFW's HTTP client class "
+ @")"
forKey: @"User-Agent"];
if (request.protocolVersion.major == 1 &&
request.protocolVersion.minor == 0 &&
[headers objectForKey: @"Connection"] == nil)
Index: src/OFSystemInfo.m
==================================================================
--- src/OFSystemInfo.m
+++ src/OFSystemInfo.m
@@ -158,11 +158,11 @@
initWithCString: _os_flavor
encoding: OFStringEncodingASCII];
#elif defined(HAVE_SYS_UTSNAME_H) && defined(HAVE_UNAME)
struct utsname name;
- if (uname(&name) != 0)
+ if (uname(&name) == -1)
return;
operatingSystemName = [[OFString alloc]
initWithCString: name.sysname
encoding: [OFLocale encoding]];
@@ -255,11 +255,11 @@
defined(OF_PSP)
/* Intentionally nothing */
#elif defined(HAVE_SYS_UTSNAME_H) && defined(HAVE_UNAME)
struct utsname name;
- if (uname(&name) != 0)
+ if (uname(&name) == -1)
return;
operatingSystemVersion = [[OFString alloc]
initWithCString: name.release
encoding: [OFLocale encoding]];
Index: tests/OFMatrix4x4Tests.m
==================================================================
--- tests/OFMatrix4x4Tests.m
+++ tests/OFMatrix4x4Tests.m
@@ -78,11 +78,11 @@
{ 20200, 22800, 25400, 28000 },
{ 31400, 35600, 39800, 44000 },
{ 42600, 48400, 54200, 60000 }
}]])
- TEST(@"[-translateWithVector:]",
+ TEST(@"-[translateWithVector:]",
(matrix2 = [OFMatrix4x4 identityMatrix]) &&
R([matrix2 translateWithVector: OFMakeVector3D(1, 2, 3)]) &&
R(point =
[matrix2 transformedVector: OFMakeVector4D(2, 3, 4, 1)]) &&
point.x == 3 && point.y == 5 && point.z == 7 && point.w == 1)
Index: utils/ofarc/localization/de.json
==================================================================
--- utils/ofarc/localization/de.json
+++ utils/ofarc/localization/de.json
@@ -1,5 +1,14 @@
+/*
+ * German localization for ofarc.
+ *
+ * Copyright (c) 2017-2023 Jonathan Schleifer
+ *
+ * Permission to use, copy, modify, and/or distribute this localization for
+ * any purpose with or without fee is hereby granted.
+ */
+
{
"usage": [
"Benutzung: %[prog] -[acCfhlnpqtvx] archiv.zip [datei1 datei2 ...]"
],
"full_usage": [
Index: utils/ofarc/localization/localizations.json
==================================================================
--- utils/ofarc/localization/localizations.json
+++ utils/ofarc/localization/localizations.json
@@ -1,5 +1,14 @@
+/*
+ * Localization mapping for ofarc.
+ *
+ * Copyright (c) 2017-2023 Jonathan Schleifer
+ *
+ * Permission to use, copy, modify, and/or distribute this mapping for any
+ * purpose with or without fee is hereby granted.
+ */
+
{
"de": {
"": "de"
},
"deutsch": {
Index: utils/ofdns/localization/de.json
==================================================================
--- utils/ofdns/localization/de.json
+++ utils/ofdns/localization/de.json
@@ -1,5 +1,14 @@
+/*
+ * German localization for ofdns.
+ *
+ * Copyright (c) 2020-2023 Jonathan Schleifer
+ *
+ * Permission to use, copy, modify, and/or distribute this localization for
+ * any purpose with or without fee is hereby granted.
+ */
+
{
"usage": "Benutzung: %[prog] -[chst] domain1 [domain2 ...]",
"full_usage": [
"Optionen:\n",
" -c --class Die anzufragende DNS-Klasse (standardmäßig IN)\n",
Index: utils/ofdns/localization/localizations.json
==================================================================
--- utils/ofdns/localization/localizations.json
+++ utils/ofdns/localization/localizations.json
@@ -1,5 +1,14 @@
+/*
+ * Localization mapping for ofdns.
+ *
+ * Copyright (c) 2020-2023 Jonathan Schleifer
+ *
+ * Permission to use, copy, modify, and/or distribute this mapping for any
+ * purpose with or without fee is hereby granted.
+ */
+
{
"de": {
"": "de"
},
"deutsch": {
Index: utils/ofhash/localization/de.json
==================================================================
--- utils/ofhash/localization/de.json
+++ utils/ofhash/localization/de.json
@@ -1,5 +1,14 @@
+/*
+ * German localization for ofhash.
+ *
+ * Copyright (c) 2017-2023 Jonathan Schleifer
+ *
+ * Permission to use, copy, modify, and/or distribute this localization for
+ * any purpose with or without fee is hereby granted.
+ */
+
{
"usage": [
"Benutzung: %[prog] [--md5] [--ripemd160] [--sha1] [--sha224] ",
"[--sha256] [--sha384] [--sha512] datei1 [datei2 ...]"
],
Index: utils/ofhash/localization/localizations.json
==================================================================
--- utils/ofhash/localization/localizations.json
+++ utils/ofhash/localization/localizations.json
@@ -1,5 +1,14 @@
+/*
+ * Localization mapping for ofhash.
+ *
+ * Copyright (c) 2017-2023 Jonathan Schleifer
+ *
+ * Permission to use, copy, modify, and/or distribute this mapping for any
+ * purpose with or without fee is hereby granted.
+ */
+
{
"de": {
"": "de"
},
"deutsch": {
Index: utils/ofhttp/localization/de.json
==================================================================
--- utils/ofhttp/localization/de.json
+++ utils/ofhttp/localization/de.json
@@ -1,5 +1,14 @@
+/*
+ * German localization for ofhttp.
+ *
+ * Copyright (c) 2017-2023 Jonathan Schleifer
+ *
+ * Permission to use, copy, modify, and/or distribute this localization for
+ * any purpose with or without fee is hereby granted.
+ */
+
{
"usage": "Benutzung: %[prog] -[cehHmoOPqv] iri1 [iri2 ...]",
"full_usage": [
"Optionen:\n",
" -b --body Angegebene Datei als Body übergeben\n",
Index: utils/ofhttp/localization/localizations.json
==================================================================
--- utils/ofhttp/localization/localizations.json
+++ utils/ofhttp/localization/localizations.json
@@ -1,5 +1,14 @@
+/*
+ * Localization mapping for ofhttp.
+ *
+ * Copyright (c) 2017-2023 Jonathan Schleifer
+ *
+ * Permission to use, copy, modify, and/or distribute this mapping for any
+ * purpose with or without fee is hereby granted.
+ */
+
{
"de": {
"": "de"
},
"deutsch": {