all stx macros begin with double underline (eg. __qClass instead of _qClass)
authorClaus Gittinger <cg@exept.de>
Tue, 21 May 2013 22:44:47 +0200
changeset 15262 5047292c9107
parent 15261 a4b1efbb3750
child 15263 06bf31b1a170
all stx macros begin with double underline (eg. __qClass instead of _qClass)
Behavior.st
Character.st
ExternalBytes.st
LargeInteger.st
ReadStream.st
String.st
UnixOperatingSystem.st
--- a/Behavior.st	Tue May 21 22:26:48 2013 +0200
+++ b/Behavior.st	Tue May 21 22:44:47 2013 +0200
@@ -813,24 +813,24 @@
 
     orderedTuples := OrderedCollection new:aCollectionOfClasses size.
     aCollectionOfClasses do:[:eachClass|
-        |sharedPools|
-        orderedTuples add:(Array with:eachClass with:eachClass superclass).
-        sharedPools := eachClass sharedPools.
-        sharedPools notEmptyOrNil ifTrue:[
-            orderedTuples add:((OrderedCollection with:eachClass) addAll:sharedPools).
-        ].
-        eachClass allPrivateClasses do:[:eachPrivateClass| |superClassOwner|
-            superClassOwner := eachPrivateClass superclass.
-            "take care of classes inheriting from nil or ProtoObject"
-            superClassOwner isBehavior ifTrue:[
-                superClassOwner := superClassOwner owningClassOrYourself.
-            ].
-            orderedTuples add:(Array with:eachPrivateClass with:superClassOwner).
-            sharedPools := eachPrivateClass sharedPools.
-            sharedPools notEmptyOrNil ifTrue:[
-                orderedTuples add:((OrderedCollection with:eachPrivateClass) addAll:sharedPools).
-            ].
-        ].
+	|sharedPools|
+	orderedTuples add:(Array with:eachClass with:eachClass superclass).
+	sharedPools := eachClass sharedPools.
+	sharedPools notEmptyOrNil ifTrue:[
+	    orderedTuples add:((OrderedCollection with:eachClass) addAll:sharedPools).
+	].
+	eachClass allPrivateClasses do:[:eachPrivateClass| |superClassOwner|
+	    superClassOwner := eachPrivateClass superclass.
+	    "take care of classes inheriting from nil or ProtoObject"
+	    superClassOwner isBehavior ifTrue:[
+		superClassOwner := superClassOwner owningClassOrYourself.
+	    ].
+	    orderedTuples add:(Array with:eachPrivateClass with:superClassOwner).
+	    sharedPools := eachPrivateClass sharedPools.
+	    sharedPools notEmptyOrNil ifTrue:[
+		orderedTuples add:((OrderedCollection with:eachPrivateClass) addAll:sharedPools).
+	    ].
+	].
     ].
 
     "I am only interested in my classes"
@@ -861,59 +861,59 @@
     classesInLoadOrder := OrderedCollection new:(remaining size).
 
     [remaining notEmpty] whileTrue:[
-        |thoseWithOtherSuperclasses thoseWhichCanBeLoadedNow|
-
-        "find the next class(es) to be loaded.
-         Consider first:
-            all those, which do not have a superclass in the remaining set.
-            and which do not use a shared pool defined in the remaining set"
-
-        thoseWithOtherSuperclasses :=
-            remaining
-                reject:[:eachClass |
-                    (remaining includes:eachClass superclass)
-                    or:[eachClass sharedPoolNames contains:[:eachPoolSymbol|
-                            remaining contains:[:eachRemainingClass| eachPoolSymbol = eachRemainingClass name]
-                        ]
-                    ].
-                ].
-
-        "second: the subset with all those having no private classes,
-                 or having private classes, whose superclasses are NOT in the remaining set,
-                 or having private classes which do not use a shared pool in the remaining set"
-
-        thoseWhichCanBeLoadedNow :=
-            thoseWithOtherSuperclasses
-                reject:[:eachClass |
-                    eachClass allPrivateClasses contains:[:eachPrivateClass| 
-                        |superClassesOwner sharedPools|
-                        superClassesOwner := eachPrivateClass superclass.
-                        "take care of classes inheriting from nil or ProtoObject"
-                        superClassesOwner isBehavior ifTrue:[
-                            superClassesOwner := superClassesOwner owningClassOrYourself.
-                        ].
-                        sharedPools := eachPrivateClass sharedPools.
-                        (superClassesOwner ~~ eachClass
-                            and:[remaining includes:superClassesOwner])
-                        or:[remaining includesAny:sharedPools]
-                    ].
-                ].
-
-        thoseWhichCanBeLoadedNow isEmpty ifTrue:[
-            thoseWithOtherSuperclasses isEmpty ifTrue:[
-                "this does not normally happen"
-                self error:'superclass order is cyclic'.
-            ] ifFalse:[
-                "no class found, that may be loaded - maybe there is a cyclic
-                 dependency involving private classes.
-                 If you proceed here, private class dependencies are ignored
-                 for this pass"
-                self error:'load order is cyclic (care for private classes)' mayProceed:true.
-                thoseWhichCanBeLoadedNow := thoseWithOtherSuperclasses.
-            ].
-        ].
-        remaining removeAllFoundIn:thoseWhichCanBeLoadedNow.
-        classesInLoadOrder addAll:(thoseWhichCanBeLoadedNow sort:[:a :b | a name < b name]).
+	|thoseWithOtherSuperclasses thoseWhichCanBeLoadedNow|
+
+	"find the next class(es) to be loaded.
+	 Consider first:
+	    all those, which do not have a superclass in the remaining set.
+	    and which do not use a shared pool defined in the remaining set"
+
+	thoseWithOtherSuperclasses :=
+	    remaining
+		reject:[:eachClass |
+		    (remaining includes:eachClass superclass)
+		    or:[eachClass sharedPoolNames contains:[:eachPoolSymbol|
+			    remaining contains:[:eachRemainingClass| eachPoolSymbol = eachRemainingClass name]
+			]
+		    ].
+		].
+
+	"second: the subset with all those having no private classes,
+		 or having private classes, whose superclasses are NOT in the remaining set,
+		 or having private classes which do not use a shared pool in the remaining set"
+
+	thoseWhichCanBeLoadedNow :=
+	    thoseWithOtherSuperclasses
+		reject:[:eachClass |
+		    eachClass allPrivateClasses contains:[:eachPrivateClass|
+			|superClassesOwner sharedPools|
+			superClassesOwner := eachPrivateClass superclass.
+			"take care of classes inheriting from nil or ProtoObject"
+			superClassesOwner isBehavior ifTrue:[
+			    superClassesOwner := superClassesOwner owningClassOrYourself.
+			].
+			sharedPools := eachPrivateClass sharedPools.
+			(superClassesOwner ~~ eachClass
+			    and:[remaining includes:superClassesOwner])
+			or:[remaining includesAny:sharedPools]
+		    ].
+		].
+
+	thoseWhichCanBeLoadedNow isEmpty ifTrue:[
+	    thoseWithOtherSuperclasses isEmpty ifTrue:[
+		"this does not normally happen"
+		self error:'superclass order is cyclic'.
+	    ] ifFalse:[
+		"no class found, that may be loaded - maybe there is a cyclic
+		 dependency involving private classes.
+		 If you proceed here, private class dependencies are ignored
+		 for this pass"
+		self error:'load order is cyclic (care for private classes)' mayProceed:true.
+		thoseWhichCanBeLoadedNow := thoseWithOtherSuperclasses.
+	    ].
+	].
+	remaining removeAllFoundIn:thoseWhichCanBeLoadedNow.
+	classesInLoadOrder addAll:(thoseWhichCanBeLoadedNow sort:[:a :b | a name < b name]).
     ].
     ^ classesInLoadOrder
 
@@ -1241,30 +1241,30 @@
     |oldMethod ns nsName selector newLookupObject|
 
     (newSelector isMemberOf:Symbol) ifFalse:[
-        self error:'invalid selector'.
+	self error:'invalid selector'.
     ].
 
     ns := newMethod nameSpace.
     (ns notNil and:[(nsName := ns name) ~= self programmingLanguage defaultSelectorNameSpacePrefix]) ifTrue:[
-        selector := (':' , nsName , '::' , newSelector) asSymbol.
-        newLookupObject := Smalltalk at: #NamespaceAwareLookup. "/ so it can be nilled to disable that feature
+	selector := (':' , nsName , '::' , newSelector) asSymbol.
+	newLookupObject := Smalltalk at: #NamespaceAwareLookup. "/ so it can be nilled to disable that feature
     ] ifFalse:[
-        selector := newSelector
+	selector := newSelector
     ].
 
     "/ Q (cg): isn't that something that the caller should decide?
     oldMethod := self compiledMethodAt:selector.
     oldMethod notNil ifTrue:[
-        newMethod restricted:(oldMethod isRestricted).
-        newMethod setPrivacy:(oldMethod privacy) flushCaches:false.
+	newMethod restricted:(oldMethod isRestricted).
+	newMethod setPrivacy:(oldMethod privacy) flushCaches:false.
     ].
 
     (self primAddSelector:selector withMethod:newMethod) ifFalse:[^ false].
 
     newLookupObject notNil ifTrue:[
-        lookupObject ~= newLookupObject ifTrue:[
-            self lookupObject: newLookupObject
-        ]
+	lookupObject ~= newLookupObject ifTrue:[
+	    self lookupObject: newLookupObject
+	]
     ].
 
     "
@@ -1274,12 +1274,12 @@
     "
 "
     problem: this is slower; since looking for all subclasses is (currently)
-             a bit slow :-(
-             We need the hasSubclasses-info bit in Behavior; now
+	     a bit slow :-(
+	     We need the hasSubclasses-info bit in Behavior; now
 
     self withAllSubclassesDo:[:aClass |
-        ObjectMemory flushInlineCachesFor:aClass withArgs:nargs.
-        ObjectMemory flushMethodCacheFor:aClass
+	ObjectMemory flushInlineCachesFor:aClass withArgs:nargs.
+	ObjectMemory flushMethodCacheFor:aClass
     ].
 "
 
@@ -2105,114 +2105,114 @@
      * (i.e. if no GC is needed, we fall through without a branch)
      */
     if (nextPtr < (char *)__newEndPtr) {
-        _objPtr(newobj)->o_size = instsize;
-        /* o_allFlags(newobj) = 0;              */
-        /* _objPtr(newobj)->o_space = __newSpace; */
-        o_setAllFlags(newobj, __newSpace);
+	__objPtr(newobj)->o_size = instsize;
+	/* o_allFlags(newobj) = 0;              */
+	/* __objPtr(newobj)->o_space = __newSpace; */
+	o_setAllFlags(newobj, __newSpace);
 #ifdef __HAS_ALIGN4__
-        /*
-         * if the alignment is 4, we are already sat,
-         * since a non-indexed object always has a word-aligned size.
-         */
-        __newNextPtr = nextPtr;
+	/*
+	 * if the alignment is 4, we are already sat,
+	 * since a non-indexed object always has a word-aligned size.
+	 */
+	__newNextPtr = nextPtr;
 #else
-        if (instsize & (__ALIGN__-1)) {
-            __newNextPtr = (char *)newobj + (instsize & ~(__ALIGN__-1)) + __ALIGN__;
-        } else {
-            __newNextPtr = nextPtr;
-        }
+	if (instsize & (__ALIGN__-1)) {
+	    __newNextPtr = (char *)newobj + (instsize & ~(__ALIGN__-1)) + __ALIGN__;
+	} else {
+	    __newNextPtr = nextPtr;
+	}
 #endif
 
 ok:
-        __InstPtr(newobj)->o_class = self;
-        __qSTORE(newobj, self);
-
-        if (nInstVars) {
+	__InstPtr(newobj)->o_class = self;
+	__qSTORE(newobj, self);
+
+	if (nInstVars) {
 #if defined(memset4) && defined(FAST_OBJECT_MEMSET4) || defined(FAST_MEMSET4)
-            memset4(__InstPtr(newobj)->i_instvars, nil, nInstVars);
+	    memset4(__InstPtr(newobj)->i_instvars, nil, nInstVars);
 #else
-            REGISTER OBJ *op = __InstPtr(newobj)->i_instvars;
-
-            /*
-             * knowing that nil is 0
-             */
+	    REGISTER OBJ *op = __InstPtr(newobj)->i_instvars;
+
+	    /*
+	     * knowing that nil is 0
+	     */
 # if defined(FAST_OBJECT_MEMSET_DOUBLES_UNROLLED)
-            if (nInstVars > 8) {
-                *op++ = nil;    /* for alignment */
-                nInstVars--;
-                while (nInstVars >= 8) {
-                    *(double *)op = 0.0;
-                    ((double *)op)[1] = 0.0;
-                    ((double *)op)[2] = 0.0;
-                    ((double *)op)[3] = 0.0;
-                    op += 8;
-                    nInstVars -= 8;
-                }
-            }
-            while (nInstVars != 0) {
-                *op++ = 0;
-                nInstVars--;
-            }
+	    if (nInstVars > 8) {
+		*op++ = nil;    /* for alignment */
+		nInstVars--;
+		while (nInstVars >= 8) {
+		    *(double *)op = 0.0;
+		    ((double *)op)[1] = 0.0;
+		    ((double *)op)[2] = 0.0;
+		    ((double *)op)[3] = 0.0;
+		    op += 8;
+		    nInstVars -= 8;
+		}
+	    }
+	    while (nInstVars != 0) {
+		*op++ = 0;
+		nInstVars--;
+	    }
 # else
 #  if defined(FAST_OBJECT_MEMSET_LONGLONG_UNROLLED)
-            if (nInstVars > 8) {
-                *op++ = nil;    /* for alignment */
-                nInstVars--;
-                while (nInstVars >= 8) {
-                    *(long long *)op = 0;
-                    ((long long *)op)[1] = 0;
-                    ((long long *)op)[2] = 0;
-                    ((long long *)op)[3] = 0;
-                    op += 8;
-                    nInstVars -= 8;
-                }
-            }
-            while (nInstVars != 0) {
-                *op++ = 0;
-                nInstVars--;
-            }
+	    if (nInstVars > 8) {
+		*op++ = nil;    /* for alignment */
+		nInstVars--;
+		while (nInstVars >= 8) {
+		    *(long long *)op = 0;
+		    ((long long *)op)[1] = 0;
+		    ((long long *)op)[2] = 0;
+		    ((long long *)op)[3] = 0;
+		    op += 8;
+		    nInstVars -= 8;
+		}
+	    }
+	    while (nInstVars != 0) {
+		*op++ = 0;
+		nInstVars--;
+	    }
 
 #  else
 #   if defined(FAST_OBJECT_MEMSET_WORDS_UNROLLED)
-            while (nInstVars >= 8) {
-                *op = nil;
-                *(op+1) = nil;
-                *(op+2) = nil;
-                *(op+3) = nil;
-                *(op+4) = nil;
-                *(op+5) = nil;
-                *(op+6) = nil;
-                *(op+7) = nil;
-                op += 8;
-                nInstVars -= 8;
-            }
-            while (nInstVars != 0) {
-                *op++ = nil;
-                nInstVars--;
-            }
+	    while (nInstVars >= 8) {
+		*op = nil;
+		*(op+1) = nil;
+		*(op+2) = nil;
+		*(op+3) = nil;
+		*(op+4) = nil;
+		*(op+5) = nil;
+		*(op+6) = nil;
+		*(op+7) = nil;
+		op += 8;
+		nInstVars -= 8;
+	    }
+	    while (nInstVars != 0) {
+		*op++ = nil;
+		nInstVars--;
+	    }
 #   else
 #    if defined(FAST_MEMSET)
-            memset(__InstPtr(newobj)->i_instvars, 0, instsize-OHDR_SIZE);
+	    memset(__InstPtr(newobj)->i_instvars, 0, instsize-OHDR_SIZE);
 #    else
-            while (nInstVars >= 8) {
-                nInstVars -= 8;
-                op[0] = nil; op[1] = nil;
-                op[2] = nil; op[3] = nil;
-                op[4] = nil; op[5] = nil;
-                op[6] = nil; op[7] = nil;
-                op += 8;
-            }
-            while (nInstVars != 0) {
-                *op++ = nil;
-                nInstVars--;
-            }
+	    while (nInstVars >= 8) {
+		nInstVars -= 8;
+		op[0] = nil; op[1] = nil;
+		op[2] = nil; op[3] = nil;
+		op[4] = nil; op[5] = nil;
+		op[6] = nil; op[7] = nil;
+		op += 8;
+	    }
+	    while (nInstVars != 0) {
+		*op++ = nil;
+		nInstVars--;
+	    }
 #    endif
 #   endif
 #  endif
 # endif
 #endif
-        }
-        RETURN ( newobj );
+	}
+	RETURN ( newobj );
     }
 
     /*
@@ -2734,13 +2734,13 @@
      This is the reverse operation to 'storeOn:'.
 
      WARNING: storeOn: does not handle circular references and multiple
-              references to the same object.
-              Use #storeBinary:/readBinaryFrom: for this."
+	      references to the same object.
+	      Use #storeBinary:/readBinaryFrom: for this."
 
     ^ self
-        readFrom:aStream
-        onError:[ self conversionErrorSignal
-                    raiseWith:aStream errorString:'conversion error for: ' , self name ]
+	readFrom:aStream
+	onError:[ self conversionErrorSignal
+		    raiseWith:aStream errorString:'conversion error for: ' , self name ]
 
     "
      |s|
@@ -2950,13 +2950,13 @@
     "set the flags.
      This method is for special uses only - there will be no recompilation
      and no change record written here;
-     Warning: 
-        the flags slot specifies the layout and behavior of my instances slots
-        and affects both the VM's and the class library's behavior.
-        It is required to be consistent and correct.
-        Setting it to a wrong value may severely affect the system's operation,
-        and even crash the system (in the garbage collector).
-        Do NOT use it, unless you really know what you are doing."
+     Warning:
+	the flags slot specifies the layout and behavior of my instances slots
+	and affects both the VM's and the class library's behavior.
+	It is required to be consistent and correct.
+	Setting it to a wrong value may severely affect the system's operation,
+	and even crash the system (in the garbage collector).
+	Do NOT use it, unless you really know what you are doing."
 
     flags := aNumber
 !
@@ -2965,13 +2965,13 @@
     "set the instance size.
      This method is for special uses only - there will be no recompilation
      and no change record written here;
-     Warning: 
-        the instSize slot specifies the size of my instances and affects
-        both the VM's and the class library's behavior.
-        It is required to be consistent and correct.
-        Setting it to a wrong value may severely affect the system's operation,
-        and even crash the system (in the garbage collector).
-        Do NOT use it, unless you really know what you are doing."
+     Warning:
+	the instSize slot specifies the size of my instances and affects
+	both the VM's and the class library's behavior.
+	It is required to be consistent and correct.
+	Setting it to a wrong value may severely affect the system's operation,
+	and even crash the system (in the garbage collector).
+	Do NOT use it, unless you really know what you are doing."
 
     instSize := aNumber
 !
@@ -2989,16 +2989,16 @@
     |dict oldMethod|
 
     newMethod isNil ifTrue:[
-        self error:'invalid method'.
+	self error:'invalid method'.
     ].
 
     dict := self methodDictionary.
     oldMethod := dict at:aSelector ifAbsent:nil.
 
     (Smalltalk
-            changeRequest:#methodInClass
-            with:(Array with:self with:aSelector with:oldMethod)) ifFalse:[
-        ^ false
+	    changeRequest:#methodInClass
+	    with:(Array with:self with:aSelector with:oldMethod)) ifFalse:[
+	^ false
     ].
 
     self setMethodDictionary:(dict at:aSelector putOrAppend:newMethod).
@@ -4275,7 +4275,7 @@
 
     superclass := self superclass.
     superclass notNil ifTrue:[
-        ^ superclass allSelectors addAll:(self selectors); yourself.
+	^ superclass allSelectors addAll:(self selectors); yourself.
     ].
     ^ self selectors asNewIdentitySet
 
@@ -4316,12 +4316,12 @@
 
     "JV @ 2010-08-22: Rewritten to respect lookup object."
     (l := self lookupObject) notNil ifTrue:[
-        ^ (l
-            lookupMethodForSelector:aSelector
-            directedTo:self
-            for: nil "Fake receiver"
-                withArguments: nil "Fake arguments"
-                from: thisContext methodHome sender) notNil
+	^ (l
+	    lookupMethodForSelector:aSelector
+	    directedTo:self
+	    for: nil "Fake receiver"
+		withArguments: nil "Fake arguments"
+		from: thisContext methodHome sender) notNil
     ].
 
     "Original implementation"
@@ -4507,14 +4507,14 @@
      This is semantically equivalent to implements: (ST/80/Squeak compatibility).
 
      Hint:
-        Don't use this method to check if someone responds to a message -
-        use #canUnderstand: on the class or #respondsTo: on the instance
-        to do this.
+	Don't use this method to check if someone responds to a message -
+	use #canUnderstand: on the class or #respondsTo: on the instance
+	to do this.
 
      Caveat:
-        This simply checks for the selector being present in the classes
-        selector table - therefore, it does not care for ignoredMethods.
-        (but: you should not use this method for protocol-testing, anyway)."
+	This simply checks for the selector being present in the classes
+	selector table - therefore, it does not care for ignoredMethods.
+	(but: you should not use this method for protocol-testing, anyway)."
 
     ^ self methodDictionary includesIdenticalKey:aSelector
 
@@ -4546,27 +4546,27 @@
 
     "JV @ 2010-08-22: Rewritten to respect lookup object."
     (l := self lookupObject) notNil ifTrue:[
-        ^ (l
-            lookupMethodForSelector:aSelector
-            directedTo:self
-            for: nil "Fake receiver"
-                withArguments: nil "Fake arguments"
-                from: thisContext methodHome sender)
+	^ (l
+	    lookupMethodForSelector:aSelector
+	    directedTo:self
+	    for: nil "Fake receiver"
+		withArguments: nil "Fake arguments"
+		from: thisContext methodHome sender)
     ].
 
     cls := self.
     [cls notNil] whileTrue:[
-        m := cls compiledMethodAt:aSelector.
-        m notNil ifTrue:[^ m].
-        cls hasMultipleSuperclasses ifTrue:[
-            cls superclasses do:[:aSuperClass |
-                m := aSuperClass lookupMethodFor:aSelector.
-                m notNil ifTrue:[^ m].
-            ].
-            ^ nil
-        ] ifFalse:[
-            cls := cls superclass
-        ]
+	m := cls compiledMethodAt:aSelector.
+	m notNil ifTrue:[^ m].
+	cls hasMultipleSuperclasses ifTrue:[
+	    cls superclasses do:[:aSuperClass |
+		m := aSuperClass lookupMethodFor:aSelector.
+		m notNil ifTrue:[^ m].
+	    ].
+	    ^ nil
+	] ifFalse:[
+	    cls := cls superclass
+	]
     ].
     ^ nil
 !
@@ -4952,10 +4952,10 @@
 !Behavior class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.342 2013-05-08 07:54:34 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.343 2013-05-21 20:44:47 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.342 2013-05-08 07:54:34 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.343 2013-05-21 20:44:47 cg Exp $'
 ! !
 
--- a/Character.st	Tue May 21 22:26:48 2013 +0200
+++ b/Character.st	Tue May 21 22:44:47 2013 +0200
@@ -979,7 +979,7 @@
     OBJ s;
     unsigned INT val;
 
-    val = __intVal(_characterVal(self));
+    val = __intVal(__characterVal(self));
     if (val <= 0xFF) {
 	buffer[0] = (char) val;
 	buffer[1] = '\0';
@@ -2815,9 +2815,9 @@
 !Character class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Character.st,v 1.145 2013-01-23 10:46:37 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Character.st,v 1.146 2013-05-21 20:44:47 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Character.st,v 1.145 2013-01-23 10:46:37 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Character.st,v 1.146 2013-05-21 20:44:47 cg Exp $'
 ! !
--- a/ExternalBytes.st	Tue May 21 22:26:48 2013 +0200
+++ b/ExternalBytes.st	Tue May 21 22:44:47 2013 +0200
@@ -699,7 +699,7 @@
     if (__isSmallInteger(value)) {
 	val = __smallIntegerVal(value);
     } else if (__isCharacter(value)) {
-	val = __smallIntegerVal(_characterVal(value));
+	val = __smallIntegerVal(__characterVal(value));
     } else
 	goto badArg;
 
@@ -1316,11 +1316,11 @@
 !ExternalBytes class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalBytes.st,v 1.88 2013-03-29 15:06:53 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalBytes.st,v 1.89 2013-05-21 20:44:47 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalBytes.st,v 1.88 2013-03-29 15:06:53 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalBytes.st,v 1.89 2013-05-21 20:44:47 cg Exp $'
 ! !
 
 
--- a/LargeInteger.st	Tue May 21 22:26:48 2013 +0200
+++ b/LargeInteger.st	Tue May 21 22:44:47 2013 +0200
@@ -1139,7 +1139,7 @@
 	unsigned char *__bP = __byteArrayVal(__digitByteArray);
 	unsigned char *__bP0 = __bP;
 
-	sz = _MKSMALLINT(__sz);
+	sz = __MKSMALLINT(__sz);
 
 #ifdef __UNROLL_LOOPS__
 	while (__sz > (sizeof(INT) * 4)) {
@@ -3592,9 +3592,9 @@
     len2 := otherDigitByteArray size.
 
     len1 > len2 ifTrue:[
-        lResult := len1
+	lResult := len1
     ] ifFalse:[
-        lResult := (len1 max: len2) + 1.
+	lResult := (len1 max: len2) + 1.
     ].
     result := self class basicNew numberOfDigits:lResult.
     result sign:newSign.
@@ -3608,202 +3608,202 @@
     if (__isByteArray(_digitByteArray)
      && __isByteArray(otherDigitByteArray)
      && __isByteArray(resultDigitByteArray)) {
-        int __len1 = __intVal(len1);
-        int __len2 = __intVal(len2);
-        int __minLen = __len1 < __len2 ? __len1 : __len2;
-        int __index, __borrow = 0;
-        INT __diff;
-        unsigned char *__myDigits, *__otherDigits, *__resultDigits;
-
-        ok = true;
-
-        __resultDigits = __ByteArrayInstPtr(resultDigitByteArray)->ba_element;
-        __otherDigits = __ByteArrayInstPtr(otherDigitByteArray)->ba_element;
-        __myDigits = __ByteArrayInstPtr(_digitByteArray)->ba_element;
-
-        __index = 1;
+	int __len1 = __intVal(len1);
+	int __len2 = __intVal(len2);
+	int __minLen = __len1 < __len2 ? __len1 : __len2;
+	int __index, __borrow = 0;
+	INT __diff;
+	unsigned char *__myDigits, *__otherDigits, *__resultDigits;
+
+	ok = true;
+
+	__resultDigits = __ByteArrayInstPtr(resultDigitByteArray)->ba_element;
+	__otherDigits = __ByteArrayInstPtr(otherDigitByteArray)->ba_element;
+	__myDigits = __ByteArrayInstPtr(_digitByteArray)->ba_element;
+
+	__index = 1;
 
 #if defined(__LSBFIRST__)
 # if __POINTER_SIZE__ == 8
-        /*
-         * subtract int-wise
-         */
-        while ((__index+3) <= __minLen) {
-            /* do not make this into one expression - ask cg why */
-            __diff = ((unsigned int *)(__myDigits+__index-1))[0];
-            __diff -= ((unsigned int *)(__otherDigits+__index-1))[0];
-            __diff -= __borrow;
-
-            if (__diff >= 0) {
-                __borrow = 0;
-            } else {
-                __borrow = 1;
-                /* __diff += 0x10000; */
-            }
-            ((unsigned int *)(__resultDigits+__index-1))[0] = __diff;
-            __index += 4;
-        }
+	/*
+	 * subtract int-wise
+	 */
+	while ((__index+3) <= __minLen) {
+	    /* do not make this into one expression - ask cg why */
+	    __diff = ((unsigned int *)(__myDigits+__index-1))[0];
+	    __diff -= ((unsigned int *)(__otherDigits+__index-1))[0];
+	    __diff -= __borrow;
+
+	    if (__diff >= 0) {
+		__borrow = 0;
+	    } else {
+		__borrow = 1;
+		/* __diff += 0x10000; */
+	    }
+	    ((unsigned int *)(__resultDigits+__index-1))[0] = __diff;
+	    __index += 4;
+	}
 # endif /* 64bit */
 
-        /*
-         * subtract short-wise
-         */
-        while (__index < __minLen) {   /* i.e. index+1 <= minLen */
-            /* do not make this into one expression - ask cg why */
-            __diff = ((unsigned short *)(__myDigits+__index-1))[0];
-            __diff -= ((unsigned short *)(__otherDigits+__index-1))[0];
-            __diff -= __borrow;
-            if (__diff >= 0) {
-                __borrow = 0;
-            } else {
-                __borrow = 1;
-                /* __diff += 0x10000; */
-            }
-            ((unsigned short *)(__resultDigits+__index-1))[0] = __diff;
-            __index += 2;
-        }
-
-        if (__index == __minLen) {
-            /* one of the operands has odd length - cannot continue short-wise */
-        } else {
-            if (__len1 > __len2) {
-                while (__index < __len1) {
-                    /* do not make this into one expression - ask cg why */
-                    __diff = ((unsigned short *)(__myDigits+__index-1))[0];
-                    __diff -= __borrow;
-                    if (__diff >= 0) {
-                        __borrow = 0;
-                        ((unsigned short *)(__resultDigits+__index-1))[0] = __diff;
-                        __index += 2;
-
-                        /* copy over rest */
-                        while (__index < __len1) {
-                            ((unsigned short *)(__resultDigits+__index-1))[0] = ((unsigned short *)(__myDigits+__index-1))[0];
-                            __index+=2;
-                        }
-                        if (__index <= __len1) {
-                            __resultDigits[__index-1] = __myDigits[__index-1];
-                            __index++;
-                        }
-                        break;
-                    }
-                    __borrow = 1;
-                    /* __diff += 0x10000; */
-                    ((unsigned short *)(__resultDigits+__index-1))[0] = __diff;
-                    __index += 2;
-                }
-            } else {
-                if (__len2 > __len1) {
-                    while (__index < __len2) {
-                        /* do not make this into one expression - ask cg why */
-                        __diff = 0;
-                        __diff -= ((unsigned short *)(__otherDigits+__index-1))[0];
-                        __diff -= __borrow;
-                        if (__diff >= 0) {
-                            __borrow = 0;
-                        } else {
-                            __borrow = 1;
-                            /* __diff += 0x10000; */
-                        }
-                        ((unsigned short *)(__resultDigits+__index-1))[0] = __diff;
-                        __index += 2;
-                    }
-                }
-            }
-        }
+	/*
+	 * subtract short-wise
+	 */
+	while (__index < __minLen) {   /* i.e. index+1 <= minLen */
+	    /* do not make this into one expression - ask cg why */
+	    __diff = ((unsigned short *)(__myDigits+__index-1))[0];
+	    __diff -= ((unsigned short *)(__otherDigits+__index-1))[0];
+	    __diff -= __borrow;
+	    if (__diff >= 0) {
+		__borrow = 0;
+	    } else {
+		__borrow = 1;
+		/* __diff += 0x10000; */
+	    }
+	    ((unsigned short *)(__resultDigits+__index-1))[0] = __diff;
+	    __index += 2;
+	}
+
+	if (__index == __minLen) {
+	    /* one of the operands has odd length - cannot continue short-wise */
+	} else {
+	    if (__len1 > __len2) {
+		while (__index < __len1) {
+		    /* do not make this into one expression - ask cg why */
+		    __diff = ((unsigned short *)(__myDigits+__index-1))[0];
+		    __diff -= __borrow;
+		    if (__diff >= 0) {
+			__borrow = 0;
+			((unsigned short *)(__resultDigits+__index-1))[0] = __diff;
+			__index += 2;
+
+			/* copy over rest */
+			while (__index < __len1) {
+			    ((unsigned short *)(__resultDigits+__index-1))[0] = ((unsigned short *)(__myDigits+__index-1))[0];
+			    __index+=2;
+			}
+			if (__index <= __len1) {
+			    __resultDigits[__index-1] = __myDigits[__index-1];
+			    __index++;
+			}
+			break;
+		    }
+		    __borrow = 1;
+		    /* __diff += 0x10000; */
+		    ((unsigned short *)(__resultDigits+__index-1))[0] = __diff;
+		    __index += 2;
+		}
+	    } else {
+		if (__len2 > __len1) {
+		    while (__index < __len2) {
+			/* do not make this into one expression - ask cg why */
+			__diff = 0;
+			__diff -= ((unsigned short *)(__otherDigits+__index-1))[0];
+			__diff -= __borrow;
+			if (__diff >= 0) {
+			    __borrow = 0;
+			} else {
+			    __borrow = 1;
+			    /* __diff += 0x10000; */
+			}
+			((unsigned short *)(__resultDigits+__index-1))[0] = __diff;
+			__index += 2;
+		    }
+		}
+	    }
+	}
 #endif
-        /*
-         * subtract byte-wise
-         */
-        while (__index <= __minLen) {
-            /* do not make this into one expression - ask cg why */
-            __diff = __myDigits[__index-1];
-            __diff -= __otherDigits[__index-1];
-            __diff -= __borrow;
-            if (__diff >= 0) {
-                __borrow = 0;
-            } else {
-                __borrow = 1;
-                /* __diff += 0x100; */
-            }
-            __resultDigits[__index-1] = __diff;
-            __index++;
-        }
-
-        if (__len1 > __len2) {
-            while (__index <= __len1) {
-                /* do not make this into one expression - ask cg why */
-                __diff = __myDigits[__index-1];
-                __diff -= __borrow;
-                if (__diff >= 0) {
-                    __borrow = 0;
-                    /* copy over rest */
-                    __resultDigits[__index-1] = __diff;
-                    __index++;
-                    while (__index <= __len1) {
-                        __resultDigits[__index-1] = __myDigits[__index-1];
-                        __index++;
-                    }
-                    break;
-                }
-                __borrow = 1;
-                /* __diff += 0x100; */
-                __resultDigits[__index-1] = __diff;
-                __index++;
-            }
-        } else {
-            if (__len2 > __len1) {
-                while (__index <= __len2) {
-                    /* do not make this into one expression - ask cg why */
-                    __diff = 0;
-                    __diff -= __otherDigits[__index-1];
-                    __diff -= __borrow;
-                    if (__diff >= 0) {
-                        __borrow = 0;
-                    } else {
-                        __borrow = 1;
-                        /* __diff += 0x100; */
-                    }
-                    __resultDigits[__index-1] = __diff;
-                    __index++;
-                }
-            }
-        }
-        borrow = __mkSmallInteger(__borrow);
-        index = __mkSmallInteger(__index);
-        lastDigit = __mkSmallInteger(__resultDigits[__intVal(lResult)-1]);
+	/*
+	 * subtract byte-wise
+	 */
+	while (__index <= __minLen) {
+	    /* do not make this into one expression - ask cg why */
+	    __diff = __myDigits[__index-1];
+	    __diff -= __otherDigits[__index-1];
+	    __diff -= __borrow;
+	    if (__diff >= 0) {
+		__borrow = 0;
+	    } else {
+		__borrow = 1;
+		/* __diff += 0x100; */
+	    }
+	    __resultDigits[__index-1] = __diff;
+	    __index++;
+	}
+
+	if (__len1 > __len2) {
+	    while (__index <= __len1) {
+		/* do not make this into one expression - ask cg why */
+		__diff = __myDigits[__index-1];
+		__diff -= __borrow;
+		if (__diff >= 0) {
+		    __borrow = 0;
+		    /* copy over rest */
+		    __resultDigits[__index-1] = __diff;
+		    __index++;
+		    while (__index <= __len1) {
+			__resultDigits[__index-1] = __myDigits[__index-1];
+			__index++;
+		    }
+		    break;
+		}
+		__borrow = 1;
+		/* __diff += 0x100; */
+		__resultDigits[__index-1] = __diff;
+		__index++;
+	    }
+	} else {
+	    if (__len2 > __len1) {
+		while (__index <= __len2) {
+		    /* do not make this into one expression - ask cg why */
+		    __diff = 0;
+		    __diff -= __otherDigits[__index-1];
+		    __diff -= __borrow;
+		    if (__diff >= 0) {
+			__borrow = 0;
+		    } else {
+			__borrow = 1;
+			/* __diff += 0x100; */
+		    }
+		    __resultDigits[__index-1] = __diff;
+		    __index++;
+		}
+	    }
+	}
+	borrow = __mkSmallInteger(__borrow);
+	index = __mkSmallInteger(__index);
+	lastDigit = __mkSmallInteger(__resultDigits[__intVal(lResult)-1]);
     }
 %}.
     ok == true ifFalse:[
-        index := 1.
-        borrow := 0.
-
-        done := false.
-        [done] whileFalse:[
-            diff := borrow.
-            (index <= len1) ifTrue:[
-                diff := diff + (digitByteArray basicAt:index).
-                (index <= len2) ifTrue:[
-                    diff := diff - (otherDigitByteArray basicAt:index)
-                ]
-            ] ifFalse:[
-                (index <= len2) ifTrue:[
-                    diff := diff - (otherDigitByteArray basicAt:index)
-                ] ifFalse:[
-                    "end reached"
-                    done := true
-                ]
-            ].
-
-            "/ workaround for
-            "/ gcc code generator bug
-
-            (diff >= 0) ifTrue:[
-                borrow := 0
-            ] ifFalse:[
-                borrow := -1.
-                diff := diff + 16r100
-            ].
+	index := 1.
+	borrow := 0.
+
+	done := false.
+	[done] whileFalse:[
+	    diff := borrow.
+	    (index <= len1) ifTrue:[
+		diff := diff + (digitByteArray basicAt:index).
+		(index <= len2) ifTrue:[
+		    diff := diff - (otherDigitByteArray basicAt:index)
+		]
+	    ] ifFalse:[
+		(index <= len2) ifTrue:[
+		    diff := diff - (otherDigitByteArray basicAt:index)
+		] ifFalse:[
+		    "end reached"
+		    done := true
+		]
+	    ].
+
+	    "/ workaround for
+	    "/ gcc code generator bug
+
+	    (diff >= 0) ifTrue:[
+		borrow := 0
+	    ] ifFalse:[
+		borrow := -1.
+		diff := diff + 16r100
+	    ].
 
     "/        (diff < 0) ifTrue:[
     "/            borrow := -1.
@@ -3812,40 +3812,40 @@
     "/            borrow := 0
     "/        ].
 
-            resultDigitByteArray basicAt:index put:diff.
-            index := index + 1
-        ].
-        lastDigit := resultDigitByteArray basicAt:lResult.
+	    resultDigitByteArray basicAt:index put:diff.
+	    index := index + 1
+	].
+	lastDigit := resultDigitByteArray basicAt:lResult.
     ].
 
     (borrow ~~ 0) ifTrue:[
-        "/ must generate 255's complement
-
-        result sign:newSign negated.
-        [index <= lResult] whileTrue:[
-            resultDigitByteArray basicAt:index put:16rFF.
-            index := index + 1.
-        ].
-        index := lResult.
-        [index > 0] whileTrue:[
-            resultDigitByteArray basicAt:index put:(255 - (resultDigitByteArray at:index)).
-            index := index - 1.
-        ].
-
-        index := 1.
-        carry := 1.
-        [carry ~~ 0] whileTrue:[
-            (index <= lResult) ifTrue:[
-                carry := (resultDigitByteArray basicAt:index) + carry.
-            ].
-            resultDigitByteArray basicAt:index put:(carry bitAnd:16rFF).
-            carry := carry bitShift:-8.
-            index := index + 1
-        ].
-        lastDigit := resultDigitByteArray basicAt:lResult.
+	"/ must generate 255's complement
+
+	result sign:newSign negated.
+	[index <= lResult] whileTrue:[
+	    resultDigitByteArray basicAt:index put:16rFF.
+	    index := index + 1.
+	].
+	index := lResult.
+	[index > 0] whileTrue:[
+	    resultDigitByteArray basicAt:index put:(255 - (resultDigitByteArray at:index)).
+	    index := index - 1.
+	].
+
+	index := 1.
+	carry := 1.
+	[carry ~~ 0] whileTrue:[
+	    (index <= lResult) ifTrue:[
+		carry := (resultDigitByteArray basicAt:index) + carry.
+	    ].
+	    resultDigitByteArray basicAt:index put:(carry bitAnd:16rFF).
+	    carry := carry bitShift:-8.
+	    index := index + 1
+	].
+	lastDigit := resultDigitByteArray basicAt:lResult.
     ].
     (lastDigit == 0 or:[lResult <= SmallInteger maxBytes]) ifTrue:[
-        ^ result compressed.
+	^ result compressed.
     ].
     ^ result
 
@@ -5206,10 +5206,10 @@
 !LargeInteger class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.208 2013-05-13 14:56:04 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.209 2013-05-21 20:44:47 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.208 2013-05-13 14:56:04 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.209 2013-05-21 20:44:47 cg Exp $'
 ! !
 
--- a/ReadStream.st	Tue May 21 22:26:48 2013 +0200
+++ b/ReadStream.st	Tue May 21 22:44:47 2013 +0200
@@ -36,7 +36,7 @@
 
 documentation
 "
-    ReadStream defines protocol for reading streamwise over collections. 
+    ReadStream defines protocol for reading streamwise over collections.
 
     [author:]
 	Claus Gittinger
@@ -47,7 +47,7 @@
 !ReadStream class methodsFor:'blocked instance creation'!
 
 with:aCollection
-    "with on readStream makes no sense 
+    "with on readStream makes no sense
      - what do you want to read from the end of a collection?"
     <resource:#obsolete>
 
@@ -57,20 +57,20 @@
 
 !ReadStream methodsFor:'Compatibility-Dolphin'!
 
-skipWhile:aBlock 
+skipWhile:aBlock
     "skip all elements for which aBlock returns true. Return true if more elements can be read,
      false if eof has been reached."
 
     [self atEnd] whileFalse:[
-        (aBlock value: self peek) ifFalse:[^ true].
-        self next
+	(aBlock value: self peek) ifFalse:[^ true].
+	self next
     ].
     ^ false
 
     "
      #(1 2 3 4 5 6 7 8 9 10) readStream
-        skipWhile:[:el | el <= 5];
-        next
+	skipWhile:[:el | el <= 5];
+	next
     "
 
     "Created: / 23-09-2011 / 13:32:40 / cg"
@@ -100,7 +100,7 @@
 emphasis
     "return the emphasis of the current (i.e. next returned by #next)
      element. Streams on a string will return nil for all elements.
-     Streams on collections which nothing at all about emphasises, 
+     Streams on collections which nothing at all about emphasises,
      will report an error."
 
     ^ collection emphasisAt:(position - ZeroPosition + 1).
@@ -109,13 +109,13 @@
      |t s|
 
      t := 'hello world' asText
-                emphasizeFrom:1 to:5 with:#bold;
-                emphasizeFrom:7 to:11 with:#italic.
+		emphasizeFrom:1 to:5 with:#bold;
+		emphasizeFrom:7 to:11 with:#italic.
 
      s := t readStream.
      [s atEnd] whileFalse:[
-        Transcript show:(s emphasis); show:' '.
-        Transcript show:''''; show:(s next); showCR:''''.
+	Transcript show:(s emphasis); show:' '.
+	Transcript show:''''; show:(s next); showCR:''''.
      ].
     "
 
@@ -171,42 +171,42 @@
 
     if (__isNonNilObject(coll) && __bothSmallInteger(p, l)) {
 
-        pos = __intVal(p);
-        /* make 1-based */
-        pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
-        if (pos > 0 && pos <= __intVal(l)) {
-            OBJ cls, ret;
+	pos = __intVal(p);
+	/* make 1-based */
+	pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
+	if (pos > 0 && pos <= __intVal(l)) {
+	    OBJ cls, ret;
 
-            cls = __qClass(coll);
-            if (cls == @global(String)) {
-                if (pos <= __stringSize(coll)) {
-                    ch = __stringVal(coll)[pos-1];
-                    ret = __MKCHARACTER(ch);
-                    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
-                    RETURN ( ret );
-                }
-            } else if (cls == @global(ByteArray)) {
-                if (pos <= __byteArraySize(coll)) {
-                    ch = __ByteArrayInstPtr(coll)->ba_element[pos-1];
-                    ret = __mkSmallInteger(ch);
-                    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
-                    RETURN ( ret );
-                }
-            } else if (cls == @global(Unicode16String)) {
-                if (pos <= __unicode16StringSize(coll)) {
-                    ch = __Unicode16StringInstPtr(coll)->s_element[pos-1];
-                    ret = __MKUCHARACTER(ch);
-                    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
-                    RETURN ( ret );
-                }
-            } else if (cls == @global(Array)) {
-                if (pos <= __arraySize(coll)) {
-                    ret = __ArrayInstPtr(coll)->a_element[pos-1];
-                    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
-                    RETURN ( ret );
-                }
-            }
-        }
+	    cls = __qClass(coll);
+	    if (cls == @global(String)) {
+		if (pos <= __stringSize(coll)) {
+		    ch = __stringVal(coll)[pos-1];
+		    ret = __MKCHARACTER(ch);
+		    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
+		    RETURN ( ret );
+		}
+	    } else if (cls == @global(ByteArray)) {
+		if (pos <= __byteArraySize(coll)) {
+		    ch = __ByteArrayInstPtr(coll)->ba_element[pos-1];
+		    ret = __mkSmallInteger(ch);
+		    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
+		    RETURN ( ret );
+		}
+	    } else if (cls == @global(Unicode16String)) {
+		if (pos <= __unicode16StringSize(coll)) {
+		    ch = __Unicode16StringInstPtr(coll)->s_element[pos-1];
+		    ret = __MKUCHARACTER(ch);
+		    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
+		    RETURN ( ret );
+		}
+	    } else if (cls == @global(Array)) {
+		if (pos <= __arraySize(coll)) {
+		    ret = __ArrayInstPtr(coll)->a_element[pos-1];
+		    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
+		    RETURN ( ret );
+		}
+	    }
+	}
     }
 %}.
     ((position + 1 - ZeroPosition) > readLimit) ifTrue:[^ self pastEndRead].
@@ -222,19 +222,19 @@
     |answer|
 
     self contentsSpecies = collection class ifTrue:[
-        ((position + count - ZeroPosition) > readLimit) ifFalse:[
-            answer := collection copyFrom:position+1 to:position+count.
-            position := position+count.
-            ^ answer
-        ].
+	((position + count - ZeroPosition) > readLimit) ifFalse:[
+	    answer := collection copyFrom:position+1 to:position+count.
+	    position := position+count.
+	    ^ answer
+	].
     ].
     ^ super next:count
 
     "
      #[1 2 3 4 5 6 7 8 9] readStream
-        next;      
-        next:5;    
-        next.
+	next;
+	next:5;
+	next.
     "
 !
 
@@ -256,54 +256,54 @@
     coll = __INST(collection);
     p = __INST(position);
     l = __INST(readLimit);
-    
+
     if (__isStringLike(coll) && __bothSmallInteger(p, l)) {
 
-        pos = __intVal(p);
-        /* make 1-based */
-        pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
+	pos = __intVal(p);
+	/* make 1-based */
+	pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
 
-        limit = __intVal(l);
-        sz = __qSize(coll) - OHDR_SIZE;
-        if (sz < limit)
-            limit = sz; 
-        cp = __stringVal(coll) + pos - 1;
+	limit = __intVal(l);
+	sz = __qSize(coll) - OHDR_SIZE;
+	if (sz < limit)
+	    limit = sz;
+	cp = __stringVal(coll) + pos - 1;
 
-        for (;;) {
-            if (pos > limit) break;
-            ch = *cp;
+	for (;;) {
+	    if (pos > limit) break;
+	    ch = *cp;
 
-            if (((ch >= 'a') && (ch <= 'z')) ||
-                ((ch >= 'A') && (ch <= 'Z')) ||
-                ((ch >= '0') && (ch <= '9')))
-                break;
-            cp++;
-            pos++;
-        }
+	    if (((ch >= 'a') && (ch <= 'z')) ||
+		((ch >= 'A') && (ch <= 'Z')) ||
+		((ch >= '0') && (ch <= '9')))
+		break;
+	    cp++;
+	    pos++;
+	}
 
-        len = 0;
-        for (;;) {
-            if (pos > limit) break;
-            ch = *cp & 0xFF;
+	len = 0;
+	for (;;) {
+	    if (pos > limit) break;
+	    ch = *cp & 0xFF;
 
-            if (! (((ch >= 'a') && (ch <= 'z')) ||
-                   ((ch >= 'A') && (ch <= 'Z')) ||
-                   ((ch >= '0') && (ch <= '9'))))
-                break;
-            buffer[len++] = ch;
-            if (len >= (sizeof(buffer)-1)) {
-                /* emergency */
-                break;
-            }
-            pos++;
-            cp++;
-        }
+	    if (! (((ch >= 'a') && (ch <= 'z')) ||
+		   ((ch >= 'A') && (ch <= 'Z')) ||
+		   ((ch >= '0') && (ch <= '9'))))
+		break;
+	    buffer[len++] = ch;
+	    if (len >= (sizeof(buffer)-1)) {
+		/* emergency */
+		break;
+	    }
+	    pos++;
+	    cp++;
+	}
 
-        /* make ZeroPosition-based */
-        pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
-        __INST(position) = __mkSmallInteger(pos);
-        buffer[len] = '\0';
-        RETURN ( (len != 0) ? __MKSTRING_L(buffer, len) : nil );
+	/* make ZeroPosition-based */
+	pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
+	__INST(position) = __mkSmallInteger(pos);
+	buffer[len] = '\0';
+	RETURN ( (len != 0) ? __MKSTRING_L(buffer, len) : nil );
     }
 %}
 .
@@ -329,35 +329,35 @@
 
     if (__isNonNilObject(coll) && __bothSmallInteger(p, l)) {
 
-        pos = __intVal(p);
-        /* make 1-based */
-        pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
-        if (pos > 0 && pos <= __intVal(l)) {
-            OBJ cls, ret;
+	pos = __intVal(p);
+	/* make 1-based */
+	pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
+	if (pos > 0 && pos <= __intVal(l)) {
+	    OBJ cls, ret;
 
-            cls = __qClass(coll);
-            if (cls == @global(String)) {
-                if (pos <= __stringSize(coll)) {
-                    ch = __stringVal(coll)[pos-1];
-                    ret = __mkSmallInteger(ch);
-                    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
-                    RETURN ( ret );
-                }
-            } else if (cls == @global(ByteArray)) {
-                if (pos <= __byteArraySize(coll)) {
-                    ch = __ByteArrayInstPtr(coll)->ba_element[pos-1];
-                    ret = __mkSmallInteger(ch);
-                    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
-                    RETURN ( ret );
-                }
-            } else if (cls == @global(Array)) {
-                if (pos <= __arraySize(coll)) {
-                    ret = __ArrayInstPtr(coll)->a_element[pos-1];
-                    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
-                    RETURN ( ret );
-                }
-            }
-        }
+	    cls = __qClass(coll);
+	    if (cls == @global(String)) {
+		if (pos <= __stringSize(coll)) {
+		    ch = __stringVal(coll)[pos-1];
+		    ret = __mkSmallInteger(ch);
+		    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
+		    RETURN ( ret );
+		}
+	    } else if (cls == @global(ByteArray)) {
+		if (pos <= __byteArraySize(coll)) {
+		    ch = __ByteArrayInstPtr(coll)->ba_element[pos-1];
+		    ret = __mkSmallInteger(ch);
+		    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
+		    RETURN ( ret );
+		}
+	    } else if (cls == @global(Array)) {
+		if (pos <= __arraySize(coll)) {
+		    ret = __ArrayInstPtr(coll)->a_element[pos-1];
+		    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
+		    RETURN ( ret );
+		}
+	    }
+	}
     }
 %}.
     ((position + 1 - ZeroPosition) > readLimit) ifTrue:[^ self pastEndRead].
@@ -374,20 +374,20 @@
      The receiver must support reading of binary bytes.
 
      Notice: this method is provided here for protocol completeness
-             with externalStreams - it is normally not used with other
-             streams."
+	     with externalStreams - it is normally not used with other
+	     streams."
 
-    ((initialIndex + numBytes - 1) <= aCollection size 
-        and:[(position + numBytes) <= readLimit 
-        and:[collection isByteCollection 
-        and:[aCollection isByteCollection
+    ((initialIndex + numBytes - 1) <= aCollection size
+	and:[(position + numBytes) <= readLimit
+	and:[collection isByteCollection
+	and:[aCollection isByteCollection
     ]]]) ifTrue:[
-        "do it the fast way"
-        aCollection 
-            replaceBytesFrom:initialIndex to:(initialIndex + numBytes - 1) 
-            with:collection startingAt:position+1.
-        position := position + numBytes.
-        ^ numBytes
+	"do it the fast way"
+	aCollection
+	    replaceBytesFrom:initialIndex to:(initialIndex + numBytes - 1)
+	    with:collection startingAt:position+1.
+	position := position + numBytes.
+	^ numBytes
     ].
     "do it the hard way"
     ^ super nextBytes:numBytes into:aCollection startingAt:initialIndex
@@ -419,32 +419,32 @@
     coll = __INST(collection);
     p = __INST(position);
     l = __INST(readLimit);
-    
+
     if (__isStringLike(coll) && __bothSmallInteger(p, l)) {
 
-        pos = __intVal(p);
-        /* make 1-based */
-        pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
-        limit = __intVal(l);
-        sz = __qSize(coll) - OHDR_SIZE;
-        if (sz < limit)
-            limit = sz; 
-        cp = __stringVal(coll) + pos - 1;
+	pos = __intVal(p);
+	/* make 1-based */
+	pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
+	limit = __intVal(l);
+	sz = __qSize(coll) - OHDR_SIZE;
+	if (sz < limit)
+	    limit = sz;
+	cp = __stringVal(coll) + pos - 1;
 
-        for (;;) {
-            if (pos > limit) break;
-            ch = *cp;
+	for (;;) {
+	    if (pos > limit) break;
+	    ch = *cp;
 
-            if ((ch < '0') || (ch > '9')) break;
-            val = val * 10 + (ch - '0');
-            pos++;
-            if (val > (_MAX_INT / 10)) goto oops;
-            cp++;
-        }
-        /* make ZeroPosition-based */
-        pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
-        __INST(position) = __mkSmallInteger(pos);
-        RETURN (__mkSmallInteger(val));
+	    if ((ch < '0') || (ch > '9')) break;
+	    val = val * 10 + (ch - '0');
+	    pos++;
+	    if (val > (_MAX_INT / 10)) goto oops;
+	    cp++;
+	}
+	/* make ZeroPosition-based */
+	pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
+	__INST(position) = __mkSmallInteger(pos);
+	RETURN (__mkSmallInteger(val));
     }
 oops:
     value = __mkSmallInteger(val);
@@ -456,8 +456,8 @@
 
     nextOne := self peek.
     [nextOne notNil and:[nextOne isDigitRadix:10]] whileTrue:[
-        value := (value * 10) + nextOne digitValue.
-        nextOne := self nextPeek
+	value := (value * 10) + nextOne digitValue.
+	nextOne := self nextPeek
     ].
     ^ value
 !
@@ -480,46 +480,46 @@
     l = __INST(readLimit);
 
     if (__isNonNilObject(coll) && __bothSmallInteger(p, l)) {
-        pos = __intVal(p);
-        /* make 1-based */
-        pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
-        if (pos > 0) {
-            OBJ cls, ret;
+	pos = __intVal(p);
+	/* make 1-based */
+	pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
+	if (pos > 0) {
+	    OBJ cls, ret;
 
-            if (pos > __intVal(l)) {
-                RETURN(nil);
-            }
+	    if (pos > __intVal(l)) {
+		RETURN(nil);
+	    }
 
-            cls = __qClass(coll);
-            if (cls == @global(String)) {
-                if (pos <= __stringSize(coll)) {
-                    ch = __stringVal(coll)[pos-1];
-                    ret = __MKCHARACTER(ch);
-                    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
-                    RETURN ( ret );
-                }
-            } else if (cls == @global(ByteArray)) {
-                if (pos <= __byteArraySize(coll)) {
-                    ch = __ByteArrayInstPtr(coll)->ba_element[pos-1];
-                    ret = __mkSmallInteger(ch);
-                    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
-                    RETURN ( ret );
-                }
-            } else if (cls == @global(Unicode16String)) {
-                if (pos <= __unicode16StringSize(coll)) {
-                    ch = __Unicode16StringInstPtr(coll)->s_element[pos-1];
-                    ret = __MKUCHARACTER(ch);
-                    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
-                    RETURN ( ret );
-                }
-            } else if (cls == @global(Array)) {
-                if (pos <= __arraySize(coll)) {
-                    ret = __ArrayInstPtr(coll)->a_element[pos-1];
-                    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
-                    RETURN ( ret );
-                }
-            }
-        }
+	    cls = __qClass(coll);
+	    if (cls == @global(String)) {
+		if (pos <= __stringSize(coll)) {
+		    ch = __stringVal(coll)[pos-1];
+		    ret = __MKCHARACTER(ch);
+		    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
+		    RETURN ( ret );
+		}
+	    } else if (cls == @global(ByteArray)) {
+		if (pos <= __byteArraySize(coll)) {
+		    ch = __ByteArrayInstPtr(coll)->ba_element[pos-1];
+		    ret = __mkSmallInteger(ch);
+		    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
+		    RETURN ( ret );
+		}
+	    } else if (cls == @global(Unicode16String)) {
+		if (pos <= __unicode16StringSize(coll)) {
+		    ch = __Unicode16StringInstPtr(coll)->s_element[pos-1];
+		    ret = __MKUCHARACTER(ch);
+		    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
+		    RETURN ( ret );
+		}
+	    } else if (cls == @global(Array)) {
+		if (pos <= __arraySize(coll)) {
+		    ret = __ArrayInstPtr(coll)->a_element[pos-1];
+		    __INST(position) = __mkSmallInteger(__intVal(__INST(position)) + 1);
+		    RETURN ( ret );
+		}
+	    }
+	}
     }
 %}.
     ret := collection at:(position + 1 - ZeroPosition).
@@ -540,20 +540,20 @@
     l = __INST(readLimit);
 
     if (__isStringLike(coll) && __bothSmallInteger(p, l)) {
-        REGISTER int pos;
-        unsigned ch;
+	REGISTER int pos;
+	unsigned ch;
 
-        pos = __intVal(p);
-        /* make 1-based */
-        pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
-        if ((pos > 0) && (pos < __intVal(l)) && (pos < __stringSize(coll))) {
-            pos = pos + 1;
-            ch = __stringVal(coll)[pos-1];
-            /* make ZeroPosition-based */
-            pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
-            __INST(position) = __mkSmallInteger(pos);
-            RETURN ( __MKCHARACTER(ch) );
-        }
+	pos = __intVal(p);
+	/* make 1-based */
+	pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
+	if ((pos > 0) && (pos < __intVal(l)) && (pos < __stringSize(coll))) {
+	    pos = pos + 1;
+	    ch = __stringVal(coll)[pos-1];
+	    /* make ZeroPosition-based */
+	    pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
+	    __INST(position) = __mkSmallInteger(pos);
+	    RETURN ( __MKCHARACTER(ch) );
+	}
     }
 %}.
     ((position + 1 - ZeroPosition) > readLimit) ifTrue:[^ self pastEndRead].
@@ -580,27 +580,27 @@
 
     if (__isNonNilObject(coll) && __bothSmallInteger(p, l)) {
 
-        pos = __intVal(p);
-        /* make 1-based */
-        pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
-        if (pos <= __intVal(l) && pos > 0) {
-            cls = __qClass(coll);
-            if (cls == @global(String)) {
-                if (pos <= __stringSize(coll)) {
-                    ch = __stringVal(coll)[pos-1];
-                    RETURN ( __MKCHARACTER(ch) );
-                }
-            } else if (cls == @global(ByteArray)) {
-                if (pos <= __byteArraySize(coll)) {
-                    ch = __ByteArrayInstPtr(coll)->ba_element[pos-1];
-                    RETURN ( __mkSmallInteger(ch) );
-                }
-            } else if (cls == @global(Array)) {
-                if (pos <= __arraySize(coll)) {
-                    RETURN ( __ArrayInstPtr(coll)->a_element[pos-1]);
-                }
-            }
-        }
+	pos = __intVal(p);
+	/* make 1-based */
+	pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
+	if (pos <= __intVal(l) && pos > 0) {
+	    cls = __qClass(coll);
+	    if (cls == @global(String)) {
+		if (pos <= __stringSize(coll)) {
+		    ch = __stringVal(coll)[pos-1];
+		    RETURN ( __MKCHARACTER(ch) );
+		}
+	    } else if (cls == @global(ByteArray)) {
+		if (pos <= __byteArraySize(coll)) {
+		    ch = __ByteArrayInstPtr(coll)->ba_element[pos-1];
+		    RETURN ( __mkSmallInteger(ch) );
+		}
+	    } else if (cls == @global(Array)) {
+		if (pos <= __arraySize(coll)) {
+		    RETURN ( __ArrayInstPtr(coll)->a_element[pos-1]);
+		}
+	    }
+	}
     }
 %}.
     ((position + 1 - ZeroPosition) > readLimit) ifTrue:[^ self pastEndRead].
@@ -670,46 +670,46 @@
     l = __INST(readLimit);
 
     if (__isStringLike(coll) && __bothSmallInteger(p, l)) {
-        REGISTER unsigned char *chars;
-        REGISTER unsigned ch;
-        REGISTER int pos;
-        int limit;
-        int sz;
+	REGISTER unsigned char *chars;
+	REGISTER unsigned ch;
+	REGISTER int pos;
+	int limit;
+	int sz;
 
-        pos = __intVal(p);
-        /* make 1-based */
-        pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
-        if (pos <= 0) {
-            RETURN ( nil );
-        }
+	pos = __intVal(p);
+	/* make 1-based */
+	pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
+	if (pos <= 0) {
+	    RETURN ( nil );
+	}
 
-        limit = __intVal(l);
-        sz = __qSize(coll) - OHDR_SIZE;
-        if (limit > sz) {
-            limit = sz;
-        }
+	limit = __intVal(l);
+	sz = __qSize(coll) - OHDR_SIZE;
+	if (limit > sz) {
+	    limit = sz;
+	}
 
-        chars = (unsigned char *)(__stringVal(coll) + pos - 1);
-        while (pos <= limit) {
-            pos++;
-            ch = *chars++;
-            if ((ch > 0x20)
-             || ((ch != ' ')
-                 && (ch != '\t')
-                 && (ch != '\r')
-                 && (ch != '\n')
-                 && (ch != '\f')
-                 && (ch != 0x0B))) {
-                /* make ZeroPosition-based */
-                pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
-                __INST(position) = __mkSmallInteger(pos-1);
-                RETURN ( __MKCHARACTER(ch) );
-            }
-        }
-        /* make ZeroPosition-based */
-        pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
-        __INST(position) = __mkSmallInteger(pos);
-        RETURN ( nil );
+	chars = (unsigned char *)(__stringVal(coll) + pos - 1);
+	while (pos <= limit) {
+	    pos++;
+	    ch = *chars++;
+	    if ((ch > 0x20)
+	     || ((ch != ' ')
+		 && (ch != '\t')
+		 && (ch != '\r')
+		 && (ch != '\n')
+		 && (ch != '\f')
+		 && (ch != 0x0B))) {
+		/* make ZeroPosition-based */
+		pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
+		__INST(position) = __mkSmallInteger(pos-1);
+		RETURN ( __MKCHARACTER(ch) );
+	    }
+	}
+	/* make ZeroPosition-based */
+	pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
+	__INST(position) = __mkSmallInteger(pos);
+	RETURN ( nil );
     }
 %}.
     ^ super skipSeparators
@@ -737,43 +737,43 @@
     l = __INST(readLimit);
 
     if (__isStringLike(coll) && __bothSmallInteger(p, l)) {
-        REGISTER unsigned char *chars;
-        REGISTER unsigned ch;
-        REGISTER int pos;
-        int limit;
+	REGISTER unsigned char *chars;
+	REGISTER unsigned ch;
+	REGISTER int pos;
+	int limit;
 
-        pos = __intVal(p);
-        /* make 1-based */
-        pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
-        if (pos <= 0) {
-            RETURN ( nil );
-        }
+	pos = __intVal(p);
+	/* make 1-based */
+	pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
+	if (pos <= 0) {
+	    RETURN ( nil );
+	}
 
-        limit = __intVal(l);
-        if (limit > (__qSize(coll) - OHDR_SIZE))
-            limit = __qSize(coll) - OHDR_SIZE;
+	limit = __intVal(l);
+	if (limit > (__qSize(coll) - OHDR_SIZE))
+	    limit = __qSize(coll) - OHDR_SIZE;
 
-        chars = (unsigned char *)(__stringVal(coll) + pos - 1);
-        while (pos <= limit) {
-            ch = *chars++;
-            if (((int)ch > 0x20)
-             || (
-                 (ch != ' ') 
-                 && (ch != '\t')
-                 && (ch != '\f')
-                 && (ch != '\b')
-                 && (ch != 0x0B))) {
-                /* make ZeroPosition-based */
-                pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
-                __INST(position) = __mkSmallInteger(pos);
-                RETURN ( __MKCHARACTER(ch) );
-            }
-            pos++;
-        }
-        /* make ZeroPosition-based */
-        pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
-        __INST(position) = __mkSmallInteger(pos);
-        RETURN ( nil );
+	chars = (unsigned char *)(__stringVal(coll) + pos - 1);
+	while (pos <= limit) {
+	    ch = *chars++;
+	    if (((int)ch > 0x20)
+	     || (
+		 (ch != ' ')
+		 && (ch != '\t')
+		 && (ch != '\f')
+		 && (ch != '\b')
+		 && (ch != 0x0B))) {
+		/* make ZeroPosition-based */
+		pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
+		__INST(position) = __mkSmallInteger(pos);
+		RETURN ( __MKCHARACTER(ch) );
+	    }
+	    pos++;
+	}
+	/* make ZeroPosition-based */
+	pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
+	__INST(position) = __mkSmallInteger(pos);
+	RETURN ( nil );
     }
 %}
 .
@@ -782,7 +782,7 @@
 
 skipThrough:anObject
     "skip all objects up-to and including anObject.
-     Return the receiver if skip was successful, 
+     Return the receiver if skip was successful,
      otherwise (i.e. if not found) return nil and leave the stream positioned at the end.
      On success, the next read operation will return the element after anObject.
      - reimplemented for speed on String-Streams for faster scanning"
@@ -797,40 +797,40 @@
     if (__isStringLike(coll)
      && __isCharacter(anObject)
      && __bothSmallInteger(p, l)) {
-        REGISTER unsigned char *chars;
-        REGISTER int pos, limit;
-        unsigned ch;
-        int sz;
+	REGISTER unsigned char *chars;
+	REGISTER int pos, limit;
+	unsigned ch;
+	int sz;
 
-        pos = __intVal(p);
-        /* make 1-based */
-        pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
-        if (pos <= 0) {
-            RETURN ( nil );
-        }
+	pos = __intVal(p);
+	/* make 1-based */
+	pos = pos + 1 - __intVal( @global(PositionableStream:ZeroPosition));
+	if (pos <= 0) {
+	    RETURN ( nil );
+	}
 
-        limit = __intVal(l);
-        sz = __stringSize(coll);
-        if (limit > sz) limit = sz;
+	limit = __intVal(l);
+	sz = __stringSize(coll);
+	if (limit > sz) limit = sz;
 
-        chars = (unsigned char *)(__stringVal(coll) + pos - 1);
-        ch = __intVal(_characterVal(anObject)) & 0xFF;
-        while (pos < limit) {
-            if (*chars == ch) {
-                ch = *++chars;
-                pos++;
-                /* make ZeroPosition-based */
-                pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
-                __INST(position) = __mkSmallInteger(pos);
-                RETURN ( self );
-            }
-            chars++;
-            pos++;
-        }
-        /* make ZeroPosition-based */
-        pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
-        __INST(position) = __mkSmallInteger(pos+1);
-        RETURN ( nil );
+	chars = (unsigned char *)(__stringVal(coll) + pos - 1);
+	ch = __intVal(__characterVal(anObject)) & 0xFF;
+	while (pos < limit) {
+	    if (*chars == ch) {
+		ch = *++chars;
+		pos++;
+		/* make ZeroPosition-based */
+		pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
+		__INST(position) = __mkSmallInteger(pos);
+		RETURN ( self );
+	    }
+	    chars++;
+	    pos++;
+	}
+	/* make ZeroPosition-based */
+	pos = pos - 1 + __intVal( @global(PositionableStream:ZeroPosition));
+	__INST(position) = __mkSmallInteger(pos+1);
+	RETURN ( nil );
     }
 %}.
     ^ super skipThrough:anObject
@@ -847,10 +847,10 @@
 !ReadStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ReadStream.st,v 1.66 2013-03-22 14:24:53 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ReadStream.st,v 1.67 2013-05-21 20:44:47 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/ReadStream.st,v 1.66 2013-03-22 14:24:53 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ReadStream.st,v 1.67 2013-05-21 20:44:47 cg Exp $'
 ! !
 
--- a/String.st	Tue May 21 22:26:48 2013 +0200
+++ b/String.st	Tue May 21 22:44:47 2013 +0200
@@ -442,7 +442,7 @@
     "return a string consisting of the cr-Character"
 
     CR isNil ifTrue:[
-        CR := String with:Character return
+	CR := String with:Character return
     ].
     ^ CR
 
@@ -477,10 +477,10 @@
     stringSize := aString size.
     hash := speciesHash bitAnd: 16rFFFFFFF.
     1 to: stringSize do: [:pos |
-        hash := hash + (aString at: pos) asInteger.
-        "Begin hashMultiply"
-        low := hash bitAnd: 16383.
-        hash := (16r260D * low + ((16r260D * (hash bitShift: -14) + (16r0065 * low) bitAnd: 16383) * 16384)) bitAnd: 16r0FFFFFFF.
+	hash := hash + (aString at: pos) asInteger.
+	"Begin hashMultiply"
+	low := hash bitAnd: 16383.
+	hash := (16r260D * low + ((16r260D * (hash bitShift: -14) + (16r0065 * low) bitAnd: 16383) * 16384)) bitAnd: 16r0FFFFFFF.
     ].
     ^ hash.
 !
@@ -489,7 +489,7 @@
     "return a string consisting of the tab-Character"
 
     TAB isNil ifTrue:[
-        TAB := String with:Character tab
+	TAB := String with:Character tab
     ].
     ^ TAB
 ! !
@@ -577,7 +577,7 @@
 
     if (__isString(slf)) {
 	if (__isCharacter(aCharacter)) {
-	    value = __intVal(_characterVal(aCharacter));
+	    value = __intVal(__characterVal(aCharacter));
 	    if (((unsigned)value <= 0xFF)
 	     && __isSmallInteger(index)) {
 		indx = __intVal(index) - 1;
@@ -638,7 +638,7 @@
     slf = self;
 
     if (__isCharacter(aCharacter)) {
-	value = __intVal(_characterVal(aCharacter));
+	value = __intVal(__characterVal(aCharacter));
 	if (((unsigned)value <= 0xFF)
 	 && __isSmallInteger(index)) {
 	    cls = __qClass(slf);
@@ -693,11 +693,11 @@
     cls = __qClass(slf);
     indx = 0;
     if (cls != String) {
-        if (indx < 0) goto badIndex;
-        indx += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+	if (indx < 0) goto badIndex;
+	indx += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
     }
     if ((unsigned)indx < (unsigned)(__stringSize(slf))) {
-        RETURN ( __MKCHARACTER(__stringVal(slf)[indx] & 0xFF) );
+	RETURN ( __MKCHARACTER(__stringVal(slf)[indx] & 0xFF) );
     }
 badIndex: ;
 %}.
@@ -758,40 +758,40 @@
     OBJ cls;
 
     if (__isStringLike(aCollection)) {
-        matchP = __stringVal(aCollection);
-        cp = __stringVal(self);
-        if ((cls = __qClass(self)) != String)
-            cp += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-
-        switch (__stringSize(aCollection)) {
-            case 3:
-                /* three character search */
-                if (strchr(cp, matchP[2])) {
-                    RETURN ( true );
-                }
-                /* fall into */
-            case 2:
-                /* two character search */
-                if (strchr(cp, matchP[1])) {
-                    RETURN ( true );
-                }
-                /* fall into */
-            case 1:
-                /* single character search */
-                if (strchr(cp, matchP[0])) {
-                    RETURN ( true );
-                }
-                /* fall into */
-            case 0:
-                RETURN ( false );
-        }
-        while (*cp) {
-            if (strchr(matchP, *cp)) {
-                RETURN ( true );
-            }
-            cp++;
-        }
-        RETURN ( false );
+	matchP = __stringVal(aCollection);
+	cp = __stringVal(self);
+	if ((cls = __qClass(self)) != String)
+	    cp += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+
+	switch (__stringSize(aCollection)) {
+	    case 3:
+		/* three character search */
+		if (strchr(cp, matchP[2])) {
+		    RETURN ( true );
+		}
+		/* fall into */
+	    case 2:
+		/* two character search */
+		if (strchr(cp, matchP[1])) {
+		    RETURN ( true );
+		}
+		/* fall into */
+	    case 1:
+		/* single character search */
+		if (strchr(cp, matchP[0])) {
+		    RETURN ( true );
+		}
+		/* fall into */
+	    case 0:
+		RETURN ( false );
+	}
+	while (*cp) {
+	    if (strchr(matchP, *cp)) {
+		RETURN ( true );
+	    }
+	    cp++;
+	}
+	RETURN ( false );
     }
 %}.
     ^ super includesAny:aCollection
@@ -829,92 +829,92 @@
     OBJ cls;
 
     if (__isSmallInteger(start)) {
-        index = __intVal(start);
-        if (index > 0) {
-            if (__isCharacter(aCharacter)) {
-                byteValue = __intVal(_characterVal(aCharacter));
-                if (byteValue <= 0xFF) {
-                    last = __stringSize(self);
-                    cp = __stringVal(self);
-                    if ((cls = __qClass(self)) != String) {
-                        int numInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-
-                        cp += numInstBytes;             
-                        last -= numInstBytes;
-                    }
-                    if (index <= last) {
-#ifdef FAST_MEMCHR    
-                        ncp = (unsigned char *) memchr(cp+index-1, byteValue, last+1-index);
-                        if (ncp) {
-                            RETURN ( __mkSmallInteger(ncp - cp + 1) );
-                        }
+	index = __intVal(start);
+	if (index > 0) {
+	    if (__isCharacter(aCharacter)) {
+		byteValue = __intVal(__characterVal(aCharacter));
+		if (byteValue <= 0xFF) {
+		    last = __stringSize(self);
+		    cp = __stringVal(self);
+		    if ((cls = __qClass(self)) != String) {
+			int numInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+
+			cp += numInstBytes;
+			last -= numInstBytes;
+		    }
+		    if (index <= last) {
+#ifdef FAST_MEMCHR
+			ncp = (unsigned char *) memchr(cp+index-1, byteValue, last+1-index);
+			if (ncp) {
+			    RETURN ( __mkSmallInteger(ncp - cp + 1) );
+			}
 #else
 # ifdef __UNROLL_LOOPS__
-                        {
-                            int last3 = last-3;
-
-                            for (; index <= last3; index += 4) {
-                                if (cp[index-1] == byteValue) { RETURN ( __mkSmallInteger(index) ); }
-                                if (cp[index-1+1] == byteValue) { RETURN ( __mkSmallInteger(index+1) ); }
-                                if (cp[index-1+2] == byteValue) { RETURN ( __mkSmallInteger(index+2) ); }
-                                if (cp[index-1+3] == byteValue) { RETURN ( __mkSmallInteger(index+3) ); }
-                            }
-                        }
+			{
+			    int last3 = last-3;
+
+			    for (; index <= last3; index += 4) {
+				if (cp[index-1] == byteValue) { RETURN ( __mkSmallInteger(index) ); }
+				if (cp[index-1+1] == byteValue) { RETURN ( __mkSmallInteger(index+1) ); }
+				if (cp[index-1+2] == byteValue) { RETURN ( __mkSmallInteger(index+2) ); }
+				if (cp[index-1+3] == byteValue) { RETURN ( __mkSmallInteger(index+3) ); }
+			    }
+			}
 # endif
 # ifdef V1
-                        for (; index <= last; index++) {
-                            if (cp[index-1] == byteValue) {
-                                RETURN ( __mkSmallInteger(index) );
-                            }
-                        }
+			for (; index <= last; index++) {
+			    if (cp[index-1] == byteValue) {
+				RETURN ( __mkSmallInteger(index) );
+			    }
+			}
 # endif
 # ifdef V2
-                        {
-                            // see bit twiddling hacks
+			{
+			    // see bit twiddling hacks
 #                           define hasZeroByte(v) (((v) - 0x01010101UL) & ~(v) & 0x80808080UL)
 #                           define hasByteM(v,m)   hasZeroByte( (v) ^ m)
 
-                            // the following loop checks four bytes at once
-                            if (((index-1) & 0x3) == 0) {
-                                int last4 = last-4;
-                                int m = (~0UL/255 * (byteValue));
-
-                                while (index <= last4) {
-                                    unsigned int v = *(unsigned int *)(cp+index-1);
-
-                                    if (hasByteM(v,m)) break;
-                                    index += 4;
-                                }
-                            }
-                            while (index <= last) {
-                                if (cp[index-1] == byteValue) {
-                                    RETURN ( __mkSmallInteger(index) );
-                                }
-                                index++;
-                            }
-                        }
+			    // the following loop checks four bytes at once
+			    if (((index-1) & 0x3) == 0) {
+				int last4 = last-4;
+				int m = (~0UL/255 * (byteValue));
+
+				while (index <= last4) {
+				    unsigned int v = *(unsigned int *)(cp+index-1);
+
+				    if (hasByteM(v,m)) break;
+				    index += 4;
+				}
+			    }
+			    while (index <= last) {
+				if (cp[index-1] == byteValue) {
+				    RETURN ( __mkSmallInteger(index) );
+				}
+				index++;
+			    }
+			}
 # endif
 #endif
-                    }
-                }
-            }
-            RETURN ( __mkSmallInteger(0) );
-        }
+		    }
+		}
+	    }
+	    RETURN ( __mkSmallInteger(0) );
+	}
     }
 #undef V2
 %}.
     ^ super indexOf:aCharacter startingAt:start
 
     "
-     'hello world' indexOf:$0 startingAt:1   
-     'hello world' indexOf:$l startingAt:1   
-     'hello world' indexOf:$l startingAt:5   
-     'hello world' indexOf:$d startingAt:5   
-     #[0 0 1 0 0] asString indexOf:(Character value:1) startingAt:1  
+     'hello world' indexOf:$0 startingAt:1
+     'hello world' indexOf:$l startingAt:1
+     'hello world' indexOf:$l startingAt:5
+     'hello world' indexOf:$d startingAt:5
+     #[0 0 1 0 0] asString indexOf:(Character value:1) startingAt:1
      #[0 0 1 0 0] asString indexOf:(Character value:0) startingAt:3
 
-     '1234567890123456a' indexOf:$a      
-     '1234567890123456a' indexOf:$b      
+     '1234567890123456a' indexOf:$a
+     '1234567890123456a' indexOf:$b
 
      |s|
      s := '12345678901234b'.
@@ -925,7 +925,7 @@
      self assert:(s indexOf:$4) == 4.
      self assert:(s indexOf:$5) == 5.
      self assert:(s indexOf:$0) == 10.
-     self assert:(s indexOf:$b) == 15.   
+     self assert:(s indexOf:$b) == 15.
 
      |s|
      s := ''.
@@ -994,21 +994,21 @@
      self assert:(s indexOf:$9) == 9.
 
      self assert:(s indexOf:$0) == 0.
-     self assert:(s indexOf:$b) == 0.   
+     self assert:(s indexOf:$b) == 0.
 
      |s|
      s := String new:1024.
      s atAllPut:$a.
      s at:512 put:(Character space).
      Time millisecondsToRun:[
-        1000000 timesRepeat:[ s indexOf:(Character space) ]
-     ]         
+	1000000 timesRepeat:[ s indexOf:(Character space) ]
+     ]
 
      timing (ms):
-        v1: 1763 normal   
-            2340 +unroll   
-            3308 memsrch !!
-        v2: 1045
+	v1: 1763 normal
+	    2340 +unroll
+	    3308 memsrch !!
+	v2: 1045
     "
 
     "Modified: / 10-01-2012 / 17:09:34 / cg"
@@ -1031,76 +1031,76 @@
 
     if (__isSmallInteger(start)
      && __isStringLike(aCollectionOfCharacters)) {
-        matchP = __stringVal(aCollectionOfCharacters);
-        index = __intVal(start);
-        if (index > 0) {
-            cp = __stringVal(self) + index - 1;
-            if ((cls = __qClass(self)) != String) {
-                cp += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-            }
-            len = __stringSize(self);
-            if (index <= len) {
-
-                if (matchP[0] == 0) {
-                    /* matchSet is empty */
-                    RETURN ( __mkSmallInteger(0) );
-                }
-
-                if (matchP[1] == 0) {
-                    /* only a single character match */
-                    unsigned char m = matchP[0];
+	matchP = __stringVal(aCollectionOfCharacters);
+	index = __intVal(start);
+	if (index > 0) {
+	    cp = __stringVal(self) + index - 1;
+	    if ((cls = __qClass(self)) != String) {
+		cp += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+	    }
+	    len = __stringSize(self);
+	    if (index <= len) {
+
+		if (matchP[0] == 0) {
+		    /* matchSet is empty */
+		    RETURN ( __mkSmallInteger(0) );
+		}
+
+		if (matchP[1] == 0) {
+		    /* only a single character match */
+		    unsigned char m = matchP[0];
 
     #ifdef FAST_MEMCHR
-                    ccp = (unsigned char *) memchr(cp, m, len+1-index);
-                    if (ccp) {
-                        RETURN ( __mkSmallInteger((ccp - cp) + index + 1) );
-                    }
+		    ccp = (unsigned char *) memchr(cp, m, len+1-index);
+		    if (ccp) {
+			RETURN ( __mkSmallInteger((ccp - cp) + index + 1) );
+		    }
     #else
-                    while (c = *cp++) {
-                        if (c == m) {
-                            RETURN ( __mkSmallInteger(index) );
-                        }
-                        index++;
-                    }
+		    while (c = *cp++) {
+			if (c == m) {
+			    RETURN ( __mkSmallInteger(index) );
+			}
+			index++;
+		    }
     #endif
-                    RETURN ( __mkSmallInteger(0) );
-                }
-
-                if (matchP[2] == 0) {
-                    /* two character matches */
-                    unsigned char m1 = matchP[0];
-                    unsigned char m2 = matchP[1];
-
-                    while (c = *cp++) {
-                        if ((c == m1) || (c == m2)) {
-                            RETURN ( __mkSmallInteger(index) );
-                        }
-                        index++;
-                    }
-                    RETURN ( __mkSmallInteger(0) );
-                }
-
-                min = max = matchP[0];
-
-                for (ccp = matchP+1; *ccp ; ccp++) {
-                    unsigned char c = *ccp;
-                    if (c < min) min = c;
-                    else if (c > max) max = c;
-                }
-
-                while (c = *cp++) {
-                    if ((c >= min) && (c <= max)) {
-                        for (ccp = matchP; *ccp ; ccp++) {
-                            if (*ccp == c) {
-                                RETURN ( __mkSmallInteger(index) );
-                            }
-                        }
-                    }
-                    index++;
-                }
-            }
-            RETURN ( __mkSmallInteger(0) );
-        }
+		    RETURN ( __mkSmallInteger(0) );
+		}
+
+		if (matchP[2] == 0) {
+		    /* two character matches */
+		    unsigned char m1 = matchP[0];
+		    unsigned char m2 = matchP[1];
+
+		    while (c = *cp++) {
+			if ((c == m1) || (c == m2)) {
+			    RETURN ( __mkSmallInteger(index) );
+			}
+			index++;
+		    }
+		    RETURN ( __mkSmallInteger(0) );
+		}
+
+		min = max = matchP[0];
+
+		for (ccp = matchP+1; *ccp ; ccp++) {
+		    unsigned char c = *ccp;
+		    if (c < min) min = c;
+		    else if (c > max) max = c;
+		}
+
+		while (c = *cp++) {
+		    if ((c >= min) && (c <= max)) {
+			for (ccp = matchP; *ccp ; ccp++) {
+			    if (*ccp == c) {
+				RETURN ( __mkSmallInteger(index) );
+			    }
+			}
+		    }
+		    index++;
+		}
+	    }
+	    RETURN ( __mkSmallInteger(0) );
+	}
     }
 %}.
     "/
@@ -1134,24 +1134,24 @@
 
     index = __intVal(start);
     if (index <= 0) {
-        index = 1;
+	index = 1;
     }
     len = __stringSize(self);
     cp = __stringVal(self);
     if ((cls = __qClass(self)) != String) {
-        int numInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-
-        cp += numInstBytes;
-        len -= numInstBytes;
+	int numInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+
+	cp += numInstBytes;
+	len -= numInstBytes;
     }
     while (index <= len) {
-        REGISTER unsigned char c;
-
-        c = cp[index - 1];
-        if (c < ' ') {
-            RETURN ( __mkSmallInteger(index) );
-        }
-        index++;
+	REGISTER unsigned char c;
+
+	c = cp[index - 1];
+	if (c < ' ') {
+	    RETURN ( __mkSmallInteger(index) );
+	}
+	index++;
     }
     RETURN ( __mkSmallInteger(0) );
 #endif
@@ -1178,28 +1178,28 @@
 
     index = __intVal(start);
     if (index <= 0) {
-        index = 1;
+	index = 1;
     }
     len = __stringSize(self);
     cp = __stringVal(self);
     if ((cls = __qClass(self)) != String) {
-        int numInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-
-        cp += numInstBytes;
-        len -= numInstBytes;
+	int numInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+
+	cp += numInstBytes;
+	len -= numInstBytes;
     }
     while (index <= len) {
-        REGISTER unsigned char c;
-
-        c = cp[index - 1];
+	REGISTER unsigned char c;
+
+	c = cp[index - 1];
 #ifndef NON_ASCII       /* i.e. EBCDIC ;-) */
-        if (c > ' ')
+	if (c > ' ')
 #endif
-        if ((c != ' ') && (c != '\t') && (c != '\n')
-         && (c != '\r') && (c != '\f')) {
-            RETURN ( __mkSmallInteger(index) );
-        }
-        index++;
+	if ((c != ' ') && (c != '\t') && (c != '\n')
+	 && (c != '\r') && (c != '\f')) {
+	    RETURN ( __mkSmallInteger(index) );
+	}
+	index++;
     }
     RETURN ( __mkSmallInteger(0) );
 %}.
@@ -1221,28 +1221,28 @@
 
     index = __intVal(start);
     if (index <= 0) {
-        index = 1;
+	index = 1;
     }
     len = __stringSize(self);
     cp = __stringVal(self);
     if ((cls = __qClass(self)) != String) {
-        int numInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-
-        cp += numInstBytes;
-        len -= numInstBytes;
+	int numInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+
+	cp += numInstBytes;
+	len -= numInstBytes;
     }
     while (index <= len) {
-        REGISTER unsigned char c;
-
-        c = cp[index - 1];
+	REGISTER unsigned char c;
+
+	c = cp[index - 1];
 #ifndef NON_ASCII       /* i.e. EBCDIC ;-) */
-        if (c <= ' ')
+	if (c <= ' ')
 #endif
-        if ((c == ' ') || (c == '\t') || (c == '\n')
-         || (c == '\r') || (c == '\f')) {
-            RETURN ( __mkSmallInteger(index) );
-        }
-        index++;
+	if ((c == ' ') || (c == '\t') || (c == '\n')
+	 || (c == '\r') || (c == '\f')) {
+	    RETURN ( __mkSmallInteger(index) );
+	}
+	index++;
     }
     RETURN ( __mkSmallInteger(0) );
 %}.
@@ -1265,43 +1265,43 @@
     OBJ cls;
 
     if (__isCharacter(aCharacter)) {
-        limit = __stringSize(self);
-        count = 0;
-        byteValue = __intVal(_characterVal(aCharacter));
-        if (byteValue <= 0xFF) {
-            cp = __stringVal(self);
-            if ((cls = __qClass(self)) != String) {
-                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-                limit -= n;
-                cp += n;
-            }
-            /* loop unrolled and software-pipelined 
-             * (gives 30-40% speedup on Intel-DUO using borland bcc55)
-             */
-            while (limit >= 4) {
-                register unsigned char c1, c2;
-
-                c1 = cp[0];
-                limit -= 4;
-                c2 = cp[1];
-                if (c1 == byteValue) count++;
-                c1 = cp[2];
-                if (c2 == byteValue) count++;
-                c2 = cp[3];
-                if (c1 == byteValue) count++;
-                cp += 4;
-                if (c2 == byteValue) count++;
-            }
-            while (limit > 0) {
-                register unsigned char c1;
-
-                c1 = cp[0];
-                limit--;
-                if (c1 == byteValue) count++;
-                cp ++;
-            }
-        }
-        RETURN ( __mkSmallInteger(count) );
+	limit = __stringSize(self);
+	count = 0;
+	byteValue = __intVal(__characterVal(aCharacter));
+	if (byteValue <= 0xFF) {
+	    cp = __stringVal(self);
+	    if ((cls = __qClass(self)) != String) {
+		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+		limit -= n;
+		cp += n;
+	    }
+	    /* loop unrolled and software-pipelined
+	     * (gives 30-40% speedup on Intel-DUO using borland bcc55)
+	     */
+	    while (limit >= 4) {
+		register unsigned char c1, c2;
+
+		c1 = cp[0];
+		limit -= 4;
+		c2 = cp[1];
+		if (c1 == byteValue) count++;
+		c1 = cp[2];
+		if (c2 == byteValue) count++;
+		c2 = cp[3];
+		if (c1 == byteValue) count++;
+		cp += 4;
+		if (c2 == byteValue) count++;
+	    }
+	    while (limit > 0) {
+		register unsigned char c1;
+
+		c1 = cp[0];
+		limit--;
+		if (c1 == byteValue) count++;
+		cp ++;
+	    }
+	}
+	RETURN ( __mkSmallInteger(count) );
     }
 %}.
     ^ super occurrencesOf:aCharacter
@@ -1313,7 +1313,7 @@
      'hello world' occurrencesOf:$x
      'hello world' occurrencesOf:1
      Time millisecondsToRun:[
-        1000000 timesRepeat:[ 'abcdefghijklmn' occurrencesOf:$x ]
+	1000000 timesRepeat:[ 'abcdefghijklmn' occurrencesOf:$x ]
      ]. 219 203 156 203 204 204 219 172 187 187 141
     "
 ! !
@@ -1335,45 +1335,45 @@
     int argIsString;
 
     if (__isNonNilObject(aString)) {
-        argIsString = __qIsStringLike(aString);
-        if (argIsString || __qClass(aString) == __qClass(self)) {
-            cp2 = __stringVal(aString);
-            len2 = __stringSize(aString);
-            /*
-             * care for instances of subclasses ...
-             */
-            if (!argIsString) {
-                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
-
-                cp2 += n;
-                len2 -= n;
-            }
-
-            cp1 = __stringVal(self);
-            len1 = __stringSize(self);
-            /*
-             * care for instances of subclasses ...
-             */
-            if (!__qIsStringLike(self)) {
-                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
-
-                cp1 += n;
-                len1 -= n;
-            }
-
-            if (len1 <= len2)
-                cmp = strncmp(cp1, cp2, len1);
-            else
-                cmp = strncmp(cp1, cp2, len2);
-
-            if (cmp < 0) {
-                RETURN ( true );
-            }
-            if ((cmp == 0) && (len1 < len2)) {
-                RETURN ( true );
-            }
-            RETURN ( false );
-        }
+	argIsString = __qIsStringLike(aString);
+	if (argIsString || __qClass(aString) == __qClass(self)) {
+	    cp2 = __stringVal(aString);
+	    len2 = __stringSize(aString);
+	    /*
+	     * care for instances of subclasses ...
+	     */
+	    if (!argIsString) {
+		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
+
+		cp2 += n;
+		len2 -= n;
+	    }
+
+	    cp1 = __stringVal(self);
+	    len1 = __stringSize(self);
+	    /*
+	     * care for instances of subclasses ...
+	     */
+	    if (!__qIsStringLike(self)) {
+		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+		cp1 += n;
+		len1 -= n;
+	    }
+
+	    if (len1 <= len2)
+		cmp = strncmp(cp1, cp2, len1);
+	    else
+		cmp = strncmp(cp1, cp2, len2);
+
+	    if (cmp < 0) {
+		RETURN ( true );
+	    }
+	    if ((cmp == 0) && (len1 < len2)) {
+		RETURN ( true );
+	    }
+	    RETURN ( false );
+	}
     }
 %}.
     ^ super < aString
@@ -1393,86 +1393,86 @@
     int argIsString;
 
     if (aString == self) {
-        RETURN ( true );
+	RETURN ( true );
     }
     if (! __isNonNilObject(aString)) {
-        RETURN ( false );
+	RETURN ( false );
     }
 
     argIsString = __qIsStringLike(aString);
     if (argIsString || __qClass(aString) == __qClass(self)) {
-        cp2 = __stringVal(aString);
-        l2 = __stringSize(aString);
-        /*
-         * care for instances of subclasses ...
-         */
-        if (!argIsString) {
-            int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
-
-            cp2 += n;
-            l2 -= n;
-        }
-
-        cp1 = __stringVal(self);
-        l1 = __stringSize(self);
-        /*
-         * care for instances of subclasses ...
-         */
-        if (!__qIsStringLike(self)) {
-            int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
-
-            cp1 += n;
-            l1 -= n;
-        }
-
-        if (l1 != l2) {
-            RETURN ( false );
-        }
+	cp2 = __stringVal(aString);
+	l2 = __stringSize(aString);
+	/*
+	 * care for instances of subclasses ...
+	 */
+	if (!argIsString) {
+	    int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
+
+	    cp2 += n;
+	    l2 -= n;
+	}
+
+	cp1 = __stringVal(self);
+	l1 = __stringSize(self);
+	/*
+	 * care for instances of subclasses ...
+	 */
+	if (!__qIsStringLike(self)) {
+	    int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+	    cp1 += n;
+	    l1 -= n;
+	}
+
+	if (l1 != l2) {
+	    RETURN ( false );
+	}
 #ifdef FAST_MEMCMP
-        RETURN ( (memcmp(cp1, cp2, l1) == 0) ? true : false );
+	RETURN ( (memcmp(cp1, cp2, l1) == 0) ? true : false );
 #else
-        addrDelta = cp2 - cp1;
+	addrDelta = cp2 - cp1;
 # ifdef __UNROLL_LOOPS__
-        while (l1 >= (sizeof(unsigned INT)*4)) {
-            if (((unsigned INT *)cp1)[0] != ((unsigned INT *)(cp1+addrDelta))[0]) {
-                RETURN (false);
-            }
-            if (((unsigned INT *)cp1)[1] != ((unsigned INT *)(cp1+addrDelta))[1]) {
-                RETURN (false);
-            }
-            if (((unsigned INT *)cp1)[2] != ((unsigned INT *)(cp1+addrDelta))[2]) {
-                RETURN (false);
-            }
-            if (((unsigned INT *)cp1)[3] != ((unsigned INT *)(cp1+addrDelta))[3]) {
-                RETURN (false);
-            }
-            l1 -= (sizeof(unsigned INT) * 4);
-            cp1 += (sizeof(unsigned INT) * 4);
-        }
+	while (l1 >= (sizeof(unsigned INT)*4)) {
+	    if (((unsigned INT *)cp1)[0] != ((unsigned INT *)(cp1+addrDelta))[0]) {
+		RETURN (false);
+	    }
+	    if (((unsigned INT *)cp1)[1] != ((unsigned INT *)(cp1+addrDelta))[1]) {
+		RETURN (false);
+	    }
+	    if (((unsigned INT *)cp1)[2] != ((unsigned INT *)(cp1+addrDelta))[2]) {
+		RETURN (false);
+	    }
+	    if (((unsigned INT *)cp1)[3] != ((unsigned INT *)(cp1+addrDelta))[3]) {
+		RETURN (false);
+	    }
+	    l1 -= (sizeof(unsigned INT) * 4);
+	    cp1 += (sizeof(unsigned INT) * 4);
+	}
 # endif /* __UNROLL_LOOPS__ */
-        while (l1 >= sizeof(unsigned INT)) {
-            if (*((unsigned INT *)cp1) != *((unsigned INT *)(cp1+addrDelta))) {
-                RETURN (false);
-            }
-            l1 -= sizeof(unsigned INT);
-            cp1 += sizeof(unsigned INT);
-        }
-        if (l1 >= sizeof(unsigned short)) {
-            if (*((unsigned short *)cp1) != *((unsigned short *)(cp1+addrDelta))) {
-                RETURN (false);
-            }
-            l1 -= sizeof(unsigned short);
-            cp1 += sizeof(unsigned short);
-        }
-        while (l1) {
-            if (*cp1 != *(cp1+addrDelta)) {
-                RETURN (false);
-            }
-            l1--;
-            cp1++;
-        }
-
-        RETURN (true);
+	while (l1 >= sizeof(unsigned INT)) {
+	    if (*((unsigned INT *)cp1) != *((unsigned INT *)(cp1+addrDelta))) {
+		RETURN (false);
+	    }
+	    l1 -= sizeof(unsigned INT);
+	    cp1 += sizeof(unsigned INT);
+	}
+	if (l1 >= sizeof(unsigned short)) {
+	    if (*((unsigned short *)cp1) != *((unsigned short *)(cp1+addrDelta))) {
+		RETURN (false);
+	    }
+	    l1 -= sizeof(unsigned short);
+	    cp1 += sizeof(unsigned short);
+	}
+	while (l1) {
+	    if (*cp1 != *(cp1+addrDelta)) {
+		RETURN (false);
+	    }
+	    l1--;
+	    cp1++;
+	}
+
+	RETURN (true);
 #endif
     }
 %}.
@@ -1487,10 +1487,10 @@
      |tEmpty tCmp|
 
      tEmpty := Time millisecondsToRun:[
-         1000000 timesRepeat:[]
+	 1000000 timesRepeat:[]
      ].
      tCmp := Time millisecondsToRun:[
-         1000000 timesRepeat:[ '1234567890' = '1234567890' ]
+	 1000000 timesRepeat:[ '1234567890' = '1234567890' ]
      ].
      tCmp - tEmpty
     "
@@ -1511,45 +1511,45 @@
     int argIsString;
 
     if (__isNonNilObject(aString)) {
-        argIsString = __qIsStringLike(aString);
-        if (argIsString || __qClass(aString) == __qClass(self)) {
-            cp2 = __stringVal(aString);
-            len2 = __stringSize(aString);
-            /*
-             * care for instances of subclasses ...
-             */
-            if (!argIsString) {
-                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
-
-                cp2 += n;
-                len2 -= n;
-            }
-
-            cp1 = __stringVal(self);
-            len1 = __stringSize(self);
-            /*
-             * care for instances of subclasses ...
-             */
-            if (!__qIsStringLike(self)) {
-                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
-
-                cp1 += n;
-                len1 -= n;
-            }
-
-            if (len1 <= len2)
-                cmp = strncmp(cp1, cp2, len1);
-            else
-                cmp = strncmp(cp1, cp2, len2);
-
-            if (cmp > 0) {
-                RETURN ( true );
-            }
-            if ((cmp == 0) && (len1 > len2)) {
-                RETURN ( true );
-            }
-            RETURN ( false );
-        }
+	argIsString = __qIsStringLike(aString);
+	if (argIsString || __qClass(aString) == __qClass(self)) {
+	    cp2 = __stringVal(aString);
+	    len2 = __stringSize(aString);
+	    /*
+	     * care for instances of subclasses ...
+	     */
+	    if (!argIsString) {
+		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
+
+		cp2 += n;
+		len2 -= n;
+	    }
+
+	    cp1 = __stringVal(self);
+	    len1 = __stringSize(self);
+	    /*
+	     * care for instances of subclasses ...
+	     */
+	    if (!__qIsStringLike(self)) {
+		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+		cp1 += n;
+		len1 -= n;
+	    }
+
+	    if (len1 <= len2)
+		cmp = strncmp(cp1, cp2, len1);
+	    else
+		cmp = strncmp(cp1, cp2, len2);
+
+	    if (cmp > 0) {
+		RETURN ( true );
+	    }
+	    if ((cmp == 0) && (len1 > len2)) {
+		RETURN ( true );
+	    }
+	    RETURN ( false );
+	}
     }
 %}.
     ^ super > aString
@@ -1568,43 +1568,43 @@
     int argIsString;
 
     if (__isNonNilObject(aString)) {
-        argIsString = __qIsStringLike(aString);
-        if (argIsString || __qClass(aString) == __qClass(self)) {
-            cp1 = __stringVal(self);
-
-            /*
-             * care for instances of subclasses ...
-             */
-            if (!__qIsStringLike(self)) {
-                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
-
-                cp1 += n;
-            }
-
-            cp2 = __stringVal(aString);
-            /*
-             * care for instances of subclasses ...
-             */
-            if (!argIsString) {
-                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
-
-                cp2 += n;
-            }
+	argIsString = __qIsStringLike(aString);
+	if (argIsString || __qClass(aString) == __qClass(self)) {
+	    cp1 = __stringVal(self);
+
+	    /*
+	     * care for instances of subclasses ...
+	     */
+	    if (!__qIsStringLike(self)) {
+		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+		cp1 += n;
+	    }
+
+	    cp2 = __stringVal(aString);
+	    /*
+	     * care for instances of subclasses ...
+	     */
+	    if (!argIsString) {
+		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
+
+		cp2 += n;
+	    }
 
 #ifdef HAS_STRCOLL
-            cmp = strcoll(cp1, cp2);
+	    cmp = strcoll(cp1, cp2);
 #else
-            cmp = strcmp(cp1, cp2);
+	    cmp = strcmp(cp1, cp2);
 #endif
 
-            if (cmp > 0) {
-                RETURN ( __mkSmallInteger(1) );
-            }
-            if (cmp < 0) {
-                RETURN ( __mkSmallInteger(-1) );
-            }
-            RETURN ( __mkSmallInteger(0) );
-        }
+	    if (cmp > 0) {
+		RETURN ( __mkSmallInteger(1) );
+	    }
+	    if (cmp < 0) {
+		RETURN ( __mkSmallInteger(-1) );
+	    }
+	    RETURN ( __mkSmallInteger(0) );
+	}
     }
 %}.
     "
@@ -1629,38 +1629,38 @@
     int argIsString;
 
     if (__isNonNilObject(aString)) {
-        argIsString = __qIsStringLike(aString);
-        if (argIsString || __qClass(aString) == __qClass(self)) {
-            cp1 = __stringVal(self);
-
-            /*
-             * care for instances of subclasses ...
-             */
-            if (!__qIsStringLike(self)) {
-                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
-
-                cp1 += n;
-            }
-
-            cp2 = __stringVal(aString);
-            /*
-             * care for instances of subclasses ...
-             */
-            if (!argIsString) {
-                int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
-
-                cp2 += n;
-            }
-
-            cmp = strcmp(cp1, cp2);
-            if (cmp > 0) {
-                RETURN ( __mkSmallInteger(1) );
-            }
-            if (cmp < 0) {
-                RETURN ( __mkSmallInteger(-1) );
-            }
-            RETURN ( __mkSmallInteger(0) );
-        }
+	argIsString = __qIsStringLike(aString);
+	if (argIsString || __qClass(aString) == __qClass(self)) {
+	    cp1 = __stringVal(self);
+
+	    /*
+	     * care for instances of subclasses ...
+	     */
+	    if (!__qIsStringLike(self)) {
+		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+		cp1 += n;
+	    }
+
+	    cp2 = __stringVal(aString);
+	    /*
+	     * care for instances of subclasses ...
+	     */
+	    if (!argIsString) {
+		int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
+
+		cp2 += n;
+	    }
+
+	    cmp = strcmp(cp1, cp2);
+	    if (cmp > 0) {
+		RETURN ( __mkSmallInteger(1) );
+	    }
+	    if (cmp < 0) {
+		RETURN ( __mkSmallInteger(-1) );
+	    }
+	    RETURN ( __mkSmallInteger(0) );
+	}
     }
 %}.
     "
@@ -1682,10 +1682,10 @@
     cp = __stringVal(self);
     l = __stringSize(self);
     if (!__qIsStringLike(self)) {
-        int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
-
-        cp += n;
-        l -= n;
+	int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+	cp += n;
+	l -= n;
     }
 
     /*
@@ -1693,15 +1693,15 @@
      */
     val = 0;
     while (l >= 4) {
-        l -= 4;
-        val = ((val * 65599) & _MAX_INT) + cp[0];
-        val = ((val * 65599) & _MAX_INT) + cp[1];
-        val = ((val * 65599) & _MAX_INT) + cp[2];
-        val = ((val * 65599) & _MAX_INT) + cp[3];
-        cp += 4;
+	l -= 4;
+	val = ((val * 65599) & _MAX_INT) + cp[0];
+	val = ((val * 65599) & _MAX_INT) + cp[1];
+	val = ((val * 65599) & _MAX_INT) + cp[2];
+	val = ((val * 65599) & _MAX_INT) + cp[3];
+	cp += 4;
     }
     while (l--) {
-        val = ((val * 65599) & _MAX_INT) + *cp++;
+	val = ((val * 65599) & _MAX_INT) + *cp++;
     }
     RETURN ( __mkSmallInteger(val & _MAX_INT));
 %}
@@ -1710,7 +1710,7 @@
      'a' hash
      'ab' hash = 'ab' asUnicode16String hash
     "
-    
+
     "Created: / 26-12-2011 / 13:53:09 / cg"
 !
 
@@ -1726,10 +1726,10 @@
     cp = __stringVal(self);
     l = __stringSize(self);
     if (__qClass(self) != @global(String)) {
-        int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
-
-        cp += n;
-        l -= n;
+	int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+	cp += n;
+	l -= n;
     }
 
     /*
@@ -1739,28 +1739,28 @@
     val = 0;
     switch (l) {
     default:
-        for (cp0 = cp, cp += l - 1; cp >= cp0; cp--) {
-            val = (val << 4) + *cp;
-            if (g = (val & 0xF0000000)) {
-                val ^= g >> 24;
-                val ^= g;
-            }
-        }
-        break;
+	for (cp0 = cp, cp += l - 1; cp >= cp0; cp--) {
+	    val = (val << 4) + *cp;
+	    if (g = (val & 0xF0000000)) {
+		val ^= g >> 24;
+		val ^= g;
+	    }
+	}
+	break;
     case 6:
-        val = cp[5] << 4;
+	val = cp[5] << 4;
     case 5:
-        val = (val + cp[4]) << 4;
+	val = (val + cp[4]) << 4;
     case 4:
-        val = (val + cp[3]) << 4;
+	val = (val + cp[3]) << 4;
     case 3:
-        val = (val + cp[2]) << 4;
+	val = (val + cp[2]) << 4;
     case 2:
-        val = (val + cp[1]) << 4;
+	val = (val + cp[1]) << 4;
     case 1:
-        val = val + cp[0];
+	val = val + cp[0];
     case 0:
-        break;
+	break;
     }
 
     /*
@@ -1790,83 +1790,83 @@
     int argIsString;
 
     if (aString == self) {
-        RETURN ( false );
+	RETURN ( false );
     }
     if (! __isNonNilObject(aString)) {
-        RETURN ( true );
+	RETURN ( true );
     }
 
     argIsString = __qIsStringLike(aString);
     if (argIsString || __qClass(aString) == __qClass(self)) {
-        cp1 = __stringVal(self);
-        l1 = __stringSize(self);
-        /*
-         * care for instances of subclasses ...
-         */
-        if (!__qIsStringLike(self)) {
-            int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
-
-            cp1 += n;
-            l1 -= n;
-        }
-
-        cp2 = __stringVal(aString);
-        l2 = __stringSize(aString);
-        /*
-         * care for instances of subclasses ...
-         */
-        if (!argIsString) {
-            int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
-
-            cp2 += n;
-            l2 -= n;
-        }
-
-        if (l1 != l2) {
-            RETURN ( true );
-        }
-
-        addrDelta = cp2 - cp1;
+	cp1 = __stringVal(self);
+	l1 = __stringSize(self);
+	/*
+	 * care for instances of subclasses ...
+	 */
+	if (!__qIsStringLike(self)) {
+	    int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+
+	    cp1 += n;
+	    l1 -= n;
+	}
+
+	cp2 = __stringVal(aString);
+	l2 = __stringSize(aString);
+	/*
+	 * care for instances of subclasses ...
+	 */
+	if (!argIsString) {
+	    int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aString))->c_ninstvars));
+
+	    cp2 += n;
+	    l2 -= n;
+	}
+
+	if (l1 != l2) {
+	    RETURN ( true );
+	}
+
+	addrDelta = cp2 - cp1;
 # ifdef __UNROLL_LOOPS__
-        while (l1 >= (sizeof(unsigned INT)*4)) {
-            if (((unsigned INT *)cp1)[0] != ((unsigned INT *)(cp1+addrDelta))[0]) {
-                RETURN (true);
-            }
-            if (((unsigned INT *)cp1)[1] != ((unsigned INT *)(cp1+addrDelta))[1]) {
-                RETURN (true);
-            }
-            if (((unsigned INT *)cp1)[2] != ((unsigned INT *)(cp1+addrDelta))[2]) {
-                RETURN (true);
-            }
-            if (((unsigned INT *)cp1)[3] != ((unsigned INT *)(cp1+addrDelta))[3]) {
-                RETURN (true);
-            }
-            l1 -= (sizeof(unsigned INT) * 4);
-            cp1 += (sizeof(unsigned INT) * 4);
-        }
+	while (l1 >= (sizeof(unsigned INT)*4)) {
+	    if (((unsigned INT *)cp1)[0] != ((unsigned INT *)(cp1+addrDelta))[0]) {
+		RETURN (true);
+	    }
+	    if (((unsigned INT *)cp1)[1] != ((unsigned INT *)(cp1+addrDelta))[1]) {
+		RETURN (true);
+	    }
+	    if (((unsigned INT *)cp1)[2] != ((unsigned INT *)(cp1+addrDelta))[2]) {
+		RETURN (true);
+	    }
+	    if (((unsigned INT *)cp1)[3] != ((unsigned INT *)(cp1+addrDelta))[3]) {
+		RETURN (true);
+	    }
+	    l1 -= (sizeof(unsigned INT) * 4);
+	    cp1 += (sizeof(unsigned INT) * 4);
+	}
 # endif /* __UNROLL_LOOPS__ */
-        while (l1 >= sizeof(unsigned INT)) {
-            if (*((unsigned INT *)cp1) != *((unsigned INT *)(cp1+addrDelta))) {
-                RETURN (true);
-            }
-            l1 -= sizeof(unsigned INT);
-            cp1 += sizeof(unsigned INT);
-        }
-        if (l1 >= sizeof(unsigned short)) {
-            if (*((unsigned short *)cp1) != *((unsigned short *)(cp1+addrDelta))) {
-                RETURN (true);
-            }
-            l1 -= sizeof(unsigned short);
-            cp1 += sizeof(unsigned short);
-        }
-        while (l1) {
-            if (*cp1 != *(cp1+addrDelta)) {
-                RETURN (true);
-            }
-            l1--;
-            cp1++;
-        }
-        RETURN (false);
+	while (l1 >= sizeof(unsigned INT)) {
+	    if (*((unsigned INT *)cp1) != *((unsigned INT *)(cp1+addrDelta))) {
+		RETURN (true);
+	    }
+	    l1 -= sizeof(unsigned INT);
+	    cp1 += sizeof(unsigned INT);
+	}
+	if (l1 >= sizeof(unsigned short)) {
+	    if (*((unsigned short *)cp1) != *((unsigned short *)(cp1+addrDelta))) {
+		RETURN (true);
+	    }
+	    l1 -= sizeof(unsigned short);
+	    cp1 += sizeof(unsigned short);
+	}
+	while (l1) {
+	    if (*cp1 != *(cp1+addrDelta)) {
+		RETURN (true);
+	    }
+	    l1--;
+	    cp1++;
+	}
+	RETURN (false);
     }
 %}.
     ^ super ~= aString
@@ -1878,21 +1878,21 @@
     "Answer an array with all the substrings of the receiver separated by
      separator characters (space, cr, tab, linefeed, formfeed, etc).
      CG: This is ported Squeak code, and I am not sure if it is more efficient than
-         the inherited one... after all: who added it anyway ?"
+	 the inherited one... after all: who added it anyway ?"
 
     | substrings start end |
 
     substrings := OrderedCollection new.
     start := 1.
     [start <= self size] whileTrue: [
-        (self at: start) isSeparator ifFalse: [
-            end := start + 1.
-            [end <= self size and: [(self at: end) isSeparator not]]
-                whileTrue: [end := end + 1].
-            substrings add: (self copyFrom: start to: end - 1).
-            start := end - 1
-        ].
-        start := start + 1
+	(self at: start) isSeparator ifFalse: [
+	    end := start + 1.
+	    [end <= self size and: [(self at: end) isSeparator not]]
+		whileTrue: [end := end + 1].
+	    substrings add: (self copyFrom: start to: end - 1).
+	    start := end - 1
+	].
+	start := start + 1
     ].
     ^ substrings asArray
 !
@@ -1904,10 +1904,10 @@
      Notice, that all singleByte strings are already 0-terminated in ST/X, whereas wide
      strings are not."
 
-    ^ self 
+    ^ self
 
     "
-     'abc' asAsciiZ               
+     'abc' asAsciiZ
      'abc' asWideString asAsciiZ
     "
 !
@@ -1986,16 +1986,16 @@
 !
 
 asPackageId
-    "given a package-string as receiver, return a packageId object. 
+    "given a package-string as receiver, return a packageId object.
      packageIds hide the details of module/directory handling inside the path.
      See PackageId for the required format of those strings."
 
     ^ PackageId from: self
 
     "
-     'stx:libbasic' asPackageId  
-     'stx:goodies/net/ssl' asPackageId  
-     'stx:hello' asPackageId  
+     'stx:libbasic' asPackageId
+     'stx:goodies/net/ssl' asPackageId
+     'stx:hello' asPackageId
     "
 
     "Created: / 18-08-2006 / 12:19:54 / cg"
@@ -2211,74 +2211,74 @@
     OBJ newString;
 
     if (__isNonNilObject(aString)) {
-        /*
-         * can do it here if both are Strings/Symbols:
-         */
-        if (__qIsStringLike(self) && __qIsStringLike(aString)) {
-            l1 = __stringSize(self);
-            l2 = __stringSize(aString);
-
-            sz = OHDR_SIZE + l1 + l2 + 1;
-            __qNew(newString, sz);      /* OBJECT ALLOCATION */
-            if (newString != nil) {
-                char *cp1, *cp2;
-                REGISTER unsigned char *dstp;
-
-                __InstPtr(newString)->o_class = String;
-                __qSTORE(newString, String);
-                dstp = __stringVal(newString);
-                cp1 = (char *) __stringVal(self);
-                cp2 = (char *) __stringVal(aString);
+	/*
+	 * can do it here if both are Strings/Symbols:
+	 */
+	if (__qIsStringLike(self) && __qIsStringLike(aString)) {
+	    l1 = __stringSize(self);
+	    l2 = __stringSize(aString);
+
+	    sz = OHDR_SIZE + l1 + l2 + 1;
+	    __qNew(newString, sz);      /* OBJECT ALLOCATION */
+	    if (newString != nil) {
+		char *cp1, *cp2;
+		REGISTER unsigned char *dstp;
+
+		__InstPtr(newString)->o_class = String;
+		__qSTORE(newString, String);
+		dstp = __stringVal(newString);
+		cp1 = (char *) __stringVal(self);
+		cp2 = (char *) __stringVal(aString);
 
 #ifdef bcopy4
-                /* knowing that allocation is 4-byte aligned and
-                 * size rounded up to next 4-byte, the first copy
-                 * can be done word-wise.
-                 * that speeds up size-10-string , size-10-string
-                 * by 10% on a P5/200.
-                 */
-                {
-                    int nw = l1 >> 2;
-
-                    if (l1 & 3) nw++;
-                    bcopy4(cp1, dstp, nw);
-                    dstp += l1;
-                }
+		/* knowing that allocation is 4-byte aligned and
+		 * size rounded up to next 4-byte, the first copy
+		 * can be done word-wise.
+		 * that speeds up size-10-string , size-10-string
+		 * by 10% on a P5/200.
+		 */
+		{
+		    int nw = l1 >> 2;
+
+		    if (l1 & 3) nw++;
+		    bcopy4(cp1, dstp, nw);
+		    dstp += l1;
+		}
 #else
 # ifdef FAST_MEMCPY
-                memcpy(dstp, cp1, l1);
-                dstp += l1;
+		memcpy(dstp, cp1, l1);
+		dstp += l1;
 # else
-                while (l1 >= 4) {
-                    *(int *)dstp = *(int *)cp1;
-                    dstp += 4; cp1 += 4;
-                    l1 -= 4;
-                }
-                while (l1--) *dstp++ = *cp1++;
+		while (l1 >= 4) {
+		    *(int *)dstp = *(int *)cp1;
+		    dstp += 4; cp1 += 4;
+		    l1 -= 4;
+		}
+		while (l1--) *dstp++ = *cp1++;
 # endif
 #endif
 
 #ifdef bcopy4
-                if (((INT)dstp & 3) == 0) {
-                    int nw = l2 >> 2;
-
-                    if (l2 & 3) nw++;
-                    bcopy4(cp2, dstp, nw);
-                    *(dstp + l2) = '\0';
-                    RETURN ( newString );
-                }
+		if (((INT)dstp & 3) == 0) {
+		    int nw = l2 >> 2;
+
+		    if (l2 & 3) nw++;
+		    bcopy4(cp2, dstp, nw);
+		    *(dstp + l2) = '\0';
+		    RETURN ( newString );
+		}
 #endif
 
 #ifdef FAST_MEMCPY
-                memcpy(dstp, cp2, l2+1);
-                dstp[l2] = '\0';
+		memcpy(dstp, cp2, l2+1);
+		dstp[l2] = '\0';
 #else
-                while (l2--) *dstp++ = *cp2++;
-                *dstp = '\0';
+		while (l2--) *dstp++ = *cp2++;
+		*dstp = '\0';
 #endif
-                RETURN ( newString );
-            }
-        }
+		RETURN ( newString );
+	    }
+	}
     }
 %}.
     ^ super , aString
@@ -2306,34 +2306,34 @@
 #endif
     REGISTER unsigned char *dstp;
 
-    if (__qIsStringLike(self) 
-            && __isStringLike(string1)
-            && __isStringLike(string2)) {
-        len1 = __stringSize(self);
-        len2 = __stringSize(string1);
-        len3 = __stringSize(string2);
-        sz = OHDR_SIZE + len1 + len2 + len3 + 1;
-        __qNew(newString, sz);  /* OBJECT ALLOCATION */
-        if (newString != nil) {
-            __InstPtr(newString)->o_class = String;
-            __qSTORE(newString, String);
-            dstp = __stringVal(newString);
+    if (__qIsStringLike(self)
+	    && __isStringLike(string1)
+	    && __isStringLike(string2)) {
+	len1 = __stringSize(self);
+	len2 = __stringSize(string1);
+	len3 = __stringSize(string2);
+	sz = OHDR_SIZE + len1 + len2 + len3 + 1;
+	__qNew(newString, sz);  /* OBJECT ALLOCATION */
+	if (newString != nil) {
+	    __InstPtr(newString)->o_class = String;
+	    __qSTORE(newString, String);
+	    dstp = __stringVal(newString);
 #ifdef FAST_MEMCPY
-            memcpy(dstp, __stringVal(self), len1);
-            memcpy(dstp + len1, __stringVal(string1), len2);
-            memcpy(dstp + len1 + len2, __stringVal(string2), len3+1);
-            *(dstp + len1 + len2 + len3) = '\0';
+	    memcpy(dstp, __stringVal(self), len1);
+	    memcpy(dstp + len1, __stringVal(string1), len2);
+	    memcpy(dstp + len1 + len2, __stringVal(string2), len3+1);
+	    *(dstp + len1 + len2 + len3) = '\0';
 #else
-            srcp = __stringVal(self);
-            while (len1--) *dstp++ = *srcp++;
-            srcp = __stringVal(string1);
-            while (len2--) *dstp++ = *srcp++;
-            srcp = __stringVal(string2);
-            while (len3--) *dstp++ = *srcp++;
-            *dstp = '\0';
+	    srcp = __stringVal(self);
+	    while (len1--) *dstp++ = *srcp++;
+	    srcp = __stringVal(string1);
+	    while (len2--) *dstp++ = *srcp++;
+	    srcp = __stringVal(string2);
+	    while (len3--) *dstp++ = *srcp++;
+	    *dstp = '\0';
 #endif
-            RETURN ( newString );
-        }
+	    RETURN ( newString );
+	}
     }
 %}.
     ^ super , string1 , string2
@@ -2353,39 +2353,39 @@
 #endif
     REGISTER unsigned char *dstp;
 
-    if (__qIsStringLike(self) 
+    if (__qIsStringLike(self)
      && __isStringLike(string1)
      && __isStringLike(string2)
      && __isStringLike(string3)) {
-        len1 = __stringSize(self);
-        len2 = __stringSize(string1);
-        len3 = __stringSize(string2);
-        len4 = __stringSize(string3);
-        sz = OHDR_SIZE + len1 + len2 + len3 + len4 + 1;
-        __qNew(newString, sz);  /* OBJECT ALLOCATION */
-        if (newString != nil) {
-            __InstPtr(newString)->o_class = String;
-            __qSTORE(newString, String);
-            dstp = __stringVal(newString);
+	len1 = __stringSize(self);
+	len2 = __stringSize(string1);
+	len3 = __stringSize(string2);
+	len4 = __stringSize(string3);
+	sz = OHDR_SIZE + len1 + len2 + len3 + len4 + 1;
+	__qNew(newString, sz);  /* OBJECT ALLOCATION */
+	if (newString != nil) {
+	    __InstPtr(newString)->o_class = String;
+	    __qSTORE(newString, String);
+	    dstp = __stringVal(newString);
 #ifdef FAST_MEMCPY
-            memcpy(dstp, __stringVal(self), len1);
-            memcpy(dstp + len1, __stringVal(string1), len2);
-            memcpy(dstp + len1 + len2, __stringVal(string2), len3);
-            memcpy(dstp + len1 + len2 + len3, __stringVal(string3), len4+1);
-            *(dstp + len1 + len2 + len3 + len4) = '\0';
+	    memcpy(dstp, __stringVal(self), len1);
+	    memcpy(dstp + len1, __stringVal(string1), len2);
+	    memcpy(dstp + len1 + len2, __stringVal(string2), len3);
+	    memcpy(dstp + len1 + len2 + len3, __stringVal(string3), len4+1);
+	    *(dstp + len1 + len2 + len3 + len4) = '\0';
 #else
-            srcp = __stringVal(self);
-            while (len1--) *dstp++ = *srcp++;
-            srcp = __stringVal(string1);
-            while (len2--) *dstp++ = *srcp++;
-            srcp = __stringVal(string2);
-            while (len3--) *dstp++ = *srcp++;
-            srcp = __stringVal(string3);
-            while (len4--) *dstp++ = *srcp++;
-            *dstp = '\0';
+	    srcp = __stringVal(self);
+	    while (len1--) *dstp++ = *srcp++;
+	    srcp = __stringVal(string1);
+	    while (len2--) *dstp++ = *srcp++;
+	    srcp = __stringVal(string2);
+	    while (len3--) *dstp++ = *srcp++;
+	    srcp = __stringVal(string3);
+	    while (len4--) *dstp++ = *srcp++;
+	    *dstp = '\0';
 #endif
-            RETURN ( newString );
-        }
+	    RETURN ( newString );
+	}
     }
 %}.
     ^ super , string1 , string2 , string3
@@ -2640,7 +2640,7 @@
      of its named instvars ...
     "
     (self isMemberOf:String) ifTrue:[
-        ^ self copyFrom:1
+	^ self copyFrom:1
     ].
     ^ super deepCopyUsing:aDictionary postCopySelector:postCopySelector
 !
@@ -2683,7 +2683,7 @@
     REGISTER int byteValue;
 
     if (__isCharacter(aCharacter) && __isString(self)) {
-	byteValue = __intVal(_characterVal(aCharacter));
+	byteValue = __intVal(__characterVal(aCharacter));
 	if ((unsigned)byteValue <= 0xFF) {
 	    l = __stringSize(self);
 
@@ -2786,8 +2786,8 @@
      && __isCharacter(newCharacter)
      && __isString(self)) {
 	srcp = (unsigned char *)__stringVal(self);
-	oldVal = __intVal(_characterVal(oldCharacter));
-	newVal = __intVal(_characterVal(newCharacter));
+	oldVal = __intVal(__characterVal(oldCharacter));
+	newVal = __intVal(__characterVal(newCharacter));
 	if ((oldVal <= 0xFF)
 	 && (newVal <= 0xFF)) {
 	    cNext = *srcp;
@@ -2828,74 +2828,74 @@
     if (__isStringLike(aString)
      && __isString(self)
      && __bothSmallInteger(start, stop)) {
-        len = __stringSize(self);
-        index1 = __intVal(start);
-        index2 = __intVal(stop);
-        count = index2 - index1 + 1;
-        if (count <= 0) {
-             RETURN (self);
-        }
-        if ((index2 <= len) && (index1 > 0)) {
-            repLen = __stringSize(aString);
-            repIndex = __intVal(repStart);
-            if ((repIndex > 0) && ((repIndex + count - 1) <= repLen)) {
-                srcp = __stringVal(aString) + repIndex - 1;
-                dstp = __stringVal(self) + index1 - 1;
-                if (aString == self) {
-                    /* take care of overlapping copy */
-                    if (srcp < dstp) {
-                        /* must do a reverse copy */
-                        srcp += count;
-                        dstp += count;
-                        while (count-- > 0) {
-                            *--dstp = *--srcp;
-                        }
-                        RETURN (self);
-                    }
-                }
+	len = __stringSize(self);
+	index1 = __intVal(start);
+	index2 = __intVal(stop);
+	count = index2 - index1 + 1;
+	if (count <= 0) {
+	     RETURN (self);
+	}
+	if ((index2 <= len) && (index1 > 0)) {
+	    repLen = __stringSize(aString);
+	    repIndex = __intVal(repStart);
+	    if ((repIndex > 0) && ((repIndex + count - 1) <= repLen)) {
+		srcp = __stringVal(aString) + repIndex - 1;
+		dstp = __stringVal(self) + index1 - 1;
+		if (aString == self) {
+		    /* take care of overlapping copy */
+		    if (srcp < dstp) {
+			/* must do a reverse copy */
+			srcp += count;
+			dstp += count;
+			while (count-- > 0) {
+			    *--dstp = *--srcp;
+			}
+			RETURN (self);
+		    }
+		}
 #ifdef bcopy4
-                /* copy quadbytes if pointers are aligned */
-                /*
-                 * no sizeof(int) here please -
-                 * - bcopy4 (if defined) copies 4-bytes on ALL machines
-                 */
-                if ((count > 12)
-                 && (((unsigned INT)srcp & 3) == 0)
-                 && (((unsigned INT)dstp & 3) == 0)) {
-                    int n;
-
-                    n = count >> 2;        /* make it quads */
-                    bcopy4(srcp, dstp, n);
-                    n <<= 2;               /* back to chars */
-                    dstp += n;
-                    srcp += n;
-                    count -= n;
-                }
-                while (count-- > 0) {
-                    *dstp++ = *srcp++;
-                }
+		/* copy quadbytes if pointers are aligned */
+		/*
+		 * no sizeof(int) here please -
+		 * - bcopy4 (if defined) copies 4-bytes on ALL machines
+		 */
+		if ((count > 12)
+		 && (((unsigned INT)srcp & 3) == 0)
+		 && (((unsigned INT)dstp & 3) == 0)) {
+		    int n;
+
+		    n = count >> 2;        /* make it quads */
+		    bcopy4(srcp, dstp, n);
+		    n <<= 2;               /* back to chars */
+		    dstp += n;
+		    srcp += n;
+		    count -= n;
+		}
+		while (count-- > 0) {
+		    *dstp++ = *srcp++;
+		}
 #else
 # ifdef FAST_MEMCPY
-                bcopy(srcp, dstp, count);
+		bcopy(srcp, dstp, count);
 # else
-                /* copy longs if pointers are aligned */
-                if ((((unsigned INT)srcp & (sizeof(INT)-1)) == 0)
-                 && (((unsigned INT)dstp & (sizeof(INT)-1)) == 0)) {
-                    while (count >= sizeof(INT)) {
-                        *((unsigned INT *)dstp) = *((unsigned INT *)srcp);
-                        dstp += sizeof(INT);
-                        srcp += sizeof(INT);
-                        count -= sizeof(INT);
-                    }
-                }
-                while (count-- > 0) {
-                    *dstp++ = *srcp++;
-                }
+		/* copy longs if pointers are aligned */
+		if ((((unsigned INT)srcp & (sizeof(INT)-1)) == 0)
+		 && (((unsigned INT)dstp & (sizeof(INT)-1)) == 0)) {
+		    while (count >= sizeof(INT)) {
+			*((unsigned INT *)dstp) = *((unsigned INT *)srcp);
+			dstp += sizeof(INT);
+			srcp += sizeof(INT);
+			count -= sizeof(INT);
+		    }
+		}
+		while (count-- > 0) {
+		    *dstp++ = *srcp++;
+		}
 # endif
 #endif
-                RETURN (self);
-            }
-        }
+		RETURN (self);
+	    }
+	}
     }
 #endif
 %}.
@@ -3071,16 +3071,16 @@
 %{  /* NOCONTEXT */
 
     if (__qIsStringLike(self)) {
-        if (@global(Stderr) == nil) {
-            console_fprintf(stderr, "%s" , __stringVal(self));
-            console_fflush(stderr);
-            RETURN (self);
-        }
+	if (@global(Stderr) == nil) {
+	    console_fprintf(stderr, "%s" , __stringVal(self));
+	    console_fflush(stderr);
+	    RETURN (self);
+	}
     }
 %}.
     ^ super errorPrint
 
-    "  
+    "
       'hello world' asUnicode16String errorPrint
       (Character value:356) asString errorPrint
       'Bönnigheim' errorPrint
@@ -3096,11 +3096,11 @@
 %{  /* NOCONTEXT */
 
     if (__qIsStringLike(self)) {
-        if (@global(Stderr) == nil) {
-            console_fprintf(stderr, "%s\n" , __stringVal(self));
-            console_fflush(stderr);
-            RETURN (self);
-        }
+	if (@global(Stderr) == nil) {
+	    console_fprintf(stderr, "%s\n" , __stringVal(self));
+	    console_fflush(stderr);
+	    RETURN (self);
+	}
     }
 %}.
     ^ super errorPrintCR
@@ -3114,11 +3114,11 @@
 %{  /* NOCONTEXT */
 
     if (__qIsStringLike(self)) {
-        if (@global(Stdout) == nil) {
-            console_fprintf(stdout, "%s" , __stringVal(self));
-            console_fflush(stdout);
-            RETURN (self);
-        }
+	if (@global(Stdout) == nil) {
+	    console_fprintf(stdout, "%s" , __stringVal(self));
+	    console_fflush(stdout);
+	    RETURN (self);
+	}
     }
 %}.
     ^ super print
@@ -3132,11 +3132,11 @@
 %{  /* NOCONTEXT */
 
     if (__qIsStringLike(self)) {
-        if (@global(Stdout) == nil) {
-            console_fprintf(stdout, "%s\n" , __stringVal(self));
-            console_fflush(stdout);
-            RETURN (self);
-        }
+	if (@global(Stdout) == nil) {
+	    console_fprintf(stdout, "%s\n" , __stringVal(self));
+	    console_fflush(stdout);
+	    RETURN (self);
+	}
     }
 %}.
     ^ super printCR
@@ -3162,44 +3162,44 @@
     extern void *malloc();
 
     if (__isStringLike(formatString)) {
-        cp = (char *)__stringVal(self);
-        if (__qClass(self) != String) {
-            cp += __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
-        }
+	cp = (char *)__stringVal(self);
+	if (__qClass(self) != String) {
+	    cp += __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
+	}
 again:
-        /*
-         * actually only needed on sparc: since thisContext is
-         * in a global register, which gets destroyed by printf,
-         * manually save it here - very stupid ...
-         */
-        __BEGIN_PROTECT_REGISTERS__
-
-        len = snprintf(buf, bufsize, (char *)__stringVal(formatString), cp);
-
-        __END_PROTECT_REGISTERS__
-
-        if ((len < 0) || (len > bufsize)) {
-            if (len < 0) {
-                bufsize = bufsize * 2;
-            } else {
-                bufsize = len + 1;
-            }
-            if (mallocbuf)
-                free(mallocbuf);
-            buf = mallocbuf = malloc(bufsize);
-            if (buf == NULL)
-                goto fail;
-            goto again;
-        }
-
-        s = __MKSTRING_L(buf, len);
-
-        if (mallocbuf)
-            free(mallocbuf);
-
-        if (s != nil) {
-            RETURN (s);
-        }
+	/*
+	 * actually only needed on sparc: since thisContext is
+	 * in a global register, which gets destroyed by printf,
+	 * manually save it here - very stupid ...
+	 */
+	__BEGIN_PROTECT_REGISTERS__
+
+	len = snprintf(buf, bufsize, (char *)__stringVal(formatString), cp);
+
+	__END_PROTECT_REGISTERS__
+
+	if ((len < 0) || (len > bufsize)) {
+	    if (len < 0) {
+		bufsize = bufsize * 2;
+	    } else {
+		bufsize = len + 1;
+	    }
+	    if (mallocbuf)
+		free(mallocbuf);
+	    buf = mallocbuf = malloc(bufsize);
+	    if (buf == NULL)
+		goto fail;
+	    goto again;
+	}
+
+	s = __MKSTRING_L(buf, len);
+
+	if (mallocbuf)
+	    free(mallocbuf);
+
+	if (s != nil) {
+	    RETURN (s);
+	}
     }
 fail:;
 %}.
@@ -3390,7 +3390,7 @@
 reverse
     "in-place reverse the characters of the string.
      WARNING: this is a destructive operation, which modifies the receiver.
-              Please use reversed (with a d) for a functional version."
+	      Please use reversed (with a d) for a functional version."
 
     "Q: is there a need to redefine it here ?"
 
@@ -3400,16 +3400,16 @@
     REGISTER unsigned char *hip, *lowp;
 
     if (__isString(self)) {
-        lowp = __stringVal(self);
-        hip = lowp + __stringSize(self) - 1;
-        while (lowp < hip) {
-            c = *lowp;
-            *lowp = *hip;
-            *hip = c;
-            lowp++;
-            hip--;
-        }
-        RETURN ( self );
+	lowp = __stringVal(self);
+	hip = lowp + __stringSize(self) - 1;
+	while (lowp < hip) {
+	    c = *lowp;
+	    *lowp = *hip;
+	    *hip = c;
+	    lowp++;
+	    hip--;
+	}
+	RETURN ( self );
     }
 %}.
     ^ super reverse
@@ -3423,117 +3423,117 @@
     |notFound|
 
 %{  /* STACK:4000 */
-    if (__qIsStringLike(self) 
+    if (__qIsStringLike(self)
      && __isStringLike(aSubString)
      && (caseSensitive == true)
      && (__isSmallInteger(startIndex))
      && (__intVal(startIndex) > 0)
     ) {
-        unsigned char *y = __stringVal(self);
-        unsigned char *x = __stringVal(aSubString);
-        int m = __stringSize(aSubString);
-        int n = __stringSize(self);
+	unsigned char *y = __stringVal(self);
+	unsigned char *x = __stringVal(aSubString);
+	int m = __stringSize(aSubString);
+	int n = __stringSize(self);
 #       define MAX_PATTERN_SIZE 128
 #       define XSIZE 256
 #       define ASIZE 256
 #       define MAX(a,b) (a>b ? a : b)
 
-        if (m == 0) {
+	if (m == 0) {
 #if 1
-            /* empty string does not match */
-            RETURN(__mkSmallInteger(0));
+	    /* empty string does not match */
+	    RETURN(__mkSmallInteger(0));
 #else
-            /* empty string matches */
-            RETURN(startIndex);
+	    /* empty string matches */
+	    RETURN(startIndex);
 #endif
-        }
-        if (m <= XSIZE) {
-            int i, j;
-            static int lastPatternSize = 0;
-            static char lastPattern[MAX_PATTERN_SIZE+1] = { 0 };
-            static int bmGs[XSIZE+1], bmBc[ASIZE];
+	}
+	if (m <= XSIZE) {
+	    int i, j;
+	    static int lastPatternSize = 0;
+	    static char lastPattern[MAX_PATTERN_SIZE+1] = { 0 };
+	    static int bmGs[XSIZE+1], bmBc[ASIZE];
 
 #           define preBmBc(x, m, bmBc) {          \
-               int i;                             \
-                                                  \
-               for (i = 0; i < ASIZE; ++i)        \
-                  bmBc[i] = m;                    \
-               for (i = 0; i < m - 1; ++i)        \
-                  bmBc[x[i]] = m - i - 1;         \
-            }
+	       int i;                             \
+						  \
+	       for (i = 0; i < ASIZE; ++i)        \
+		  bmBc[i] = m;                    \
+	       for (i = 0; i < m - 1; ++i)        \
+		  bmBc[x[i]] = m - i - 1;         \
+	    }
 
 #           define suffixes(x, m, suff) {                       \
-               int f, g, i;                                     \
-                                                                \
-               suff[m - 1] = m;                                 \
-               g = m - 1;                                       \
-               for (i = m - 2; i >= 0; --i) {                   \
-                  if (i > g && suff[i + m - 1 - f] < i - g)     \
-                     suff[i] = suff[i + m - 1 - f];             \
-                  else {                                        \
-                     if (i < g)                                 \
-                        g = i;                                  \
-                     f = i;                                     \
-                     while (g >= 0 && x[g] == x[g + m - 1 - f]) \
-                        --g;                                    \
-                     suff[i] = f - g;                           \
-                  }                                             \
-               }                                                \
-            }
+	       int f, g, i;                                     \
+								\
+	       suff[m - 1] = m;                                 \
+	       g = m - 1;                                       \
+	       for (i = m - 2; i >= 0; --i) {                   \
+		  if (i > g && suff[i + m - 1 - f] < i - g)     \
+		     suff[i] = suff[i + m - 1 - f];             \
+		  else {                                        \
+		     if (i < g)                                 \
+			g = i;                                  \
+		     f = i;                                     \
+		     while (g >= 0 && x[g] == x[g + m - 1 - f]) \
+			--g;                                    \
+		     suff[i] = f - g;                           \
+		  }                                             \
+	       }                                                \
+	    }
 
 #           define preBmGs(x, m, bmGs) {                        \
-               int i, j, suff[XSIZE];                           \
-                                                                \
-               suffixes(x, m, suff);                            \
-                                                                \
-               for (i = 0; i < m; ++i)                          \
-                  bmGs[i] = m;                                  \
-               j = 0;                                           \
-               for (i = m - 1; i >= 0; --i)                     \
-                  if (suff[i] == i + 1)                         \
-                     for (; j < m - 1 - i; ++j)                 \
-                        if (bmGs[j] == m)                       \
-                           bmGs[j] = m - 1 - i;                 \
-               for (i = 0; i <= m - 2; ++i)                     \
-                  bmGs[m - 1 - suff[i]] = m - 1 - i;            \
-            }
-
-            /* tables only depend on pattern; so we can cache them in case the same string is searched again */
-            if ((m == lastPatternSize)
-             && (strcmp(lastPattern, x) == 0)) {
-                /* tables are still valid */
-                // printf("valid: \"%s\"\n", lastPattern);
-            } else {                
-                /* Preprocessing */
-                // printf("compute: \"%s\"\n", lastPattern);
-                preBmGs(x, m, bmGs);
-                preBmBc(x, m, bmBc);
-                if (m <= MAX_PATTERN_SIZE) {
-                    // printf("cache for: \"%s\"\n", lastPattern);
-                    strcpy(lastPattern, x);
-                    lastPatternSize = m;
-                }
-            }
-
-            /* Searching */
-            j = __intVal(startIndex) - 1;
-            while (j <= n - m) {
-               for (i = m - 1; i >= 0 && x[i] == y[i + j]; --i);
-               if (i < 0) {
-                  RETURN (__mkSmallInteger(j+1));
-                  j += bmGs[0];  
-               } else {
-                  int s1 = bmGs[i];
-                  int s2 = bmBc[y[i + j]] - m + 1 + i;
-                  j += MAX(s1, s2);
-               }
-            }
-            notFound = true;
-        }
+	       int i, j, suff[XSIZE];                           \
+								\
+	       suffixes(x, m, suff);                            \
+								\
+	       for (i = 0; i < m; ++i)                          \
+		  bmGs[i] = m;                                  \
+	       j = 0;                                           \
+	       for (i = m - 1; i >= 0; --i)                     \
+		  if (suff[i] == i + 1)                         \
+		     for (; j < m - 1 - i; ++j)                 \
+			if (bmGs[j] == m)                       \
+			   bmGs[j] = m - 1 - i;                 \
+	       for (i = 0; i <= m - 2; ++i)                     \
+		  bmGs[m - 1 - suff[i]] = m - 1 - i;            \
+	    }
+
+	    /* tables only depend on pattern; so we can cache them in case the same string is searched again */
+	    if ((m == lastPatternSize)
+	     && (strcmp(lastPattern, x) == 0)) {
+		/* tables are still valid */
+		// printf("valid: \"%s\"\n", lastPattern);
+	    } else {
+		/* Preprocessing */
+		// printf("compute: \"%s\"\n", lastPattern);
+		preBmGs(x, m, bmGs);
+		preBmBc(x, m, bmBc);
+		if (m <= MAX_PATTERN_SIZE) {
+		    // printf("cache for: \"%s\"\n", lastPattern);
+		    strcpy(lastPattern, x);
+		    lastPatternSize = m;
+		}
+	    }
+
+	    /* Searching */
+	    j = __intVal(startIndex) - 1;
+	    while (j <= n - m) {
+	       for (i = m - 1; i >= 0 && x[i] == y[i + j]; --i);
+	       if (i < 0) {
+		  RETURN (__mkSmallInteger(j+1));
+		  j += bmGs[0];
+	       } else {
+		  int s1 = bmGs[i];
+		  int s2 = bmBc[y[i + j]] - m + 1 + i;
+		  j += MAX(s1, s2);
+	       }
+	    }
+	    notFound = true;
+	}
     }
 %}.
     notFound == true ifTrue:[
-        ^ exceptionValue value.
+	^ exceptionValue value.
     ].
     ^ super indexOfSubCollection:aSubString startingAt:startIndex ifAbsent:exceptionValue caseSensitive:caseSensitive
 
@@ -3553,32 +3553,32 @@
     REGISTER OBJ slf = self;
 
     if (__isStringLike(slf) && __isStringLike(aStringOrChar)) {
-        len1 = __qSize(slf);
-        len2 = __qSize(aStringOrChar);
-        if (len1 < len2) {
-            RETURN ( false );
-        }
-
-        src1 = __stringVal(slf) + (len1 - len2);
-        src2 = __stringVal(aStringOrChar);
-        while (c = *src2++) {
-            if (c != *src1++) {
-                RETURN ( false );
-            }
-        }
-        RETURN (true);
+	len1 = __qSize(slf);
+	len2 = __qSize(aStringOrChar);
+	if (len1 < len2) {
+	    RETURN ( false );
+	}
+
+	src1 = __stringVal(slf) + (len1 - len2);
+	src2 = __stringVal(aStringOrChar);
+	while (c = *src2++) {
+	    if (c != *src1++) {
+		RETURN ( false );
+	    }
+	}
+	RETURN (true);
     }
     if (__isCharacter(aStringOrChar)) {
-        int val;
-
-        val = __intVal(_characterVal(aStringOrChar));
-        if ((unsigned)val <= 0xFF) {
-            len1 = __stringSize(slf);
-            if (len1 > 0) {
-                RETURN ( (__stringVal(slf)[len1-1] == val) ? true : false);
-            }
-        }
-        RETURN ( false );
+	int val;
+
+	val = __intVal(__characterVal(aStringOrChar));
+	if ((unsigned)val <= 0xFF) {
+	    len1 = __stringSize(slf);
+	    if (len1 > 0) {
+		RETURN ( (__stringVal(slf)[len1-1] == val) ? true : false);
+	    }
+	}
+	RETURN ( false );
     }
 %}.
     ^ super endsWith:aStringOrChar
@@ -3679,77 +3679,77 @@
     extern void *malloc();
 
     if (__qIsStringLike(self) && __isStringLike(aString)
-        && __bothSmallInteger(insrtWeight, caseWeight)
-        && __bothSmallInteger(substWeight, deleteWeight)
-        && __isSmallInteger(kbdTypoWeight)
+	&& __bothSmallInteger(insrtWeight, caseWeight)
+	&& __bothSmallInteger(substWeight, deleteWeight)
+	&& __isSmallInteger(kbdTypoWeight)
     ) {
-        iW = __intVal(insrtWeight);
-        cW = __intVal(caseWeight);
-        sW = __intVal(substWeight);
-        kW = __intVal(kbdTypoWeight);
-        dW = __intVal(deleteWeight);
-        s1 = __stringVal(self);
-        s2 = __stringVal(aString);
-        l1 = strlen(s1);
-        l2 = strlen(s2);
-
-        sz = (l1 < l2) ? l2 : l1;
-        rowDelta = sz + 1;
-        if (sz <= FASTSIZE) {
-            data = fastData;
-        } else {
-            /* add ifdef ALLOCA here ... */
-            data = (unsigned short *)malloc(rowDelta * rowDelta * sizeof(short));
-            if (! data) goto mallocFailed;
-        }
-
-        data[0] = 0;
-        for (j=1, dp=data+1; j<=sz; j++, dp++)
-            *dp = dp[-1] + iW;
-
-        for (i=1, dp=data+rowDelta; i<=sz; i++, dp+=rowDelta)
-            *dp = dp[-rowDelta] + dW;
-
-        for (i=0; i<l1; i++) {
-            for (j=0; j<l2; j++) {
-                if (s1[i] == s2[j])
-                    m = 0;
-                else if (tolower(s1[i]) == tolower(s2[j]))
-                    m = cW;
-                else if (sW != kW && nextOnKeyboard(tolower(s1[i]), tolower(s2[j])))
-                    m = kW;
-                else
-                    m = sW;
-
-                dp = data + ((i+1)*rowDelta) + j;
-                v2 = dp[0] + iW;
-                v1 = dp[-rowDelta] + m;
-                v3 = dp[-rowDelta+1] + dW;
-                if (v1 < v2) {
-                    if (v1 < v3)
-                        m = v1;
-                    else
-                        m = v3;
-                } else {
-                    if (v2 < v3)
-                        m = v2;
-                    else
-                        m = v3;
-                }
-                dp[1] = m;
-            }
-        }
-        m = data[l1*rowDelta + l2];
-        if (sz > FASTSIZE)
-            free(data);
-        RETURN ( __mkSmallInteger(m) );
+	iW = __intVal(insrtWeight);
+	cW = __intVal(caseWeight);
+	sW = __intVal(substWeight);
+	kW = __intVal(kbdTypoWeight);
+	dW = __intVal(deleteWeight);
+	s1 = __stringVal(self);
+	s2 = __stringVal(aString);
+	l1 = strlen(s1);
+	l2 = strlen(s2);
+
+	sz = (l1 < l2) ? l2 : l1;
+	rowDelta = sz + 1;
+	if (sz <= FASTSIZE) {
+	    data = fastData;
+	} else {
+	    /* add ifdef ALLOCA here ... */
+	    data = (unsigned short *)malloc(rowDelta * rowDelta * sizeof(short));
+	    if (! data) goto mallocFailed;
+	}
+
+	data[0] = 0;
+	for (j=1, dp=data+1; j<=sz; j++, dp++)
+	    *dp = dp[-1] + iW;
+
+	for (i=1, dp=data+rowDelta; i<=sz; i++, dp+=rowDelta)
+	    *dp = dp[-rowDelta] + dW;
+
+	for (i=0; i<l1; i++) {
+	    for (j=0; j<l2; j++) {
+		if (s1[i] == s2[j])
+		    m = 0;
+		else if (tolower(s1[i]) == tolower(s2[j]))
+		    m = cW;
+		else if (sW != kW && nextOnKeyboard(tolower(s1[i]), tolower(s2[j])))
+		    m = kW;
+		else
+		    m = sW;
+
+		dp = data + ((i+1)*rowDelta) + j;
+		v2 = dp[0] + iW;
+		v1 = dp[-rowDelta] + m;
+		v3 = dp[-rowDelta+1] + dW;
+		if (v1 < v2) {
+		    if (v1 < v3)
+			m = v1;
+		    else
+			m = v3;
+		} else {
+		    if (v2 < v3)
+			m = v2;
+		    else
+			m = v3;
+		}
+		dp[1] = m;
+	    }
+	}
+	m = data[l1*rowDelta + l2];
+	if (sz > FASTSIZE)
+	    free(data);
+	RETURN ( __mkSmallInteger(m) );
     }
 mallocFailed: ;
 %}.
 
     ^ super levenshteinTo:aString
-                        s:substWeight k:kbdTypoWeight c:caseWeight
-                        i:insrtWeight d:deleteWeight
+			s:substWeight k:kbdTypoWeight c:caseWeight
+			i:insrtWeight d:deleteWeight
 
     "
      'ocmprt' levenshteinTo:'computer'
@@ -3790,81 +3790,81 @@
     REGISTER OBJ slf = self;
 
     if (__qIsStringLike(slf) &&__isStringLike(aStringOrChar)) {
-        src1 = __stringVal(slf);
-        src2 = __stringVal(aStringOrChar);
-
-        if (src1[0] != src2[0]) {
-            if (__qSize(aStringOrChar) == (OHDR_SIZE+1) /* 1 for the 0-byte */) {
-                RETURN (true);
-            }
-            RETURN ( false );
-        }
-
-        len1 = __qSize(slf);
-        len2 = __qSize(aStringOrChar);
-        if (len1 < len2) {
-            RETURN ( false );
-        }
+	src1 = __stringVal(slf);
+	src2 = __stringVal(aStringOrChar);
+
+	if (src1[0] != src2[0]) {
+	    if (__qSize(aStringOrChar) == (OHDR_SIZE+1) /* 1 for the 0-byte */) {
+		RETURN (true);
+	    }
+	    RETURN ( false );
+	}
+
+	len1 = __qSize(slf);
+	len2 = __qSize(aStringOrChar);
+	if (len1 < len2) {
+	    RETURN ( false );
+	}
 
 #ifdef UINT64
-        while (len2 > (OHDR_SIZE+sizeof(UINT64))) {
-            if ( ((UINT64 *)src1)[0] != ((UINT64 *)src2)[0] ) {
-                RETURN (false);
-            }
-            len2 -= sizeof(UINT64);
-            src1 += sizeof(UINT64);
-            src2 += sizeof(UINT64);
-        }
+	while (len2 > (OHDR_SIZE+sizeof(UINT64))) {
+	    if ( ((UINT64 *)src1)[0] != ((UINT64 *)src2)[0] ) {
+		RETURN (false);
+	    }
+	    len2 -= sizeof(UINT64);
+	    src1 += sizeof(UINT64);
+	    src2 += sizeof(UINT64);
+	}
 #else
 # ifdef __UNROLL_LOOPS__
-        while (len2 > (OHDR_SIZE+sizeof(INT)*4)) {
-            if ( ((unsigned INT *)src1)[0] != ((unsigned INT *)src2)[0]) {
-                RETURN (false);
-            }
-            if ( ((unsigned INT *)src1)[1] != ((unsigned INT *)src2)[1]) {
-                RETURN (false);
-            }
-            if ( ((unsigned INT *)src1)[2] != ((unsigned INT *)src2)[2]) {
-                RETURN (false);
-            }
-            if ( ((unsigned INT *)src1)[3] != ((unsigned INT *)src2)[3]) {
-                RETURN (false);
-            }
-            len2 -= sizeof(INT)*4;
-            src1 += sizeof(INT)*4;
-            src2 += sizeof(INT)*4;
-        }
+	while (len2 > (OHDR_SIZE+sizeof(INT)*4)) {
+	    if ( ((unsigned INT *)src1)[0] != ((unsigned INT *)src2)[0]) {
+		RETURN (false);
+	    }
+	    if ( ((unsigned INT *)src1)[1] != ((unsigned INT *)src2)[1]) {
+		RETURN (false);
+	    }
+	    if ( ((unsigned INT *)src1)[2] != ((unsigned INT *)src2)[2]) {
+		RETURN (false);
+	    }
+	    if ( ((unsigned INT *)src1)[3] != ((unsigned INT *)src2)[3]) {
+		RETURN (false);
+	    }
+	    len2 -= sizeof(INT)*4;
+	    src1 += sizeof(INT)*4;
+	    src2 += sizeof(INT)*4;
+	}
 # endif /* __UNROLL_LOOPS__ */
 #endif /* UINT64 */
 
-        while (len2 > (OHDR_SIZE+sizeof(INT))) {
-            if ( ((unsigned INT *)src1)[0] != ((unsigned INT *)src2)[0]) {
-                RETURN (false);
-            }
-            len2 -= sizeof(INT);
-            src1 += sizeof(INT);
-            src2 += sizeof(INT);
-        }
-
-        while (c = *src2++) {
-            if (c != *src1) {
-                RETURN ( false );
-            }
-            src1++;
-        }
-        RETURN (true);
+	while (len2 > (OHDR_SIZE+sizeof(INT))) {
+	    if ( ((unsigned INT *)src1)[0] != ((unsigned INT *)src2)[0]) {
+		RETURN (false);
+	    }
+	    len2 -= sizeof(INT);
+	    src1 += sizeof(INT);
+	    src2 += sizeof(INT);
+	}
+
+	while (c = *src2++) {
+	    if (c != *src1) {
+		RETURN ( false );
+	    }
+	    src1++;
+	}
+	RETURN (true);
     }
     if (__isCharacter(aStringOrChar)) {
-        int val;
-
-        val = __intVal(_characterVal(aStringOrChar));
-        if ((unsigned)val <= 0xFF) {
-            len1 = __stringSize(slf);
-            if (len1 > 0) {
-                RETURN ( (__stringVal(slf)[0] == val) ? true : false);
-            }
-        }
-        RETURN ( false );
+	int val;
+
+	val = __intVal(__characterVal(aStringOrChar));
+	if ((unsigned)val <= 0xFF) {
+	    len1 = __stringSize(slf);
+	    if (len1 > 0) {
+		RETURN ( (__stringVal(slf)[0] == val) ? true : false);
+	    }
+	}
+	RETURN ( false );
     }
 %}.
     ^ super startsWith:aStringOrChar
@@ -3895,10 +3895,10 @@
 !String class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.304 2013-04-03 14:28:43 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.305 2013-05-21 20:44:47 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.304 2013-04-03 14:28:43 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.305 2013-05-21 20:44:47 cg Exp $'
 ! !
 
--- a/UnixOperatingSystem.st	Tue May 21 22:26:48 2013 +0200
+++ b/UnixOperatingSystem.st	Tue May 21 22:44:47 2013 +0200
@@ -811,7 +811,7 @@
 		/* Safely copy the next pathname component. */
 		while (*path != '\0' && *path != '/') {
 			if (path > max_path) {
-		    	    if (mallocedPath) free(mallocedPath);
+			    if (mallocedPath) free(mallocedPath);
 			    errno = ENAMETOOLONG;
 			    return NULL;
 			}
@@ -830,7 +830,7 @@
 		if (n < 0) {
 			/* EINVAL means the file exists but isn't a symlink. */
 			if (errno != EINVAL) {
-		    	    if (mallocedPath) free(mallocedPath);
+			    if (mallocedPath) free(mallocedPath);
 			    return NULL;
 			}
 		}
@@ -846,7 +846,7 @@
 					;
 			/* Safe sex check. */
 			if (strlen(path) + n >= MAXPATHLEN) {
-		    	    if (mallocedPath) free(mallocedPath);
+			    if (mallocedPath) free(mallocedPath);
 			    errno = ENAMETOOLONG;
 			    return NULL;
 			}
@@ -3309,10 +3309,10 @@
      Here we get an absolute path to the running executable."
     info := '/proc/self/exe' asFilename linkInfo.
     info notNil ifTrue:[
-        path := info path.
-        path notEmptyOrNil ifTrue:[
-            ^ path
-        ].
+	path := info path.
+	path notEmptyOrNil ifTrue:[
+	    ^ path
+	].
      ].
 
     "Fall back - do it the hard way"
@@ -3333,31 +3333,31 @@
 
     commandFilename := aCommand asFilename.
     commandFilename isAbsolute ifTrue:[
-        ^ commandFilename pathName
+	^ commandFilename pathName
     ].
     commandFilename isExplicitRelative ifTrue:[
-         ^ commandFilename pathName
+	 ^ commandFilename pathName
     ].
 
     path := self getEnvironment:'PATH'.
     path notEmptyOrNil ifTrue:[
-        (path asCollectionOfSubstringsSeparatedBy:self pathSeparator) do:[:eachPathComponent |
-            eachPathComponent isEmpty ifTrue:[
-                f := commandFilename
-            ] ifFalse:[
-                f := eachPathComponent asFilename construct:aCommand.
-            ].
-            self executableFileExtensions do:[:eachExtension |
-                eachExtension notEmpty ifTrue:[
-                    fExt := f addSuffix:eachExtension.
-                ] ifFalse:[
-                    fExt := f.
-                ].
-                fExt isExecutable ifTrue:[
-                    ^ fExt pathName
-                ].
-            ].
-        ].
+	(path asCollectionOfSubstringsSeparatedBy:self pathSeparator) do:[:eachPathComponent |
+	    eachPathComponent isEmpty ifTrue:[
+		f := commandFilename
+	    ] ifFalse:[
+		f := eachPathComponent asFilename construct:aCommand.
+	    ].
+	    self executableFileExtensions do:[:eachExtension |
+		eachExtension notEmpty ifTrue:[
+		    fExt := f addSuffix:eachExtension.
+		] ifFalse:[
+		    fExt := f.
+		].
+		fExt isExecutable ifTrue:[
+		    ^ fExt pathName
+		].
+	    ].
+	].
     ].
     ^ nil
 
@@ -4783,18 +4783,18 @@
 
     if (__isStringLike(encodedPathName)) {
 # ifdef TRACE_STAT_CALLS
-        printf("stat on '%s' for isValidPath\n", __stringVal(encodedPathName));
-# endif
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = stat((char *) __stringVal(encodedPathName), &buf);
-        } while ((ret < 0) && (errno == EINTR));
-        __END_INTERRUPTABLE__
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN (false);
-        }
-        RETURN ( ret ? false : true );
+	printf("stat on '%s' for isValidPath\n", __stringVal(encodedPathName));
+# endif
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = stat((char *) __stringVal(encodedPathName), &buf);
+	} while ((ret < 0) && (errno == EINTR));
+	__END_INTERRUPTABLE__
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN (false);
+	}
+	RETURN ( ret ? false : true );
     }
 %}.
     ^ self primitiveFailed
@@ -4836,21 +4836,21 @@
 
      The info (for which corresponding access methods are understood by
      the returned object) is:
-         type            - a symbol giving the files type
-         mode            - numeric access mode
-         uid             - owners user id
-         gid             - owners group id
-         size            - files size
-         id              - files number (i.e. inode number)
-         accessed        - last access time (as Timestamp)
-         modified        - last modification time (as Timestamp)
-         statusChanged   - last status change time (as Timestamp)
-         alternativeName     - (windows only:) the MSDOS name of the file
-         recordFormatNumeric - (VMS only:) numeric value of the recordFormat
-         recordFormat        - (VMS only:) symbolic value of the recordFormat
-         recordAttributes    - (VMS only:) recordAttributes
-         fixedHeaderSize     - (VMS only:) fixed header size in a variable record format
-         recordSize          - (VMS only:) record size.
+	 type            - a symbol giving the files type
+	 mode            - numeric access mode
+	 uid             - owners user id
+	 gid             - owners group id
+	 size            - files size
+	 id              - files number (i.e. inode number)
+	 accessed        - last access time (as Timestamp)
+	 modified        - last modification time (as Timestamp)
+	 statusChanged   - last status change time (as Timestamp)
+	 alternativeName     - (windows only:) the MSDOS name of the file
+	 recordFormatNumeric - (VMS only:) numeric value of the recordFormat
+	 recordFormat        - (VMS only:) symbolic value of the recordFormat
+	 recordAttributes    - (VMS only:) recordAttributes
+	 fixedHeaderSize     - (VMS only:) fixed header size in a variable record format
+	 recordSize          - (VMS only:) record size.
 
      Some of the fields may be returned as nil on systems which do not provide
      all of the information.
@@ -4874,87 +4874,87 @@
     char pathBuffer[1024];
 
     if (__isStringLike(encodedPathName)) {
-        __BEGIN_INTERRUPTABLE__
-        do {
-            ret = lstat((char *) __stringVal(encodedPathName), &buf);
-        } while ((ret < 0) && (errno == EINTR));
-        __END_INTERRUPTABLE__
-
-        if (ret < 0) {
-            @global(LastErrorNumber) = __mkSmallInteger(errno);
-            RETURN ( nil );
-        }
-        switch (buf.st_mode & S_IFMT) {
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    ret = lstat((char *) __stringVal(encodedPathName), &buf);
+	} while ((ret < 0) && (errno == EINTR));
+	__END_INTERRUPTABLE__
+
+	if (ret < 0) {
+	    @global(LastErrorNumber) = __mkSmallInteger(errno);
+	    RETURN ( nil );
+	}
+	switch (buf.st_mode & S_IFMT) {
     # ifdef S_IFLNK
-            case S_IFLNK:
-                type = @symbol(symbolicLink);
-                if ((ret = readlink((char *) __stringVal(encodedPathName), pathBuffer, sizeof(pathBuffer))) < 0) {
-                    @global(LastErrorNumber) = __mkSmallInteger(errno);
-                    RETURN ( nil );
-                }
-                pathBuffer[ret] = '\0';  /* readlink does not 0-terminate */
-                path = __MKSTRING(pathBuffer);
-                break;
+	    case S_IFLNK:
+		type = @symbol(symbolicLink);
+		if ((ret = readlink((char *) __stringVal(encodedPathName), pathBuffer, sizeof(pathBuffer))) < 0) {
+		    @global(LastErrorNumber) = __mkSmallInteger(errno);
+		    RETURN ( nil );
+		}
+		pathBuffer[ret] = '\0';  /* readlink does not 0-terminate */
+		path = __MKSTRING(pathBuffer);
+		break;
     # endif
-            case S_IFDIR:
-                type = @symbol(directory);
-                break;
-
-            case S_IFREG:
-                type = @symbol(regular);
-                break;
+	    case S_IFDIR:
+		type = @symbol(directory);
+		break;
+
+	    case S_IFREG:
+		type = @symbol(regular);
+		break;
     # ifdef S_IFCHR
-            case S_IFCHR:
-                type = @symbol(characterSpecial);
-                break;
+	    case S_IFCHR:
+		type = @symbol(characterSpecial);
+		break;
     # endif
     # ifdef S_IFBLK
-            case S_IFBLK:
-                type = @symbol(blockSpecial);
-                break;
+	    case S_IFBLK:
+		type = @symbol(blockSpecial);
+		break;
     # endif
     # ifdef S_IFMPC
-            case S_IFMPC:
-                type = @symbol(multiplexedCharacterSpecial);
-                break;
+	    case S_IFMPC:
+		type = @symbol(multiplexedCharacterSpecial);
+		break;
     # endif
     # ifdef S_IFMPB
-            case S_IFMPB:
-                type = @symbol(multiplexedBlockSpecial);
-                break;
+	    case S_IFMPB:
+		type = @symbol(multiplexedBlockSpecial);
+		break;
     # endif
     # ifdef S_IFSOCK
-            case S_IFSOCK:
-                type = @symbol(socket);
-                break;
+	    case S_IFSOCK:
+		type = @symbol(socket);
+		break;
     # endif
     # ifdef S_IFIFO
-            case S_IFIFO:
-                type = @symbol(fifo);
-                break;
+	    case S_IFIFO:
+		type = @symbol(fifo);
+		break;
     # endif
-            default:
-                type = @symbol(unknown);
-                break;
-        }
-
-        if (sizeof(buf.st_ino) == 8) {
-            id = __MKUINT64(&buf.st_ino);
-        } else {
-            id = __MKUINT(buf.st_ino);
-        }
-        mode = __mkSmallInteger(buf.st_mode & 0777);
-        uid = __mkSmallInteger(buf.st_uid);
-        gid = __mkSmallInteger(buf.st_gid);
-        nLink = __mkSmallInteger(buf.st_nlink);
-        if (sizeof(buf.st_size) == 8) {
-            size = __MKINT64(&buf.st_size);
-        } else {
-            size = __MKINT(buf.st_size);
-        }
-        aOStime = __MKUINT(buf.st_atime);
-        mOStime = __MKUINT(buf.st_mtime);
-        cOStime = __MKUINT(buf.st_ctime);
+	    default:
+		type = @symbol(unknown);
+		break;
+	}
+
+	if (sizeof(buf.st_ino) == 8) {
+	    id = __MKUINT64(&buf.st_ino);
+	} else {
+	    id = __MKUINT(buf.st_ino);
+	}
+	mode = __mkSmallInteger(buf.st_mode & 0777);
+	uid = __mkSmallInteger(buf.st_uid);
+	gid = __mkSmallInteger(buf.st_gid);
+	nLink = __mkSmallInteger(buf.st_nlink);
+	if (sizeof(buf.st_size) == 8) {
+	    size = __MKINT64(&buf.st_size);
+	} else {
+	    size = __MKINT(buf.st_size);
+	}
+	aOStime = __MKUINT(buf.st_atime);
+	mOStime = __MKUINT(buf.st_mtime);
+	cOStime = __MKUINT(buf.st_ctime);
     }
 #else
     RETURN ( nil );
@@ -4962,18 +4962,18 @@
 %}.
 
     mode notNil ifTrue:[
-        ^ FileStatusInfo
-            type:type
-            mode:mode
-            uid:uid
-            gid:gid
-            size:size
-            id:id
-            accessed:aOStime
-            modified:mOStime
-            statusChanged:cOStime
-            path:(self decodePath:path)
-            numLinks:nLink.
+	^ FileStatusInfo
+	    type:type
+	    mode:mode
+	    uid:uid
+	    gid:gid
+	    size:size
+	    id:id
+	    accessed:aOStime
+	    modified:mOStime
+	    statusChanged:cOStime
+	    path:(self decodePath:path)
+	    numLinks:nLink.
    ].
    ^ self primitiveFailed
 
@@ -5030,66 +5030,66 @@
     |p path command|
 
     path = '.' ifTrue:[
-        ^ self getCurrentDirectory.
+	^ self getCurrentDirectory.
     ].
 
     "some systems have a convenient function for this ..."
     path := self primPathNameOf:(self encodePath:pathName).
     path notNil ifTrue:[
-        path := self decodePath:path.
+	path := self decodePath:path.
     ] ifFalse:[
-        (self isValidPath:pathName) ifFalse:[
-            p := pathName.
-            [(p size > 1)
-             and:[p endsWith:(self fileSeparator)]
-            ] whileTrue:[
-                p := p copyButLast:1.
-            ].
-            ^ p
-        ].
-
-        (SlowFork==true or:[PipeFailed==true]) ifFalse:[
-            |directoryName fileBaseName|
-
-            (self isDirectory:pathName) ifTrue:[
-                directoryName := pathName.
-                fileBaseName := nil.
-            ] ifFalse:[
-                |pathFilename|
-                pathFilename := pathName asFilename.
-                directoryName := pathFilename directoryName.
-                fileBaseName := pathFilename baseName.
-            ].
-            
-            PipeStream openErrorSignal handle:[:ex |
-                PipeFailed := true.
-                'UnixOperatingSystem [warning]: cannot fork/popen' errorPrintCR.
-                ex return.
-            ] do:[
-                "have to fall back ..."
-                command := 'cd "' , directoryName , '"; pwd'.
-                p := PipeStream readingFrom:command.
-            ].
-
-            (p isNil or:[p atEnd]) ifTrue:[
-                ('UnixOperatingSystem [warning]: PipeStream for <' , command , '> failed') errorPrintCR.
-            ] ifFalse:[
-                path := p nextLine.
-                p close.
-            ].
-            fileBaseName notNil ifTrue:[
-                path := path, '/', fileBaseName.
-            ].
-        ].
-        path isNil ifTrue:[
-            "/
-            "/ return the original - there is nothing else can we do
-            "/
-            path := pathName
-        ].
-        (SlowFork==true or:[ForkFailed==true]) ifTrue:[
-            path := self compressPath:path
-        ]
+	(self isValidPath:pathName) ifFalse:[
+	    p := pathName.
+	    [(p size > 1)
+	     and:[p endsWith:(self fileSeparator)]
+	    ] whileTrue:[
+		p := p copyButLast:1.
+	    ].
+	    ^ p
+	].
+
+	(SlowFork==true or:[PipeFailed==true]) ifFalse:[
+	    |directoryName fileBaseName|
+
+	    (self isDirectory:pathName) ifTrue:[
+		directoryName := pathName.
+		fileBaseName := nil.
+	    ] ifFalse:[
+		|pathFilename|
+		pathFilename := pathName asFilename.
+		directoryName := pathFilename directoryName.
+		fileBaseName := pathFilename baseName.
+	    ].
+
+	    PipeStream openErrorSignal handle:[:ex |
+		PipeFailed := true.
+		'UnixOperatingSystem [warning]: cannot fork/popen' errorPrintCR.
+		ex return.
+	    ] do:[
+		"have to fall back ..."
+		command := 'cd "' , directoryName , '"; pwd'.
+		p := PipeStream readingFrom:command.
+	    ].
+
+	    (p isNil or:[p atEnd]) ifTrue:[
+		('UnixOperatingSystem [warning]: PipeStream for <' , command , '> failed') errorPrintCR.
+	    ] ifFalse:[
+		path := p nextLine.
+		p close.
+	    ].
+	    fileBaseName notNil ifTrue:[
+		path := path, '/', fileBaseName.
+	    ].
+	].
+	path isNil ifTrue:[
+	    "/
+	    "/ return the original - there is nothing else can we do
+	    "/
+	    path := pathName
+	].
+	(SlowFork==true or:[ForkFailed==true]) ifTrue:[
+	    path := self compressPath:path
+	]
     ].
     ^ path.
 
@@ -5185,19 +5185,19 @@
 #ifdef HAS_REALPATH
 	extern char *realpath();
 
-        // POSIX-2008 says, that a NULL namebuffer causes realPath to malloc()
-        // the required memory. But this does not work as of 2013-04
-        char nameBuffer[MAXPATHLEN+1];
-        char *nameP = realpath(__stringVal(pathName), nameBuffer);
-        if (nameP) {
-            OBJ ret = __MKSTRING(nameP);
-            // free(nameP);
-            RETURN ( ret );
-        }
-        // fprintf(stderr, "stx[warning]: realpath(\"%s\") failed: %s\n", __stringVal(pathName), strerror(errno));
+	// POSIX-2008 says, that a NULL namebuffer causes realPath to malloc()
+	// the required memory. But this does not work as of 2013-04
+	char nameBuffer[MAXPATHLEN+1];
+	char *nameP = realpath(__stringVal(pathName), nameBuffer);
+	if (nameP) {
+	    OBJ ret = __MKSTRING(nameP);
+	    // free(nameP);
+	    RETURN ( ret );
+	}
+	// fprintf(stderr, "stx[warning]: realpath(\"%s\") failed: %s\n", __stringVal(pathName), strerror(errno));
 #endif /* ! HAS_REALPATH */
     } else {
-        error = @symbol(argument);     // argument is not a string
+	error = @symbol(argument);     // argument is not a string
     }
 %}.
 "/ Does not work as of 2013-04 (UNLIMITEDSTACK problem?)
@@ -5207,9 +5207,9 @@
     ^ nil
 
     "
-        self primPathNameOf:'.'
-        self primPathNameOf:'/murks/quatsch/bla/.'
-        self primPathNameOf:5555
+	self primPathNameOf:'.'
+	self primPathNameOf:'/murks/quatsch/bla/.'
+	self primPathNameOf:5555
     "
 !
 
@@ -6400,36 +6400,36 @@
 closeLeftOverFiles
     "a bad bad kludge and workaround for a big bug in the linux
      getAddrInfo implementation:
-        if it gets interrupted (via a timer, for example), its domain-name
-        socket remains open and is NEVER closed.
-        These open files collect up and lead to no-more-files eventually.
+	if it gets interrupted (via a timer, for example), its domain-name
+	socket remains open and is NEVER closed.
+	These open files collect up and lead to no-more-files eventually.
      Invoking this method helps in this situation."
 
     |p|
 
     p := PipeStream
-            readingFrom:('lsof -p ' , (OperatingSystem getProcessId printString)).
+	    readingFrom:('lsof -p ' , (OperatingSystem getProcessId printString)).
 
     p linesDo:[:line |
-        |words fd|
-
-        words := line asCollectionOfWords.
-        "/ COMMAND PID USER   FD   TYPE     DEVICE    SIZE    NODE NAME
-        words first = 'stx' ifTrue:[
-            words second = (OperatingSystem getProcessId printString) ifTrue:[
-                (words fourth endsWith:'u') ifTrue:[
-                    (words fifth = 'IPv4') ifTrue:[
-                        (words seventh = 'UDP') ifTrue:[
-                            (words last endsWith:'domain') ifTrue:[
-                                fd := Number readFrom:(words fourth copyButLast:1).
+	|words fd|
+
+	words := line asCollectionOfWords.
+	"/ COMMAND PID USER   FD   TYPE     DEVICE    SIZE    NODE NAME
+	words first = 'stx' ifTrue:[
+	    words second = (OperatingSystem getProcessId printString) ifTrue:[
+		(words fourth endsWith:'u') ifTrue:[
+		    (words fifth = 'IPv4') ifTrue:[
+			(words seventh = 'UDP') ifTrue:[
+			    (words last endsWith:'domain') ifTrue:[
+				fd := Number readFrom:(words fourth copyButLast:1).
 Transcript showCR:line.
-                                OperatingSystem closeFd:fd.
-                            ]
-                        ]
-                    ]
-                ]
-            ]
-        ]
+				OperatingSystem closeFd:fd.
+			    ]
+			]
+		    ]
+		]
+	    ]
+	]
     ].
     p close.
 
@@ -7267,8 +7267,8 @@
 
 getNetworkMACAddresses
     "return a dictionary filled with
-        key -> name of interface
-        value -> the MAC adress (as ByteArray)
+	key -> name of interface
+	value -> the MAC adress (as ByteArray)
      for each interface"
 
     |addressArray nameArray noOfIf retDictionary error|
@@ -7292,8 +7292,8 @@
 
     afinet_socket = socket(AF_INET, SOCK_DGRAM, 0);
     if (afinet_socket < 0) {
-        error = __MKSTRING("Cannot open socket");
-        goto bad;
+	error = __MKSTRING("Cannot open socket");
+	goto bad;
     }
 
     /*
@@ -7304,8 +7304,8 @@
     ifc.ifc_buf = (caddr_t) buf;
 
     if (ioctl (afinet_socket, SIOCGIFCONF, (caddr_t) &ifc) < 0) {
-        error = __MKSTRING("ioctl(SIOCGIFCONF) failed");
-        goto bad;
+	error = __MKSTRING("ioctl(SIOCGIFCONF) failed");
+	goto bad;
     }
 
     n_ifs = ifc.ifc_len / sizeof (struct ifreq);
@@ -7314,9 +7314,9 @@
     addressArray = __ARRAY_NEW_INT(n_ifs);
 
     if (nameArray == nil || addressArray == nil) {
-        /* Creating a string wouldn/t work here */
-        error = @symbol(allocationFailure);
-        goto bad;
+	/* Creating a string wouldn/t work here */
+	error = @symbol(allocationFailure);
+	goto bad;
     }
 
     /*
@@ -7327,55 +7327,55 @@
     countOfIf = 0;
 
     for (i=0, ifr = ifc.ifc_req; i < n_ifs; i++, ifr++) {
-        /*
-        ** Get Flags for this interface
-        */
-
-        memcpy(&ifreq, ifr, sizeof(ifreq));
-        if (ioctl (afinet_socket, SIOCGIFFLAGS, &ifreq) < 0) {
-            if (@global(InfoPrinting) == true) {
-                fprintf(stderr, "OS [warning]: ioctl(SIOCGIFFLAGS) failed");
-            }
-        } else {
-            /*
-            ** Get Hardware address for this interface
-            */
-            memcpy(&ifreq, ifr, sizeof(ifreq));
-            if (ioctl (afinet_socket, SIOCGIFHWADDR, &ifreq) >= 0) {
-                t = __MKBYTEARRAY(&ifreq.ifr_hwaddr.sa_data, IFHWADDRLEN);
-                __arrayVal(addressArray)[countOfIf] = t; __STORE(addressArray, t);
-                t = __MKSTRING(&ifreq.ifr_name);
-                __arrayVal(nameArray)[countOfIf] = t; __STORE(nameArray, t);
-                countOfIf += 1;
-            }
-        }
+	/*
+	** Get Flags for this interface
+	*/
+
+	memcpy(&ifreq, ifr, sizeof(ifreq));
+	if (ioctl (afinet_socket, SIOCGIFFLAGS, &ifreq) < 0) {
+	    if (@global(InfoPrinting) == true) {
+		fprintf(stderr, "OS [warning]: ioctl(SIOCGIFFLAGS) failed");
+	    }
+	} else {
+	    /*
+	    ** Get Hardware address for this interface
+	    */
+	    memcpy(&ifreq, ifr, sizeof(ifreq));
+	    if (ioctl (afinet_socket, SIOCGIFHWADDR, &ifreq) >= 0) {
+		t = __MKBYTEARRAY(&ifreq.ifr_hwaddr.sa_data, IFHWADDRLEN);
+		__arrayVal(addressArray)[countOfIf] = t; __STORE(addressArray, t);
+		t = __MKSTRING(&ifreq.ifr_name);
+		__arrayVal(nameArray)[countOfIf] = t; __STORE(nameArray, t);
+		countOfIf += 1;
+	    }
+	}
     }
 
     noOfIf = __mkSmallInteger(countOfIf);
 bad:
     if (afinet_socket >= 0)
-        close(afinet_socket);
+	close(afinet_socket);
 #else
     error = @symbol(notSupported);
 #endif /* SIOCGIFHWADDR */
 %}.
 
     error notNil ifTrue:[
-        self primitiveFailed:error.
-        "return an empty dictionary if proceed from error"
-        ^  Dictionary new.
-    ].
-
-    "we prefer OrderedDictionary here, because we want to keep the 
+	self primitiveFailed:error.
+	"return an empty dictionary if proceed from error"
+	^  Dictionary new.
+    ].
+
+    "we prefer OrderedDictionary here, because we want to keep the
      order as defined in the OS."
     retDictionary := OrderedDictionary new:noOfIf.
     1 to:noOfIf do:[:cnt|
-        |macAddress|
-        
-        macAddress := addressArray at:cnt.
-        macAddress ~= #[0 0 0 0 0 0] ifTrue:[
-            retDictionary at:(nameArray at:cnt) put:macAddress.
-        ].
+	|macAddress|
+
+	macAddress := addressArray at:cnt.
+	macAddress ~= #[0 0 0 0 0 0] ifTrue:[
+	    retDictionary at:(nameArray at:cnt) put:macAddress.
+	].
     ].
 
     ^ retDictionary
@@ -8665,7 +8665,7 @@
      so the pathName has been UTF-8 encoded, before using it in a system call."
 
     (pathName notNil and:[Codeset == #utf8]) ifTrue:[
-        ^ pathName utf8Encoded.
+	^ pathName utf8Encoded.
     ].
     ^ pathName asSingleByteString.
 ! !
@@ -10356,7 +10356,7 @@
     OpenFiles addDependent:self.
 
     "
-        self initialize
+	self initialize
     "
 
     "Created: 26.9.1997 / 17:15:50 / stefan"
@@ -10409,13 +10409,13 @@
     fd := aFileDescriptor.
 
     "JV@2013-03-15: It may happen that OS returns a filedescriptor whose value
-     is larger than twice the lenght of the weakarray. Care for this. 
-     Spotted by Martin Kobetic." 
+     is larger than twice the lenght of the weakarray. Care for this.
+     Spotted by Martin Kobetic."
     oldHandle := OpenFiles at:aFileDescriptor ifAbsent: [nil].
     "/ the 0 is possible, if an fd was open when saving a snapshot image,
     "/ and we come up in the new image with no one referring to it.
     (oldHandle notNil and:[oldHandle ~~ 0 and:[ oldHandle ~~ self]]) ifTrue:[
-        oldHandle invalidate.
+	oldHandle invalidate.
     ].
     self register.
 
@@ -11004,21 +11004,21 @@
 
     sz := OpenFiles size.
     fd > sz ifTrue:[
-        "grow for more descriptors"
-        old := OpenFiles.
-
-        "JV@2013-03-15: It may happen that OS returns a filedescriptor whose value
-         is larger than twice the lenght of the weakarray. Care for this. 
-         Spotted by Martin Kobetic."          
-        OpenFiles := WeakArray new:((sz * 2) max:fd).
-        old removeDependent:(self class).
-        OpenFiles addDependent:(self class).
-        old keysAndValuesDo:[:index :elem|
-            "be careful to not overwrite new entries in OpenFiles"
-            elem notNil ifTrue:[
-                OpenFiles at:index put:elem.
-            ].
-        ].
+	"grow for more descriptors"
+	old := OpenFiles.
+
+	"JV@2013-03-15: It may happen that OS returns a filedescriptor whose value
+	 is larger than twice the lenght of the weakarray. Care for this.
+	 Spotted by Martin Kobetic."
+	OpenFiles := WeakArray new:((sz * 2) max:fd).
+	old removeDependent:(self class).
+	OpenFiles addDependent:(self class).
+	old keysAndValuesDo:[:index :elem|
+	    "be careful to not overwrite new entries in OpenFiles"
+	    elem notNil ifTrue:[
+		OpenFiles at:index put:elem.
+	    ].
+	].
     ].
     OpenFiles at:fd put:self.
 
@@ -11401,9 +11401,9 @@
 
 isSpecialFile
     ^ (type ~~ #directory
-        and:[type ~~ #remoteDirectory
-        and:[type ~~ #regular
-        and:[type ~~ #symbolicLink
+	and:[type ~~ #remoteDirectory
+	and:[type ~~ #regular
+	and:[type ~~ #symbolicLink
     ]]])
 !
 
@@ -13017,7 +13017,7 @@
     sock = __smallIntegerVal(__INST(fd));
 
     oClass = __Class(aDataBuffer);
-    switch (_intVal(_ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
+    switch (__intVal(__ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
 	case BYTEARRAY:
 	case WORDARRAY:
 	case SWORDARRAY:
@@ -13031,7 +13031,7 @@
 	    goto err;
     }
 
-    nInstVars = __intVal(_ClassInstPtr(oClass)->c_ninstvars);
+    nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
     nInstBytes = OHDR_SIZE + nInstVars * sizeof(OBJ);
     objSize = __qSize(aDataBuffer) - nInstBytes;
     nInstBytes += __startIndex;
@@ -13124,7 +13124,7 @@
     sock = __smallIntegerVal(__INST(fd));
 
     oClass = __Class(aDataBuffer);
-    switch (_intVal(_ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
+    switch (__intVal(__ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
 	case BYTEARRAY:
 	    offs = __startIndex;
 	    break;
@@ -13156,7 +13156,7 @@
 	    goto err;
     }
 
-    nInstVars = __smallIntegerVal(_ClassInstPtr(oClass)->c_ninstvars);
+    nInstVars = __smallIntegerVal(__ClassInstPtr(oClass)->c_ninstvars);
     nInstBytes = OHDR_SIZE + nInstVars * sizeof(OBJ);
     objSize = __qSize(aDataBuffer) - nInstBytes - offs;
 
@@ -13555,11 +13555,11 @@
 !UnixOperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.324 2013-05-15 17:05:35 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.325 2013-05-21 20:44:47 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.324 2013-05-15 17:05:35 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.325 2013-05-21 20:44:47 cg Exp $'
 ! !