Index: .fossil-settings/clean-glob ================================================================== --- .fossil-settings/clean-glob +++ .fossil-settings/clean-glob @@ -49,9 +49,8 @@ tests/tests.nro tests/tests.rpx utils/objfw-config utils/objfw-new/objfw-new utils/ofarc/ofarc -utils/ofatalkcfg/ofatalkcfg utils/ofdns/ofdns utils/ofhash/ofhash utils/ofhttp/ofhttp Index: .fossil-settings/ignore-glob ================================================================== --- .fossil-settings/ignore-glob +++ .fossil-settings/ignore-glob @@ -54,9 +54,8 @@ tests/tests.nro tests/tests.rpx utils/objfw-config utils/objfw-new/objfw-new utils/ofarc/ofarc -utils/ofatalkcfg/ofatalkcfg utils/ofdns/ofdns utils/ofhash/ofhash utils/ofhttp/ofhttp Index: .gitignore ================================================================== --- .gitignore +++ .gitignore @@ -54,9 +54,8 @@ tests/tests.nro tests/tests.rpx utils/objfw-config utils/objfw-new/objfw-new utils/ofarc/ofarc -utils/ofatalkcfg/ofatalkcfg utils/ofdns/ofdns utils/ofhash/ofhash utils/ofhttp/ofhttp Index: configure.ac ================================================================== --- configure.ac +++ configure.ac @@ -1726,11 +1726,10 @@ AC_DEFINE(OF_HAVE_APPLETALK_IFCONFIG, 1, m4_normalize([ Whether AppleTalk interfaces can be configured ])) - AC_SUBST(OFATALKCFG, ofatalkcfg) ], [], [ #ifdef OF_HAVE_SYS_SOCKET_H # include #endif #include Index: extra.mk.in ================================================================== --- extra.mk.in +++ extra.mk.in @@ -42,11 +42,10 @@ LOOKUP_ASM_LIB_A = @LOOKUP_ASM_LIB_A@ MAP_LDFLAGS = @MAP_LDFLAGS@ OBJC_SYNC = @OBJC_SYNC@ OBJFW_NEW = @OBJFW_NEW@ OFARC = @OFARC@ -OFATALKCFG = @OFATALKCFG@ OFDNS = @OFDNS@ OFHASH = @OFHASH@ OFHTTP = @OFHTTP@ OFHTTP_LIBS = @OFHTTP_LIBS@ OF_BLOCK_TESTS_M = @OF_BLOCK_TESTS_M@ Index: objfw.spec ================================================================== --- objfw.spec +++ objfw.spec @@ -36,11 +36,10 @@ Requires: %{libobjfw_pkgname}%{_isa} = %{version}-%{release} Requires: %{libobjfw_pkgname}-devel = %{version}-%{release} Requires: %{libobjfwrt_pkgname}%{_isa} = %{version}-%{release} Requires: %{libobjfwrt_pkgname}-devel = %{version}-%{release} Requires: ofarc%{_isa} = %{version}-%{release} -Requires: ofatalkcfg%{_isa} = %{version}-%{release} Requires: ofdns%{_isa} = %{version}-%{release} Requires: ofhash%{_isa} = %{version}-%{release} Requires: ofhttp%{_isa} = %{version}-%{release} %description @@ -111,18 +110,10 @@ %description -n ofarc ofarc is a multi-format archive utility that allows creating, listing, extracting and modifying ZIP, Tar and LHA archives using ObjFW's classes for various archive types. -%package -n ofatalkcfg -Summary: Utility to configure network interfaces for AppleTalk -Requires: %{libobjfw_pkgname}%{_isa} = %{version}-%{release} -Requires: %{libobjfwrt_pkgname}%{_isa} = %{version}-%{release} - -%description -n ofatalkcfg -ofatalkcfg is a utility to configure network interfaces for AppleTalk. - %package -n ofdns Summary: Utility for performing DNS requests on the command line Requires: %{libobjfw_pkgname}%{_isa} = %{version}-%{release} Requires: %{libobjfwrt_pkgname}%{_isa} = %{version}-%{release} @@ -229,16 +220,10 @@ %license LICENSE.GPLv3 %license LICENSE.QPL %{_bindir}/ofarc %{_datadir}/ofarc -%files -n ofatalkcfg -%license LICENSE.GPLv2 -%license LICENSE.GPLv3 -%license LICENSE.QPL -%{_bindir}/ofatalkcfg - %files -n ofdns %license LICENSE.GPLv2 %license LICENSE.GPLv3 %license LICENSE.QPL %{_bindir}/ofdns Index: utils/Makefile ================================================================== --- utils/Makefile +++ utils/Makefile @@ -1,10 +1,9 @@ include ../extra.mk SUBDIRS += ${OBJFW_NEW} \ ${OFARC} \ - ${OFATALKCFG} \ ${OFDNS} \ ${OFHASH} \ ${OFHTTP} include ../buildsys.mk DELETED utils/ofatalkcfg/Makefile Index: utils/ofatalkcfg/Makefile ================================================================== --- utils/ofatalkcfg/Makefile +++ utils/ofatalkcfg/Makefile @@ -1,20 +0,0 @@ -include ../../extra.mk - -PROG = ofatalkcfg${PROG_SUFFIX} -SRCS = OFATalkCfg.m - -include ../../buildsys.mk - -PACKAGE_NAME = ofatalkcfg - -${PROG}: ${LIBOBJFW_DEP_LVL2} ${LIBOBJFWRT_DEP_LVL2} - -CPPFLAGS += -I../../src \ - -I../../src/runtime \ - -I../../src/exceptions \ - -I../.. -LIBS := -L../../src -lobjfw \ - -L../../src/runtime -L../../src/runtime/linklib ${RUNTIME_LIBS} \ - ${LIBS} -LD = ${OBJC} -LDFLAGS += ${LDFLAGS_RPATH} DELETED utils/ofatalkcfg/OFATalkCfg.m Index: utils/ofatalkcfg/OFATalkCfg.m ================================================================== --- utils/ofatalkcfg/OFATalkCfg.m +++ utils/ofatalkcfg/OFATalkCfg.m @@ -1,233 +0,0 @@ -/* - * Copyright (c) 2008-2023 Jonathan Schleifer - * - * All rights reserved. - * - * This file is part of ObjFW. It may be distributed under the terms of the - * Q Public License 1.0, which can be found in the file LICENSE.QPL included in - * the packaging of this file. - * - * Alternatively, it may be distributed under the terms of the GNU General - * Public License, either version 2 or 3, which can be found in the file - * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this - * file. - */ - -#include "config.h" - -#include - -#import "OFApplication.h" -#import "OFArray.h" -#import "OFDDPSocket.h" -#import "OFDictionary.h" -#import "OFNumber.h" -#import "OFOptionsParser.h" -#import "OFPair.h" -#import "OFStdIOStream.h" - -#import "OFGetOptionFailedException.h" -#import "OFInvalidFormatException.h" -#import "OFSetOptionFailedException.h" - -@interface OFATalkCfg: OFObject -@end - -OF_APPLICATION_DELEGATE(OFATalkCfg) - -static void -showError(OFString *error) -{ - [OFStdErr writeFormat: @"%@: %@\n", [OFApplication programName], error]; - [OFApplication terminateWithStatus: 1]; -} - -static void -showConfiguration(OFArray OF_GENERIC(OFString *) *arguments) -{ - OFAppleTalkInterfaceConfiguration config; - OFNumber *network, *node, *phase; - OFPair OF_GENERIC(OFNumber *, OFNumber *) *range; - - if (arguments.count == 0) - showError(@"No interface specified!"); - if (arguments.count > 1) - showError(@"More than one interface specified!"); - - config = [OFDDPSocket configurationForInterface: arguments.firstObject]; - network = [config - objectForKey: OFAppleTalkInterfaceConfigurationNetwork]; - node = [config objectForKey: OFAppleTalkInterfaceConfigurationNode]; - phase = [config objectForKey: OFAppleTalkInterfaceConfigurationPhase]; - range = [config - objectForKey: OFAppleTalkInterfaceConfigurationNetworkRange]; - - if (network == nil || node == nil) - [OFApplication terminateWithStatus: 1]; - - [OFStdOut writeLine: arguments.firstObject]; - [OFStdOut writeFormat: @"\tNetwork: %04X\n", - network.unsignedShortValue]; - [OFStdOut writeFormat: @"\tNode: %02X\n", node.unsignedCharValue]; - if (phase != nil) - [OFStdOut writeFormat: @"\tPhase: %@\n", phase]; - if (range != nil) { - unsigned short start = [range.firstObject unsignedShortValue]; - unsigned short end = [range.secondObject unsignedShortValue]; - [OFStdOut writeFormat: @"\tNet range: %04X-%04X\n", start, end]; - } -} - -static void -setConfiguration(OFArray OF_GENERIC(OFString *) *arguments, - OFString *networkString, OFString *nodeString, OFString *phaseString, - OFString *rangeString) -{ - OFMutableDictionary *config = [OFMutableDictionary dictionary]; - unsigned long long node, network, phase, rangeStart, rangeEnd; - OFArray OF_GENERIC(OFString *) *rangeArray; - - if (arguments.count == 0) - showError(@"No interface specified!"); - if (arguments.count > 1) - showError(@"More than one interface specified!"); - - if (networkString == nil) - showError(@"--network not specified!"); - @try { - network = [networkString unsignedLongLongValueWithBase: 0]; - } @catch (OFInvalidFormatException *e) { - showError(@"Invalid format for --network!"); - return; - } - if (network > UINT16_MAX) - showError(@"--network out of range!"); - [config setObject: [OFNumber numberWithUnsignedShort: (uint16_t)network] - forKey: OFAppleTalkInterfaceConfigurationNetwork]; - - if (nodeString == nil) - showError(@"--node not specified!"); - @try { - node = [nodeString unsignedLongLongValueWithBase: 0]; - } @catch (OFInvalidFormatException *e) { - showError(@"Invalid format for --node!"); - return; - } - if (node > UINT8_MAX) - showError(@"--node out of range!"); - [config setObject: [OFNumber numberWithUnsignedChar: (uint8_t)node] - forKey: OFAppleTalkInterfaceConfigurationNode]; - - if (phaseString != nil) { - @try { - phase = [phaseString unsignedLongLongValueWithBase: 0]; - } @catch (OFInvalidFormatException *e) { - showError(@"Invalid format for "@"--phase!"); - return; - } - - if (phase > 2) - showError(@"--phase out of range!"); - - [config setObject: [OFNumber - numberWithUnsignedChar: (uint8_t)phase] - forKey: OFAppleTalkInterfaceConfigurationPhase]; - } - - if (rangeString != nil) { - const OFAppleTalkInterfaceConfigurationKey key = - OFAppleTalkInterfaceConfigurationNetworkRange; - OFPair *range; - - rangeArray = [rangeString componentsSeparatedByString: @"-"]; - if (rangeArray.count != 2) - showError(@"Invalid format for --range!"); - - @try { - rangeStart = [[rangeArray objectAtIndex: 0] - unsignedLongLongValueWithBase: 0]; - rangeEnd = [[rangeArray objectAtIndex: 1] - unsignedLongLongValueWithBase: 0]; - } @catch (OFInvalidFormatException *e) { - showError(@"Invalid format for --range!"); - return; - } - if (rangeStart > UINT16_MAX || rangeEnd > UINT16_MAX) - showError(@"--range out of range!"); - - range = [OFPair - pairWithFirstObject: [OFNumber numberWithUnsignedShort: - (uint16_t)rangeStart] - secondObject: [OFNumber numberWithUnsignedShort: - (uint16_t)rangeEnd]]; - [config setObject: range forKey: key]; - } - - @try { - [OFDDPSocket setConfiguration: config - forInterface: arguments.firstObject]; - } @catch (OFSetOptionFailedException *e) { - showError([OFString stringWithFormat: - @"Setting configuration failed: %@", e]); - } -} - -@implementation OFATalkCfg -- (void)applicationDidFinishLaunching: (OFNotification *)notification -{ - OFString *nodeString = nil, *networkString = nil, *phaseString = nil; - OFString *rangeString = nil; - const OFOptionsParserOption options[] = { - { '\0', @"network", 1, NULL, &networkString }, - { '\0', @"node", 1, NULL, &nodeString }, - { '\0', @"phase", 1, NULL, &phaseString }, - { '\0', @"range", 1, NULL, &rangeString }, - { '\0', nil, 0, NULL, NULL } - }; - OFOptionsParser *optionsParser = - [OFOptionsParser parserWithOptions: options]; - OFUnichar option; - - while ((option = [optionsParser nextOption]) != '\0') { - switch (option) { - case ':': - if (optionsParser.lastLongOption != nil) - [OFStdErr writeFormat: - @"%@: Argument for option --%@ missing\n", - [OFApplication programName], - optionsParser.lastLongOption]; - else - [OFStdErr writeFormat: - @"%@: Argument for option -%C missing\n", - [OFApplication programName], - optionsParser.lastOption]; - - [OFApplication terminateWithStatus: 1]; - break; - case '?': - if (optionsParser.lastLongOption != nil) - [OFStdErr writeFormat: - @"%@: Unknown option: --%@\n", - [OFApplication programName], - optionsParser.lastLongOption]; - else - [OFStdErr writeFormat: - @"%@: Unknown option: -%C\n", - [OFApplication programName], - optionsParser.lastOption]; - - [OFApplication terminateWithStatus: 1]; - break; - } - } - - if (networkString == nil && nodeString == nil && phaseString == nil && - rangeString == nil) - showConfiguration(optionsParser.remainingArguments); - else - setConfiguration(optionsParser.remainingArguments, - networkString, nodeString, phaseString, rangeString); - - [OFApplication terminate]; -} -@end