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": {