ObjFW  Diff

Differences From Artifact [a330fd8ef3]:

  • File src/OFOptionsParser.m — part of check-in [48980f2297] at 2015-11-29 11:43:05 on branch trunk — Make properties a requirement and clean up code

    This increases the required GCC version from 4.0 to 4.6 (exception:
    Apple GCC, which already supports this with >= 4.0 starting with OS X
    10.5). Since even GCC 4.6 is really old by now, there is no point in
    still supporting something even older and making the code ugly because
    of that. While some hardware and OS support was dropped from GCC 4.6
    compared to GCC 4.0, there is nothing in there that would be an
    interesting target with the exception of BeOS maybe - but a port to BeOS
    can also be achieved using the Haiku support. The other dropped OSes are
    mostly old versions of OSes while newer ones are still being supported
    (and those newer versions of those OSes still support the same
    hardware). (user: js, size: 6233) [annotate] [blame] [check-ins using]

To Artifact [aa2c46db93]:


97
98
99
100
101
102
103

104
105



106
107
108
109
110





111
112
113
114
115
116
117
118
119









120
121
122


123
124


125
126
127
128
129
130
131
97
98
99
100
101
102
103
104


105
106
107
108




109
110
111
112
113
114








115
116
117
118
119
120
121
122
123
124


125
126
127

128
129
130
131
132
133
134
135
136







+
-
-
+
+
+

-
-
-
-
+
+
+
+
+

-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+

-
-
+
+

-
+
+







		    iter++, iter2++) {
			iter2->shortOption = iter->shortOption;
			iter2->longOption = nil;
			iter2->hasArgument = iter->hasArgument;
			iter2->isSpecifiedPtr = iter->isSpecifiedPtr;
			iter2->argumentPtr = iter->argumentPtr;

			if (iter->longOption != nil) {
			@try {
				iter2->longOption = [iter->longOption copy];
				@try {
					iter2->longOption =
					    [iter->longOption copy];

				if ([_longOptions
				    valueForKey: iter2->longOption] != NULL)
					@throw [OFInvalidArgumentException
					    exception];
					if ([_longOptions valueForKey:
					    iter2->longOption] != NULL)
						@throw
						    [OFInvalidArgumentException
						    exception];

				[_longOptions setValue: iter2
						forKey: iter2->longOption];
			} @catch (id e) {
				/*
				 * Make sure we are in a consistent state where
				 * dealloc works.
				 */
				[iter2->longOption release];
					[_longOptions
					    setValue: iter2
					      forKey: iter2->longOption];
				} @catch (id e) {
					/*
					 * Make sure we are in a consistent
					 * state where dealloc works.
					 */
					[iter2->longOption release];

				iter2->shortOption = '\0';
				iter2->longOption = nil;
					iter2->shortOption = '\0';
					iter2->longOption = nil;

				@throw e;
					@throw e;
				}
			}
		}

		_arguments = [[OFApplication arguments] retain];
	} @catch (id e) {
		[self release];
		@throw e;