Index: Source/NSProcessInfo.m
===================================================================
--- Source/NSProcessInfo.m	(revision 27580)
+++ Source/NSProcessInfo.m	(working copy)
@@ -91,6 +91,7 @@
 #include <kvm.h>
 #include <fcntl.h>
 #include <sys/param.h>
+#include <sys/sysctl.h>
 #endif /* HAVE_KVM_ENV */
 
 #ifdef HAVE_SYS_SYSCTL_H
Index: Source/NSEnumerator.m
===================================================================
--- Source/NSEnumerator.m	(revision 27580)
+++ Source/NSEnumerator.m	(working copy)
@@ -74,4 +74,21 @@
   return nil;
 }
 
+- (NSUInteger) countByEnumeratingWithState:(NSFastEnumerationState *)state 	
+								   objects:(id *)stackbuf
+									 count:(NSUInteger)len
+{
+	IMP nextObject = [self methodForSelector:@selector(nextObject)];
+	int i;
+	for (i=0 ; i<len ; i++)
+	{
+		id next = nextObject(self, @selector(nextObject));
+		if (nil == next)
+		{
+			return i;
+		}
+		*(stackbuf+i) = next;
+	}
+	return len;
+}
 @end
Index: Headers/Foundation/NSEnumerator.h
===================================================================
--- Headers/Foundation/NSEnumerator.h	(revision 27580)
+++ Headers/Foundation/NSEnumerator.h	(working copy)
@@ -34,7 +34,21 @@
 extern "C" {
 #endif
 
-@interface NSEnumerator : NSObject
+typedef struct 
+{
+	unsigned long state;
+	id *itemsPtr;
+	unsigned long *mutationsPtr;
+	unsigned long extra[5];
+} NSFastEnumerationState;
+
+@protocol NSFastEnumeration
+- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state 
+								  objects:(id *)stackbuf
+								   	count:(NSUInteger)len;
+@end
+
+@interface NSEnumerator : NSObject <NSFastEnumeration>
 - (NSArray *) allObjects;
 - (id) nextObject;
 @end
