Overview
Comment: | Add OFLoadPluginFailedException
OFOpenItemFailedException was too unspecific and only allowed an errno, |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
4642bc76b09859550140f1563d899dfd |
User & Date: | js on 2018-02-09 00:00:22 |
Other Links: | manifest | tags |
Context
2018-02-09
| ||
00:05 | tests: Include runtime in DYLD_FRAMEWORK_PATH check-in: 9a7f4ee2d0 user: js tags: trunk | |
00:00 | Add OFLoadPluginFailedException check-in: 4642bc76b0 user: js tags: trunk | |
2018-02-08
| ||
23:42 | Add Info.plist for test plugin check-in: d1b626eaa2 user: js tags: trunk | |
Changes
Modified src/OFPlugin.h from [1423b35bee] to [14c7d1c65f].
︙ | ︙ | |||
53 54 55 56 57 58 59 60 61 62 63 64 65 | @end #ifdef __cplusplus extern "C" { #endif extern of_plugin_handle_t of_dlopen(OFString *path, int flags); extern void *of_dlsym(of_plugin_handle_t handle, const char *symbol); extern void of_dlclose(of_plugin_handle_t handle); #ifdef __cplusplus } #endif OF_ASSUME_NONNULL_END | > | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | @end #ifdef __cplusplus extern "C" { #endif extern of_plugin_handle_t of_dlopen(OFString *path, int flags); extern void *of_dlsym(of_plugin_handle_t handle, const char *symbol); extern OFString *of_dlerror(void); extern void of_dlclose(of_plugin_handle_t handle); #ifdef __cplusplus } #endif OF_ASSUME_NONNULL_END |
Modified src/OFPlugin.m from [5d759baef8] to [fc21e7fba3].
︙ | ︙ | |||
25 26 27 28 29 30 31 | #endif #import "OFPlugin.h" #import "OFString.h" #import "OFLocalization.h" #import "OFInitializationFailedException.h" | | | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #endif #import "OFPlugin.h" #import "OFString.h" #import "OFLocalization.h" #import "OFInitializationFailedException.h" #import "OFLoadPluginFailedException.h" typedef OFPlugin *(*init_plugin_t)(void); of_plugin_handle_t of_dlopen(OFString *path, int flags) { #ifndef OF_WINDOWS |
︙ | ︙ | |||
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | { #ifndef OF_WINDOWS dlclose(handle); #else FreeLibrary(handle); #endif } @implementation OFPlugin + (id)pluginFromFile: (OFString *)path { void *pool = objc_autoreleasePoolPush(); of_plugin_handle_t handle; init_plugin_t initPlugin; OFPlugin *plugin; #if defined(OF_MACOS) path = [path stringByAppendingFormat: @".bundle/Contents/MacOS/%@", [path lastPathComponent]]; #elif defined(OF_IOS) path = [path stringByAppendingFormat: @".bundle/%@", [path lastPathComponent]]; #else path = [path stringByAppendingString: @PLUGIN_SUFFIX]; #endif if ((handle = of_dlopen(path, OF_RTLD_LAZY)) == NULL) | > > > > > > > > > > > > | < | | 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | { #ifndef OF_WINDOWS dlclose(handle); #else FreeLibrary(handle); #endif } OFString * of_dlerror(void) { #ifndef OF_WINDOWS return [OFString stringWithCString: dlerror() encoding: [OFLocalization encoding]]; #else return nil; #endif } @implementation OFPlugin + (id)pluginFromFile: (OFString *)path { void *pool = objc_autoreleasePoolPush(); of_plugin_handle_t handle; init_plugin_t initPlugin; OFPlugin *plugin; #if defined(OF_MACOS) path = [path stringByAppendingFormat: @".bundle/Contents/MacOS/%@", [path lastPathComponent]]; #elif defined(OF_IOS) path = [path stringByAppendingFormat: @".bundle/%@", [path lastPathComponent]]; #else path = [path stringByAppendingString: @PLUGIN_SUFFIX]; #endif if ((handle = of_dlopen(path, OF_RTLD_LAZY)) == NULL) @throw [OFLoadPluginFailedException exceptionWithPath: path error: of_dlerror()]; objc_autoreleasePoolPop(pool); initPlugin = (init_plugin_t)(uintptr_t)of_dlsym(handle, "init_plugin"); if (initPlugin == (init_plugin_t)0 || (plugin = initPlugin()) == nil) { of_dlclose(handle); @throw [OFInitializationFailedException |
︙ | ︙ |
Modified src/ObjFW.h from [3e34a3f2ec] to [01ae715851].
︙ | ︙ | |||
151 152 153 154 155 156 157 158 159 160 161 162 163 164 | #import "OFInvalidFormatException.h" #import "OFInvalidJSONException.h" #import "OFInvalidServerReplyException.h" #import "OFLinkFailedException.h" #ifdef OF_HAVE_SOCKETS # import "OFListenFailedException.h" #endif #import "OFLockFailedException.h" #import "OFMalformedXMLException.h" #import "OFMemoryNotPartOfObjectException.h" #import "OFMoveItemFailedException.h" #import "OFNotImplementedException.h" #import "OFNotOpenException.h" #ifdef OF_HAVE_SOCKETS | > > > | 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | #import "OFInvalidFormatException.h" #import "OFInvalidJSONException.h" #import "OFInvalidServerReplyException.h" #import "OFLinkFailedException.h" #ifdef OF_HAVE_SOCKETS # import "OFListenFailedException.h" #endif #ifdef OF_HAVE_PLUGINS # import "OFLoadPluginFailedException.h" #endif #import "OFLockFailedException.h" #import "OFMalformedXMLException.h" #import "OFMemoryNotPartOfObjectException.h" #import "OFMoveItemFailedException.h" #import "OFNotImplementedException.h" #import "OFNotOpenException.h" #ifdef OF_HAVE_SOCKETS |
︙ | ︙ |
Modified src/exceptions/Makefile from [d57c4e5b68] to [72ca6fab0d].
︙ | ︙ | |||
44 45 46 47 48 49 50 | OFUndefinedKeyException.m \ OFUnknownXMLEntityException.m \ OFUnlockFailedException.m \ OFUnsupportedProtocolException.m \ OFUnsupportedVersionException.m \ OFWriteFailedException.m \ ${USE_SRCS_SOCKETS} \ | | > > | 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | OFUndefinedKeyException.m \ OFUnknownXMLEntityException.m \ OFUnlockFailedException.m \ OFUnsupportedProtocolException.m \ OFUnsupportedVersionException.m \ OFWriteFailedException.m \ ${USE_SRCS_SOCKETS} \ ${USE_SRCS_THREADS} \ ${USE_SRCS_PLUGINS} SRCS_SOCKETS = OFAcceptFailedException.m \ OFAddressTranslationFailedException.m \ OFAlreadyConnectedException.m \ OFBindFailedException.m \ OFConnectionFailedException.m \ OFHTTPRequestFailedException.m \ OFListenFailedException.m \ OFObserveFailedException.m SRCS_THREADS = OFConditionBroadcastFailedException.m \ OFConditionSignalFailedException.m \ OFConditionStillWaitingException.m \ OFConditionWaitFailedException.m \ OFThreadJoinFailedException.m \ OFThreadStartFailedException.m \ OFThreadStillRunningException.m SRCS_PLUGINS = OFLoadPluginFailedException.m INCLUDES = ${SRCS:.m=.h} include ../../buildsys.mk CPPFLAGS += -I. -I.. -I../.. -I../runtime |
Added src/exceptions/OFLoadPluginFailedException.h version [9a856dae4b].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | /* * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, * 2018 * Jonathan Schleifer <js@heap.zone> * * 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. */ #import "OFException.h" OF_ASSUME_NONNULL_BEGIN /*! * @class OFLoadPluginFailedException \ * OFLoadPluginFailedException.h ObjFW/OFLoadPluginFailedException.h * * @brief An exception indicating a plugin could not be loaded. */ @interface OFLoadPluginFailedException: OFException { OFString *_path, *_Nullable _error; } /*! * @brief The path of the plugin which could not be loaded */ @property (readonly, nonatomic) OFString *path; /*! * @brief The error why the plugin could not be loaded, as a string */ @property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFString *error; + (instancetype)exception OF_UNAVAILABLE; /*! * @brief Creates a new, autoreleased load plugin failed exception. * * @param path The path of the plugin which could not be loaded * @param error The error why the plugin could not be loaded, as a string * @return A new, autoreleased load plugin failed exception */ + (instancetype)exceptionWithPath: (OFString *)path error: (nullable OFString *)error; - (instancetype)init OF_UNAVAILABLE; /*! * @brief Initializes an already allocated load plugin failed exception. * * @param path The path of the plugin which could not be loaded * @param error The error why the plugin could not be loaded, as a string * @return An initialized load plugin failed exception */ - (instancetype)initWithPath: (OFString *)path error: (nullable OFString *)error OF_DESIGNATED_INITIALIZER; @end OF_ASSUME_NONNULL_END |
Added src/exceptions/OFLoadPluginFailedException.m version [6b608e83f6].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | /* * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, * 2018 * Jonathan Schleifer <js@heap.zone> * * 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" #import "OFLoadPluginFailedException.h" #import "OFString.h" @implementation OFLoadPluginFailedException @synthesize path = _path, error = _error; + (instancetype)exception { OF_UNRECOGNIZED_SELECTOR } + (instancetype)exceptionWithPath: (OFString *)path error: (OFString *)error { return [[[self alloc] initWithPath: path error: error] autorelease]; } - (instancetype)init { OF_INVALID_INIT_METHOD } - (instancetype)initWithPath: (OFString *)path error: (OFString *)error { self = [super init]; @try { _path = [path copy]; _error = [error copy]; } @catch (id e) { [self release]; @throw e; } return self; } - (void)dealloc { [_path release]; [_error release]; [super dealloc]; } - (OFString *)description { if (_error != nil) return [OFString stringWithFormat: @"Failed to load plugin %@: %@", _path, _error]; else return [OFString stringWithFormat: @"Failed to load plugin: %@", _path]; } @end |