Use cvs export to make snapshots/dists. Minor patches.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@2742 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
fedor 1998-02-09 19:06:40 +00:00
parent e2a0cb1b97
commit 49a609f53b
40 changed files with 5025 additions and 632 deletions

View file

@ -1,32 +0,0 @@
#!/usr/grads/bin/bash
PATH=/u/mccallum/sparc/bin:/usr/grads/bin:/usr/staff/bin:$PATH
snapdate=`date +%y%m%d`
# Make the snapshot
cd /u/mccallum/collection/libobjects
rm -f .snapshot.errs
make snapshot &> .snapshot.errs
# Move it to ftp location
if [ -e libobjects-${snapdate}.tar.gz ]; then
rm -f /home/cayuga/ftp/pub/u/mccallum/libobjects/libobjects-9*
rm -f /home/cayuga/ftp/pub/u/mccallum/libobjects/ChangeLog-9*
mv libobjects-${snapdate}.tar.gz \
/home/cayuga/ftp/pub/u/mccallum/libobjects
cp ChangeLog \
/home/cayuga/ftp/pub/u/mccallum/libobjects/ChangeLog-${snapdate}
gzip -9 /home/cayuga/ftp/pub/u/mccallum/libobjects/ChangeLog-${snapdate}
cp ChangeLog \
/home/cayuga/ftp/pub/u/mccallum/libobjects/ChangeLog-${snapdate}
chmod a+r /home/cayuga/ftp/pub/u/mccallum/libobjects/*
fi
# Send me mail about it
rm -f .snapshot.mail
echo "This automatically generated by libobjects/cronscript" >.snapshot.mail
echo >>.snapshot.mail
ls -l /home/cayuga/ftp/pub/u/mccallum/libobjects/* >>.snapshot.mail
echo >>.snapshot.mail
cat .snapshot.errs >>.snapshot.mail
mail -s "libobjects-${snapdate} snapshot" mccallum < .snapshot.mail

View file

@ -1 +0,0 @@
0 1 * * 3 /u/mccallum/collection/libobjects/cronscript

View file

@ -1,27 +0,0 @@
#!/usr/grads/bin/bash
# Apply a patch and automatically RCS check-in the changed files if
# the patch succeeds.
# Usage: patch.sh -p1 < ~/Mail/inbox/120
cd /u/mccallum/collection/libobjects
touch .patch.timestamp
if patch --batch $*; then
find . -name '*.orig' -exec mv -f {} ../origs \;
rm -f .patched.files
find . -name RCS -prune -o \
\( -newer .patch.timestamp -type f -print \) \
| grep -v .patched.files > .patched.files
echo PATCH SUCCEEDED!
echo Patched files:
cat .patched.files
ci -u -m"Patched from mail. See ChangeLog" \
-t-"Patched from mail. See ChangeLog" \
`cat .patched.files`
else
echo PATCH FAILED!
echo patch.sh: patch failed - reject files are:
find . -newer .patch.timestamp -name '*.rej' -print
exit 1
fi

View file

@ -1,9 +1,5 @@
=* *errs *.tar.gz *.patch *-patch
COPYING COPYING.LIB INSTALL NEWS README TAGS TODO
RELEASE-NOTES
Makefile configure
config.cache config.guess config.log config.status
.date .name .patch* .snap*

84
ANNOUNCE Normal file
View file

@ -0,0 +1,84 @@
Announcement
************
The GNUstep Base Library, version 0.4.0, is now available.
What is the GNUstep Base Library?
=================================
The GNUstep Base Library is a library of general-purpose,
non-graphical Objective C objects. For example, it includes classes
for strings, object collections, byte streams, typed coders,
invocations, notifications, notification dispatchers, moments in time,
network ports, remote object messaging support (distributed objects),
event loops, and random number generators.
It provides functionality that aims to implement the non-graphical
portion of the OpenStep standard. In many cases, the `NS*' classes are
implemented as wrappers around more featureful GNU classes.
There is more information available at the GNUstep homepage at
`http://www.gnustep.org'.
Where can you get it? How can you compile it?
==============================================
The gstepbase-0.4.0.tar.gz distribution file has been placed on
`ftp.gnu.org' in `pub/gnu'.
The library requires gcc 2.8.0 or higher. Significant sections of
the library do not work with the NeXT runtime, so we recommend using
gcc instead of NeXT's cc. See the `GNUstep-HOWTO' file for more
instructions about compiling and installing the library.
The `.tar' file is compressed with GNU gzip. Gzip can be obtained by
anonymous ftp at any of the GNU archive sites.
For info about FTP via email, send email to `ftpmail@decwrl.dec.com'
with no subject line, and two-line body with line one `help' and line
two `quit'.
The most recent (not necessarily tested) snapshots of the library
will be placed on `alpha.gnu.org'.
[ Most GNU software is packed using the GNU `gzip' compression program.
Source code is available on most sites distributing GNU software.
For information on how to order GNU software on tape, floppy or cd-rom, or
printed GNU manuals, check the file etc/ORDERS in the GNU Emacs distribution
or in GNUinfo/ORDERS on prep, or e-mail a request to: gnu@prep.ai.mit.edu
By ordering your GNU software from the FSF, you help us continue to
develop more free software. Media revenues are our primary source of
support. Donations to FSF are deductible on US tax returns.
The above software will soon be at these ftp sites as well.
Please try them before prep.ai.mit.edu as prep is very busy!
thanx -gnu@prep.ai.mit.edu
ASIA: ftp.cs.titech.ac.jp, utsun.s.u-tokyo.ac.jp:/ftpsync/prep,
cair.kaist.ac.kr:/pub/gnu, ftp.nectec.or.th:/pub/mirrors/gnu
AUSTRALIA: archie.au:/gnu (archie.oz or archie.oz.au for ACSnet)
AFRICA: ftp.sun.ac.za:/pub/gnu
MIDDLE-EAST: ftp.technion.ac.il:/pub/unsupported/gnu
EUROPE: irisa.irisa.fr:/pub/gnu, ftp.univ-lyon1.fr:pub/gnu,
ftp.mcc.ac.uk, unix.hensa.ac.uk:/pub/uunet/systems/gnu,
src.doc.ic.ac.uk:/gnu, ftp.ieunet.ie:pub/gnu, ftp.eunet.ch,
nic.switch.ch:/mirror/gnu, ftp.informatik.rwth-aachen.de:/pub/gnu,
ftp.informatik.tu-muenchen.de, ftp.win.tue.nl:/pub/gnu,
ftp.funet.fi:/pub/gnu, ftp.denet.dk, ftp.stacken.kth.se, isy.liu.se,
ftp.luth.se:/pub/unix/gnu, ftp.sunet.se:/pub/gnu, archive.eu.net
SOUTH AMERICA: ftp.unicamp.br:/pub/gnu
WESTERN CANADA: ftp.cs.ubc.ca:/mirror2/gnu
USA: wuarchive.wustl.edu:/systems/gnu, labrea.stanford.edu,
ftp.digex.net:/pub/gnu, ftp.kpc.com:/pub/mirror/gnu, f.ms.uky.edu:/pub3/gnu,
jaguar.utah.edu:/gnustuff, ftp.hawaii.edu:/mirrors/gnu,
vixen.cso.uiuc.edu:/gnu, mrcnext.cso.uiuc.edu:/pub/gnu,
ftp.cs.columbia.edu:/archives/gnu/prep, col.hp.com:/mirrors/gnu,
gatekeeper.dec.com:/pub/GNU, ftp.uu.net:/systems/gnu
]

207
AUTHORS Normal file
View file

@ -0,0 +1,207 @@
For the legal record, here is a list of who wrote what:
Andrew Kachites McCallum:
include/preface.h.in
Archiver.m
Array.m
Bag.m
BinaryCStream.m
BinaryTree.m
BinaryTreeNode.m
CircularArray.m
Collection.m
ConnectedCoder.m
Connection.m
Coder.m
CStream.m
Decoder.m
DelegatePool.m
Dictionary.m
Encoder.m
Heap.m
IndexedCollection.m
Invocation.m
KeyedCollection.m
LinkedList.m
LinkedListNode.m
Lock.m
MachPort.m
Magnitude.m
MallocAddress.m
MappedCollector.m
MemoryStream.m
Notification.m
NotificationDispatcher.m
OrderedCollection.m
Port.m
Proxy.m
Queue.m
Random.m
RawCStream.m
RBTree.m
RBTreeNode.m
RNGAdditiveCongruential.m
Set.m
SplayTree.m
Stack.m
StdioStream.m
Stream.m
TcpPort.m
TextCStream.m
Time.m
UdpPort.m
behavior.m
preface.m
mframe.m
HashTable.m
List.m
objc/HashTable.h
objc/List.h
NSAllocateObject.m
NSArchiver.m
NSArray.m
NSAutoreleasePool.m
NSCoder.m
NSCopyObject.m
NSCountedSet.m
NSData.m
NSDeallocateObject.m
NSDictionary.m
NSEnumerator.m
NSGArchiver.m
NSGArray.m
NSGCountedSet.m
NSGCString.m
NSGDictionary.m
NSGSet.m
NSGString.m
NSInvocation.m
NSMethodSignature.m
NSNotification.m
NSNotificationCenter.m
NSObjCRuntime.m
NSObject.m
NSPage.m
NSPortCoder.m
NSSet.m
NSString.m
NSThread.m
NSTimer.m
NSUser.m
Kresten Krab Thorup:
GapArray.m
objc-gnu2next.m
Storage.m
objc/Storage.h
Adam Fedor:
ostream.m
NXStringTable.m
NXStringTable_scan.c
objc/NXStringTable.h
NXStringTable_scan.l
NSAssertionHandler.m
NSBitmapCharSet.m
NSBundle.m
NSCharacterSet.m
NSConcreteValue.m
NSException.m
NSGeometry.m
NSLog.m
NSNumber.m
NSValue.m
objc-load.c
NSConcreteNumber.m
NSCTemplateValue.m
Mark Lakata:
Jeremy Bettis:
NSDate.m
Georg Tuparev:
NSProcessInfo.m
NSUserDefaults.m
Peter Burka:
Albin L. Jones:
o_array.m
o_array_bas.m
o_array_cbs.m
o_cbs.m
o_cbs_char_p.m
o_cbs_id.m
o_cbs_int.m
o_cbs_int_p.m
o_cbs_void_p.m
o_hash.m
o_hash_bas.m
o_hash_cbs.m
o_list.m
o_list_bas.m
o_list_cbs.m
o_map.m
o_map_bas.m
o_map_cbs.m
numbers.c
o_x_bas.m.in
o_x_cbs.m.in
include/o_x_bas.h.in
include/o_x_cbs.h.in
NSCallBacks.m
NSHashTable.m
NSMapTable.m
NSCallBacks.h
Scott Christley:
GNUmakefile
Makefile.preamble
Makefile.postamble
win32-entry.m
win32-def.top
libgnustep-base.def
NSCalendarDate.m
NSDate.m
NSLock.m
NSThread.m
externs.m
Luke Howard:
NSHost.m
Yoo C. Chung:
NSTimeZone.m
NSZone.m
Richard Frith-Macdonald:
UnixFileHandle.m
NSData.m
NSDebug.m
NSDistantObject.m
NSDistributedLock.m
NSFileHandle.m
NSPipe.m
NSPort.m
NSProxy.m
NSTask.m
Stevo Crvenkovski:
GetDefEncoding.m
Unicode.m
NSGSequence.m
NSGString.m

View file

@ -76,6 +76,8 @@ tasks: ../doc/todo.texi
(cd ../doc; $(MAKE) -$(MAKEFLAGS) $(MAKEDEFINES) TODO)
cp ../doc/TODO ./tasks
regenerate:
copy-dist: $(DIST_FILES)
mkdir ../snap/admin
for f in $(DIST_FILES); do \

138
BULLETIN
View file

@ -1,138 +0,0 @@
* Gnustep Base Library
The Gnustep Base Library (libobjects) is a library of
general-purpose, non-graphical Objective C objects written by
Andrew Kachites McCallum and designed in the Smalltalk tradition. It
includes collection objects for maintaining groups of objects and C
types, byte streams for I/O to various destinations, coders for
formating objects and C types to byte streams, ports for network
packet transmission, remote object messaging support, pseudo-random
number generators, and time handling facilities.
* Gnustep Base Library
The Gnustep Base Library (libobjects) is a library of
general-purpose, non-graphical Objective C objects designed in the
Smalltalk tradition. It includes collection objects for maintaining
groups of objects and C types, byte streams for I/O to various
destinations, coders for formating objects and C types to byte
streams, ports for network packet transmission, remote object
messaging support, pseudo-random number generators, and time handling
facilities. It is being written by Andrew Kachites McCallum.
* Gnustep Base Library (libobjects)
Andrew Kachites McCallum is writing the Gnustep Base Library, a
library of general-purpose, non-graphical Objective C objects designed
in the Smalltalk tradition. It includes collection objects for
maintaining groups of objects and C types, byte streams for I/O to
various destinations, coders for formating objects and C types to byte
streams, ports for network packet transmission, remote object
messaging support, pseudo-random number generators, and time handling
facilities. It is being written by Andrew Kachites McCallum.
* Gnustep Base Library
The Gnustep Base Library (@code{libobjects}) is a library of
general-purpose, non-graphical Objective C objects written by
Andrew Kachites McCallum. It includes collection objects for maintaining
groups of objects and C types, streams for I/O to various
destinations, coders for formating objects and C types to streams,
ports for network packet transmission, distributed objects (remote
object messaging), pseudo-random number generators, and time handling
facilities. Contact @samp{mccallum@gnu.ai.mit.edu}.
* Gnustep Base Library
The Gnustep Base Library (libobjects) is a library of
general-purpose, non-graphical Objective C objects written by
Andrew Kachites McCallum. What `libg++' is to GNU's C++, `libobjects' is to
GNU's Objective C.
The library features collection objects for maintaining groups of
objects and C types, byte streams for I/O to various destinations,
coders for formating objects and C types to byte streams, ports for
network packet transmission, remote object messaging support,
pseudo-random number generators, and time handling facilities.
The heirarchy of collection objects are similar in spirit to
Smalltalk's collections. A deep inheritance heirarchy provides good
uniformity of access to members across different collection classes.
All collections can hold simple C types such as int's and floats, as
well as Objects. The collection classes include simple collections
(Set, Bag), collections with contents accessible by unordered keys
(Dictionary, MappedCollector), collections with ordered contents
(Array, LinkedList, BinaryTree, RBTree, SplayTree). There is also a
DelegatePool object that can forward messages it receives to an
arbitrary number of Delegates.
Stream objects provide a consistent interface for reading and writing
bytes. `StdioStream' objects work with files, file descriptors, FILE
pointers and pipes to/from executables. `MemoryStream' objects work
with memory buffers. There are methods for writing arbitrary n-length
buffers, newline-terminated lines, and printf-style formated strings.
Coders provide a formatted way of writing to Streams. After a coder
is initialized with a stream, the coder can encode/decode Objective C
objects and C types in an architecture-independent way. The currently
available concrete coder classes are `BinaryCoder', for reading and
writing a compact stream of illegible bytes, and `TextCoder', for
reading and writing human-readable text (which you can also process
with `perl', `awk', or whatever scripting language you like).
Coders and streams can be mixed and matched so that programmers can
choose the destination and the format separately.
The current version is 0.1, the low number indicating that the library
is still in flux. Future version will include String objects and
before allocation/dealocation conventions.
see ~rms/gnuorg/status
Here is the simple description:
* Gnustep Base Library
The Gnustep Base Library (@code{libobjects}) is a library of
general-purpose, non-graphical Objective C objects written by
Andrew Kachites McCallum. It includes collection objects for maintaining
groups of objects and C types, streams for I/O to various
destinations, coders for formating objects and C types to streams,
ports for network packet transmission, distributed objects (remote
object messaging), pseudo-random number generators, and time handling
facilities. It is known to work on i386, m68k, SPARC, MIPS, and
RS6000. Contact the author at @samp{mccallum@gnu.ai.mit.edu}.
(GNU's Flashes)
* New Library (on the Languages Tape?)
The Gnustep Base Library (@code{libobjects}) has been added.
See ``GNU Software'' and ``Forthcoming GNUs'' for more information.
(Forthcoming GNUs)
* Gnustep Base Library
Future versions will have String objects that are integrated into the
Collection object hierarchy, a better allocation/deallocation
mechanism, improved features for distributed objects (including a
back-end that uses Mach ports instead of sockets), more extensive
random number generator facilities, and ports to more machines.
Volunteers are needed for additional projects; contact
@code{mccallum@gnu.ai.mit.edu}.

23
CREDITS
View file

@ -1,23 +0,0 @@
*** Thanks to ****
Paul Kunz, Paul Burchard, Kresten Krab Thorup, Matthias Klose, Stefan
Reich, Seth Tisue, Allan Clearwaters, Niels Mvller for bug reports and
suggestions.
James Gledhill, Allan Clearwaters, Galen Hunt and Jonas Karlsson for
help with testing on different architectures.
Adam Fedor for contributing the NXStringTable class. Kresten Thorup
for contributing the GapArray class.
Geoffrey Knauth, the GNU Objective C project coordinator.
Kresten Krab Thorup for writing the GNU Objective C runtime.
Richard Stallman for his advice, for emacs, for GNU, and for the FSF.
Jim Wilson at Cygnus Support for help with IRIX4 nested function
problems.
-- Andrew
mccallum@gnu.ai.mit.edu

View file

@ -1,3 +1,34 @@
Mon Feb 9 13:08:27 1998 Adam Fedor <fedor@doc.com>
* AUTHORS, ANNOUNCE, README, INSTALL, STATUS, TODO: New files.
* configure: Likewise.
* +cronscript, +crontab, +patch.sh, Makefile.local, make-*,
upload-dist: Removed non-dist files.
* src/Makefile.local, src/Makefile.set.nt: Likewise.
* GNUmakefile (DIST_FILES): Remove gcc diffs.
* Makefile.postamble (regenerate): New target.
(snapshot, dist): Update for cvs export.
* NSCharacterSets/Makefile.postamble (regenerate): New target.
* NSTimeZones/Makefile.postamble: Likewise
* Tools/Makefile.postamble: Likewise.
* admin/Makefile.postamble: Likewise
* checks/Makefile.postamble: Likewise
* doc/Makefile.postamble: Likewise
* examples/Makefile.postamble: Likewise
* src/Makefile.postamble: Likewise
* src/NSUserDefaults ([-synchronize]): Check for defaultDatabase
and create it it doesn't exist.
* src/NSThread.m ([-currentThread]): Set thread data for new
thread.
* src/NSString.m ([-initWithContentsOfFile:]): Check for NULL
data. Patches suggested by Ulrich Steinmetz <ulrich@mis.mpg.de>
* src/NSHost.m: Remove arpa/inet.h
* src/TcpPort.m: Likewise.
* src/UnixFileHandle.m: Likewise.
patches from Paul Kunz <Paul_Kunz@slac.stanford.edu>
Thu Feb 5 10:12:00 1998 Richard Frith-Macdonald <richard@brainstorm.co.uk>
* src/NSConcreteNumber.m: Defined preprocessor values to handle

View file

@ -234,6 +234,9 @@ GNUstep-HOWTO: version.tmpl.texi gnustep-howto.tmpl.texi
# texi2html -expandinfo $(MAKEINFO_FLAGS) $<.html.texi
# mv -f $<.html.html $*.html
regenerate: $(DIST_FILES)
mv $(TOP_DOC_FILES) ..
copy-dist: $(DIST_FILES)
mkdir ../snap/doc
ln $(DIST_FILES) ../snap/doc

View file

@ -73,14 +73,14 @@ gstep-make
gstep-base or libFoundation
gstep-gui
gstep-xpds
FoundationExt (optional).
FoundationExt.
@end display
@section Getting the files
Most of the files needed by GNUstep are available from the following ftp
sites. Except for gcc, gdb, make and libtiff, alpha.gnu.org and
zarquon should contain the latest versions of all the required
sites. Except for gcc, gdb, make and libtiff, alpha.gnu.org
should contain the latest versions of all the required
packages.
@table @samp
@ -91,8 +91,10 @@ GNUstep public releases
TIFF library
@item ftp://alpha.gnu.org/gnu/gnustep
GNUstep developer releases
@ignore
@item ftp://ftp.gnustep.org/pub/gnustep
All GNUstep releases
@end ignore
@item ftp://zarquon.mathi.uni-heidelberg.de/pub/GNUstep
All GNUstep releases
@end table
@ -103,7 +105,7 @@ version, in order to compile GNUstep.
@example
gcc-2.8.0.tar.gz (The GCC compiler)
ftp://ftp.gnu.org/pub/gnu or from other GNU mirror sites.
You may also use egcs-1.0.1.tar.gz, from ftp://ftp.cygnus.com/pub/egcs
You can also use egcs-1.0.1.tar.gz, from ftp://ftp.cygnus.com/pub/egcs
gdb-4.16.tar.gz (The gdb debugger)
make-3.75.tar.gz (You need GNU make to compile GNUstep).
@ -120,7 +122,7 @@ tiff-970711.tar.gz
pcthreads-1.1.0.tar.gz (PCThreads for Linux/GNU Inel x86 systems)
ftp://alpha.gnu.org/gnu/gnustep
gstep-make-0.4.0.tar.gz (Makefile package)
dgs-970711.tar.gz (The Display Ghostscript distribution)
gstep-base-0.4.0.tar.gz (Foundation)
@ -235,7 +237,7 @@ GNUstep system root as the prefix when you configure the package.
./configure --prefix=$GNUSTEP_SYSTEM_ROOT
@end example
@subsection Patching and Compiling GCC
@subsection Compiling GCC
The following commands assume that all the aforementioned files have been
copied to the /usr/src directory on your machine.
@ -269,10 +271,6 @@ copied to the /usr/src directory on your machine.
@item 4. Compile gcc
make
or
make bootstrap
@item 5. Wait

View file

@ -71,6 +71,8 @@
# Things to do after checking
# after-check::
regenerate:
copy-dist: $(DIST_FILES)
mkdir ../snap/examples
for f in $(DIST_FILES); do \

View file

@ -42,9 +42,7 @@ DIST_FILES = \
README.ULTRIX README.ucblib \
COPYING COPYING.LIB ChangeLog \
configure Version \
config.guess mkinstalldirs install-sh config.sub \
gcc-2.7.2-objc.diff \
gcc-2.7.2.1-objc.diff
config.guess mkinstalldirs install-sh config.sub
#
# The list of subproject directories

5
INSTALL Normal file
View file

@ -0,0 +1,5 @@
Read the file GNUstep-HOWTO for instructions on how to install the
entire GNUstep package (including the base library). GNUstep-HOWTO
comes with this distribution and also is located at the same ftp sites
as this library.

View file

@ -1,3 +0,0 @@
install-lib: libobjects.a
$(INSTALL_DATA) libobjects.a $(libdir)/libobjects.a
$(RANLIB) $(libdir)/libobjects.a

View file

@ -74,31 +74,33 @@ after-distclean::
configure: configure.in
autoconf
autoheader
snap: $(DIST_FILES)
rm -rf snap
mkdir snap
# Regenerate automatically generated files
regenerate: stamp-regenerate
stamp-regenerate: ChangeLog configure
for i in $(SUBPROJECTS); do \
(cd $$i; $(MAKE) $(MAKEDEFINES) copy-dist); \
done
mkdir snap/config
for file in $(DIST_FILES); do \
ln $$file snap/$$file ; \
(cd $$i; $(MAKE) $(MAKEDEFINES) regenerate); \
done
touch stamp-regenerate
snapshot: snap
ln README.first snap
snapshot:
@echo Making $(PACKAGE_NAME) snapshot
cvs export -r snapshot-`date +%y%m%d` $(PACKAGE_NAME)
rm -f .name
echo $(PACKAGE_NAME)-`date +%y%m%d` >.name
rm -rf `cat .name`
mv snap `cat .name`
mv $(PACKAGE_NAME) `cat .name`
tar -chvf `cat .name`.tar `cat .name`
rm -f `cat .name`.tar.gz
gzip -9 `cat .name`.tar
rm -rf `cat .name`
dist: snap
mv snap $(PACKAGE_NAME)-$(VERSION)
dist:
@echo Making $(PACKAGE_NAME) release $(VERSION)
cvs export -r release-`echo $(VERSION) | tr . -` $(PACKAGE_NAME)
mv $(PACKAGE_NAME) $(PACKAGE_NAME)-$(VERSION)
tar -chvf $(PACKAGE_NAME)-$(VERSION).tar \
$(PACKAGE_NAME)-$(VERSION)
rm -f $(PACKAGE_NAME)-$(VERSION).tar.gz
@ -106,9 +108,11 @@ dist: snap
rm -rf $(PACKAGE_NAME)-$(VERSION)
snapshot-rtag:
@echo Tagging current base HEAD for snapshot `date +%y%m%d`
cvs rtag snapshot-`date +%y%m%d` $(PACKAGE_NAME)
dist-rtag:
@echo Tagging current base HEAD for release $(VERSION)
cvs rtag release-`echo $(VERSION) | tr . -` $(PACKAGE_NAME)
rdiff:

451
NEWS Normal file
View file

@ -0,0 +1,451 @@
News
****
The currently released version of the library is `0.4.0'.
Noteworthy changes in version `0.5.0'
=====================================
* Improvements to the NSInvocation class, from Masatake Yamato
<masata-y
* Implemented several new OpenStep methods and classes (e.g. NSTask)
and speed improvements for others (NSArray, NSData, NSString),
from Richard Frith-Macdonald <richard
Noteworthy changes in version `0.4.0'
=====================================
* New tools for maintaining the defaults database.
* Use the new GNUstep Makefile Package to compile the library, tools
checks, and everything else.
* An implementation of NSDistributedLock
* NSData implemented as a class cluster including a class to
allocate shared VM memory.
* Big NSTimeZone improvements, as well as inclusion of time zone
files, from Yoo C. Chung <wacko@laplace.snu.ac.kr>.
* Major improvements to distributed objects and many related clases
from Richard Frith-Macdonald <richard@brainstorm.co.uk>. Also
added a nameserver.
* Major rewrite of NSString, include Unicode strings from Stevo
Crvenkovski <stevo@btinternet.com>
* A rewrite of the NSBundle class from Adam Fedor <fedor@gnu.org>
* Addition of a C-language style stream package.
* Better support for threads and locking.
* Support for running on Windows from Scott Christley
<scottc@net-community.com>
* Many, many, many, many bug fixes and new classes.
Noteworthy changes since version `0.1.19'
=========================================
* The library has changed its name from `libobjects' to
`libgnustep-base'. The Apr 17 ChangeLog entry contains a list of
the way various other names were changed.
* The library now requires a patch to gcc-2.7.2. The patch adds
thread-safe features to the GNU Objective C runtime. Each thread
has its own exception handler and assertion handler, thanks to Yoo
C. Chung <wacko@power1.snu.ac.kr>.
* Distributed Objects is much improved. Exceptions in the server
are sent back to the client. Ungracefully closed connections are
gracefully handled.
* NSUserDefaults has been implemented, thanks to Georg Tuparev
<tuparev@NMR.EMBL-Heidelberg.DE>.
* NSScanner has been implemented, thanks to Eric Norum
<Eric.Norum@usask.ca>.
* NSCharacterSet has a new caching scheme, and is now faster than
NeXT's implementation, thanks to Adam Fedor.
* Preliminary thread-safety work has been done. NSObject and
NSAutoreleasePool should be thread-safe.
* The "%@" printf directive now works on systems without GNU libc.
* The NS*Page* functions have been implemented.
* The mframe and behavior functions have been overhauled and better
commented.
* The NSHashTable and NSMapTable functions have been implemented,
thanks to Albin Jones <albin.jones@dartmouth.edu>. Albin has also
implemented underlying GNU functions that provide functions for
arrays and linked lists of C-type variables.
* The NSThread class has been implemented. Thanks to Scott
Christley <scottc@net-community.com>, the NSLock class has been
implemented.
* A RunLoop class has been implemented, and is used for listening to
Port objects. It is used for Distributed Objects. There is also
an NSRunLoop class based on RunLoop.
* The NSTimer class has been implemented, although its use with
RunLoops is currently disabled.
* The Notification mechanism has been implemented. It makes good
use of hash tables and linked lists in order to be fast.
* The Invocation class heirarchy has been fleshed out and now works.
* The collection classes have been overhauled to better handle
distributed objects, and for better compatibility with NeXT's
method names.
A new separation has been made in the abstract collection classes:
IndexedCollections contain objects accessible by an integer key,
but the user cannot insert at an arbitrary key; these are useful
for sorted collections, such as SplayTree's. OrderedCollection can
have their order determined by the user; i.e. users can send
`-insertObject:atIndex:', etc.
There is a new set of rich enumeration methods based on
Invocations.
* Port class heirarchy has been overhauled. There are now classes
for TCP ports, UDP ports, and Mach ports. Only the TCP ports are
currently functional.
* GNU-style archiving has had an overhaul, and the GNUstep
NSArchiver class is functional, but not strongly tested. It does
not yet call -awakeUsingCoder:.
I have separated the high-level archiving of groups of objects
from the low-level format of how C-types are written. There are
several new classes. CStream is a subclass of Stream that knows
how to encode C-type variables in a machine independent way; this
class has two concrete subclasses: BinaryCStream, and TextCStream.
Plug these backends into Coder to get different style low-level
formats for archiving.
Floats and doubles are now encoded more efficiently.
NSArchiver is built on top of Coder. You can actually send all the
Coder methods to NSArchiver and vice-versa.
GNU classes BinaryCoder and TextCoder are gone.
* Several new OpenStep functions have been implemented:
NSHomeDirectory, NSUserName, NSHomeDirectoryForUser, NSPageSize,
NSLogPageSize, NSroundUpToMultipleOfPageSize,
NSRoundDownToMultipleOfPageSize, NSRealMemoryAvailable,
NSAllocateMemoryPages, NSDeallocateMemoryPages, NSCopyMemoryPages.
* ...and many bug fixes.
Noteworthy changes since version `0.1.14'
=========================================
* Can be made as a shared library by passing `--enabled-shared' to
`configure'. Thanks to Jan Kybic <kybic@earn.cvut.cz> and Bryan
Headley <bwh@mail.lnd.coretech.com> for suggestions.
* New classes NSSet, NSMutableSet, NSCountedSet. New concrete
classes NSGSet, NSGMutableSet, NSGCountedSet. New test program
nsset.m. New class NSMethodSignature.
* Running './configure' and building the library in a different
directory than the source works as it should, according to the GNU
standards.
* Dynamic loading fixes for Solaris, thanks to Adam Fedor.
* Fixes to Coder correct bugs with encoding/decoding wildly
interconnected objects. (My application uses a "Suffix Tree"
structure: a Tree, and a LinkedList that winds its way through the
leaves of the tree; the LinkedList nodes also have pointers back
to the tree nodes.)
* NSTimeZone implemented, thanks to Peter Burka
<peter@bert.psyc.upei.ca>
* NSData fixes, thanks to Adam Fedor.
* NSObjCRuntime functions implemented. NSObject description methods
implemented.
* Bug fixes in NSString, NSDictionary, NSArray, NSGeometry and other
places.
Noteworthy changes since version `0.1.13'
=========================================
* NSProcessInfo class, thanks to Georg Tuparev.
* NSDate now more operational, thanks to Jeremy Bettis.
* Autorelease checking improved, thanks to Adam Fedor.
* NSString concrete classes now more configurable. Several new
methods implemented.
* Many bug fixes.
Noteworthy changes since version `0.1.12'
=========================================
* Bug fixes: installation; NSArray and NSDictionary copying;
NSArray, NSDictionary, NSData, NSArchiver, NSUnarchiver concrete
class configurability; NSString -getCharacter:range:. See the
ChangeLog for more details.
Noteworthy changes since version `0.1.10'
=========================================
* Now using `src', `config' and `doc' directories to un-clutter the
top-level directory.
* New GNUStep classes implemented: NSDictionary, NSMutableDictionary;
concrete classes NSGDictionary, NSGMutableDictionary; enumeration
classes NSGDictionaryKeyEnumerator, NSGDictionaryObjectEnumerator.
* More methods in NSData are implemented, thanks to Albin Jones.
* More methods in NSString are implemented; we have new classes
NSCharacterSet and NSBitmapCharSet; all thanks to Adam Fedor.
* And several bug fixes. See the ChangeLog for details.
Noteworthy changes since version `0.1.9'
========================================
* Renamed "foundation" include file directory to "Foundation", in
accordance with OpenStep.
* Several bug fixes, including a problem with a missing file in
0.1.9.
Noteworthy changes since version `0.1.8'
========================================
* Many new GNUStep classes: NSEnumerator, NSArrayEnumerator, NSCoder,
NSArchiver, NSUnarchiver, NSData, NSMutableData, NSGCoder,
NSGArchiver, NSGUnarchiver, NSGData, NSGMutableData. Much coding
and prep work has been done to make archiving work (see the
ChangeLog), but it's not quite ready for action yet.
* New GNUStep classes implemented by others: Thanks to Adam Fedor,
NSAssertionHandler. Thanks to Jeremy Bettis, NSDate.
* Overhauled encoding and decoding. The Coder now sends
-initWithCoder by default, but will still send the more flexible
+newWithCoder if the class implements it. See objects/Coding.h.
The Stream class interface has been changed slightly. There are
two new protocols for Streams.
* Several new debug-aiding methods implemented in NSAutoreleasePool.
* Separated Constant Collection protocols from changeable ones.
Eventually I'll separate the classes too.
* Included an outline for the GNU Objective C Language Manual. The
GNU project is looking for volunteers to help flesh it out. Send
email to Martin Michlmayr <tbm@ihq.com> or Andrew McCallum
<mccallum@gnu.ai.mit.edu>.
* Include the AUTHORS file, needed for legal reasons. Include the
`GNUStep-volunteers' file.
* Several bug fixes: Typo in Array.m; Linux header file frobbing in
NSZone.h; typo causing crash in checks/nsarray.m; bad deallocation
in Collection.m; typo in BinaryTree.m; put -write: and -read:
implementations back in Collection.m.
Noteworthy changes since version `0.1.7'
========================================
* Thanks to Adam Fedor <fedor@boulder.colorado.edu>, classes
NSBundle, NSNumber and NSValue are now operational. He also
provided stubs for NSArray, NSCoder and NSDictionary.
* NSArray has been fleshed out. There are new classes
NSConcreteArray and NSConcreteMutableArray. Basic operations with
the NSArray class cluster now work, and it is set up to coexist
nicely with the GNU collection heirarchy. Next I'll do
NSDictionary in a similar style.
* From Adam Fedor, there is a new patch to the gcc Objective C
runtime that aids dynamic linking. You'll have to apply this
patch and reinstall the runtime before you can compile this
version of libgnustep-base.
* Several bug fixes, including two serious ones in Collection
deallocation and behavior adding. See the ChangeLog for details.
Noteworthy changes since version `0.1.5'
========================================
* Better string handling. NSString is now fleshed out, and I've
implemented a scheme by which the GNU String object and OpenStep's
NSString can coexist nicely. The OpenStep classes declare their
string arguments with (NSString*) just like the standard says, but
the preferred (more flexible) way to declare string arguments is
(id <String>); and these two types are set up so that they
coexist. There is still more to be done. NSString has several
unimplemented methods; GNU String needs some more work.
* Newly implemented classes: MallocAddress, NSString,
NSMutableString, NSCString, NSMutableCString.
* Thanks to Pieter Schoenmakers <tiggr@es.ele.tue.nl> we have a new
version of the gcc-string.patch that should apply more smoothly.
* Thanks to Adam Fedor <fedor@boulder.colorado.edu> for a bug fix to
NXStringTable's.
* Thanks to Mark Lakata <lakata@nsdssp.lbl.gov> for a bug fix to
NSZone.c.
* Several bug fixes. Thanks to those who reported them. Credits
are in the ChangeLog.
Noteworthy changes since version `0.1.3'
========================================
This release not well tested at all. We desperately need someone to
write a test suite using dejagnu. Any volunteers?
I made this release now in order to share the progress that is being
made on GNUSTEP.
* New GNUSTEP implementations: NSObject, NSAutoreleasePool, NSZone.
Thanks to Mark Lakata for NSZone.
* New GNUSTEP implementations included, but not compiled: NSBundle,
NSException, NSGeometry, NSNumber, NSValue. Many thanks Adam
Fedor.
* Many new GNU classes: String classes! String, MutableString,
ConstantString. One interesting feature of the GNU string classes
is that that, just like in Smalltalk, they are part of the
Collection heirarchy--all the methods you are used to using on
other collections can be used on these "collections of
characters". You can create ConstantStrings using the @"" syntax.
* Entire library converted to use `retain', `release',
`autorelease', `dealloc' instead of `free'.
Noteworthy changes since version `0.1.0'
========================================
* New category: ObjectRetaining. New classes: AutoreleasePool,
AutoreleaseStack.
* Bug fixes: Install next-includes properly. New instructions in
README.ULTRIX. Time.m patched for Solaris 2.4. test12.m free fix.
Noteworthy changes in version `0.1.0'
=====================================
* Renamed the library from `libcoll' to `libgnustep-base'. (See the
end of the file `DISCUSSION' for the background on this name
choice.) Several file names changed to reflect this. GNU class
interfaces are now included with `objects' prefix, e.g. `#include
<objects/BinaryTree.h>'.
* Many new classes. Pseudo-random number classes Random, RNGBerkeley
and RNGAdditiveCongruential. New stream classes Stream,
StdioStream and MemoryStream. New coder classes Coder, TextCoder
and BinaryCoder. New network packet transmission classes Port and
SocketPort. New remote object messaging classes Connection, Proxy
and ConnectedCoder. New protocols Coding and Retaining. New, but
unimplemented: Lock and Locking. New but soon-to-disapppear:
RetainingNotifier, InvalidationListening.
* Some bug fixes: Fixed the assert typo in Storage.m. The Time
class now compiles under Solaris. Fixed insertion bug in
CircularArray. NXStringTable_scan.l can now be compiled with lex,
not just flex, (thanks to Adam Fedor <adam@bastille.rmnug.org>).
Properly detect the difference between gcc running under NEXTSTEP
and NeXT's cc. Using autoconf version 2.0. Renamed DelegateList
to DelegatePool. Renamed some collection hierarchy methods for
better consistency.
* Some directory reorganization so that NeXT-compatible files can be
included in the standard way, e.g. #include <objc/List.h>. Some
other NeXT-compatibility improvements: Changed `GNU' prefix to `NX'
in List and HashTable. New files zone.[hc] containing dummy stubs
for NeXT-compatible zone functions.
Noteworthy changes in verion `940524'
=====================================
* A NeXT-compatible NXStringTable object, thanks to Adam Fedor
<adam@bastille.rmnug.org>.
* SplayTree and RBTree classes now operational. More methods in Time
class implemented.
* Some API cleanup: -delegateListList changed to
-delegateListCollection. -includesSameContents: changed to
-contentsEqual:. -insertObject:atKey: changed to
-putObject:atKey:. See the ChangeLog for more detail.
* Configuration by autoconf in the self-tests directory.
Configuration script tests GCC nested functions. Configuration
script detects NEXTSTEP and makes the appropriate adjustments,
including skipping the NeXT-compatibility classes.
* Bug fixes: BinaryTree rotate methods fixed. Fixed the way
`ifNone:' and `ifAbsent:' functions were called. Fixed the way
long elements are printed. Added methods for preventing memory
leaks by unfinished enumerations: `-newEnumState' and
`-freeEnumState:'. Several bug fixes in List and Storage; changes
for better NeXT-compability. And more.
Noteworthy changes in version `931026'
======================================
* Installation using `./configure' and `autoconf'
* New BinaryTree and RBTree(unfinished) classes. Rewritten
LinkedList class.
* A new scheme for holding non-object elements in classes that
require object contents; EltNodeCollector class.
* Archiving with -write: and -read: methods. This involved removing
the ability to set the comparison function independent of content
type.
* Removed COLL_NO_ELEMENT and friends. Now there are no arbitrary
restrictions on which long int's can be stored. Like in Smalltalk,
...ifAbsentCall: methods have been added to replace this
functionalty.
* Added a LABMDA() macro for defining small functions in the arg
position.
* Removed many ...perform: methods. Use instead the more flexible
...call: methods with LABMDA().
* Renamed ...Description: methods to ...Encoding: for better use of
already-defined objc keyword: @encode().
* New in the Collecting protocol: Filtered enumerating instead of
filtered shallowCopy'ing. Enumerations still safe when modifying
the contents.
* The beginnings of documentation in libcoll.texi.
* Many bug fixes.
* ...and more.
Also see the `ChangeLog' file for more detail.

View file

@ -78,6 +78,8 @@ after-uninstall::
# Things to do after checking
# after-check::
regenerate:
copy-dist: $(DIST_FILES)
mkdir ../snap/NSCharacterSets
for file in $(DIST_FILES); do \

View file

@ -79,6 +79,8 @@ after-distclean::
# Things to do after checking
# after-check::
regenerate:
copy-dist: $(DIST_FILES)
mkdir ../snap/NSTimeZones
for file in $(DIST_FILES); do \

135
README Normal file
View file

@ -0,0 +1,135 @@
Readme
******
The GNUstep Base Library is a library of general-purpose, non-graphical
Objective C objects. For example, it includes classes for strings,
object collections, byte streams, typed coders, invocations,
notifications, notification dispatchers, moments in time, network ports,
remote object messaging support (distributed objects), event loops, and
random number generators.
It provides functionality that aims to implement the non-graphical
portion of the OpenStep standard. In many cases, the `NS*' classes are
implemented as wrappers around more featureful GNU classes.
Here is some introductory info to get you started:
Initial reading
===============
The file `NEWS' has the library's feature history.
The file `GNUstep-HOWTO' give instructions for installing the
library.
Preparing to write code
=======================
The documentation isn't much to speak of so far. Better
documentation will be forthcoming, but the library needs to settle
first. For now I recommend reading the header files. The headers for
the classes are in `./src/include'.
The FAQ contains an outline of the class heirarchy, as well as a
list of the differences between GNUstep and NeXT's implementation of
OpenStep, and GNUstep's improvements over NeXT's implementation.
Overview of the classes
=======================
Here is partial list of non-OpenStep classes, grouped by
functionality.
There are several GNU-specific protocols also. You can recognize the
protocols by their name: they all end with "ing".
* The collection objects all conform to the `Collecting' protocol.
Reading `src/include/Collecting.h' is a good place to start.
Protocols for collections that store their contents with keys and
with indices can be found in `src/incliude/KeyedCollecting.h' and
`src/include/IndexedCollecting.h' respectively. Examples of
generic collections are `Set' and `Bag'. The keyed collections are
`Dictionary' and `MappedCollector'. The classes `Array', `Queue',
`GapArray', `LinkedList', `BinaryTree', `RBTree' and `SplayTree'
are all indexed collections.
* The string objects conform to the `String' protocol. `CString'
provides an interface to strings based on ASCII bytes, and is
currently the only concrete subclass of String. The interface
between GNU `String' and OpenStep's `NSString' needs cleaning up
and will change. For now, I recommend using `NSString'.
* The public magnitude classes are `Time' and `Random'. The
`Random' class works in conjunction with pseudo-random number
generators that conform to the `RandomGenerating' protocol. The
conforming class `RNGBerkeley' provides identical behavior to the
BSD random() function. The class `RNGAdditiveCongruential' is an
implementation of the additive congruential method.
* Stream objects provide a consistent interface for reading and
writing bytes. Read `src/include/Stream.h' to get the general
idea. `StdioStream' objects work with files, file descriptors,
FILE pointers and pipes to/from executables. `MemoryStream'
objects work with memory buffers.
* CStream objects provide a way to write C variables to Stream
objects. Read `src/include/CStream.h' to understand the interface
of the abstract superclass. `TextCStream' writes C variables in a
human-readable ASCII format that can be manipulated with a text
editor or with your choice of text-processing programs, like `awk'
or `perl'. `BinaryCStream' writes C variables in a compact,
illegible stream of bytes. `TextCStream' and `BinaryCStream' each
write in machine-independant formats--so you can write on one
machine architecture, and successfully read on another.
`RawCStream' is like `BinaryCStream' accept it is
machine-dependant; it useful for efficient Distributed Objects
connections on the same machine.
* Coders provide a formatted way of writing Objective C objects to
CStream objects. After a coder is initialized with a stream, the
coder can encode/decode interconnected webs of Objective C objects
and C types and successfully keep track of complex
interconnections between objects. See `src/include/Coder.h' for
the abstract superclass interface; see `src/include/Coding.h' for
the protocol adopted by objects that read and write themselves
using coders. `Archiver' and `Unarchiver' are concrete subclasses
that are used for writing/reading with files.
`Coder's and `CStream's and `Stream's can be mixed and matched so
that programmers can choose the destination and the format
separately.
* The distributed object support classes are `NSConnection',
`NSProxy', `ConnectedCoder', `Port' and `TcpPort'. This version
of the distributed objects only works with sockets. A Mach port
back-end should be on the way.
Test Programs
=============
Some of the programs I've used to test the library are in
`./checks'. Many of them are pretty messy, (desperately trying to
tickle that late night bug), but at least they show some code that works
when the library compiles correctly. I'm looking for a volunteer to
write some nicely organized test cases using `dejagnu'. Any takers?
How can you help?
=================
* Read the projects and questions in the `TODO' file. If you
can volunteer for any of the projects, or if you have any
useful comments send me email!
* Give me feedback! Tell me what you like; tell me what you
think could be better. Send me bug reports.
* Donate classes. If you write classes that fit in the
libgnustep-base framework, I'd be happy to include them.
Happy hacking!
Andrew McCallum
mccallum@gnu.org
Adam Fedor
fedor@gnu.org

380
STATUS Normal file
View file

@ -0,0 +1,380 @@
Status Report
*************
Please send corrections to <fedor@gnu.org>.
*Key:*
*[10]*
Complete and tested.
*[8]*
Missing a few non-core methods, definitely usable.
*[6]*
Missing several methods, but core is there, usable.
*[4]*
Begun, but missing core functionality, not usable.
*[2]*
Skeleton.
*[0]*
Nothing there.
*[?]*
Unknown status.
Classes
=======
(Many classes do not raise the proper NSExceptions yet.)
*NSArchiver:: [8]*
Doesn't yet call -awakeAfterUsingCoder:.
*NSArray:: [9]*
*NSAssertionHandler:: [9]*
*NSAutoreleasePool:: [9]*
But not exception- safe
*NSBundle:: [8]*
*NSCalendarDate:: [7]*
*NSCharacterSet:: [8]*
decomposableCharacterSet and illegalCharacter set missing
*NSCoder:: [8]*
Missing class name substitution methods.
*NSConditionLock:: [8]*
*NSConnection:: [7]*
GNU Connection, however, needs:
* to handle retain/release/dealloc properly
* to be integrated with NSInvocation
* to incorporate futzing with low-level TCP-backend for better
speed
* to have UDP-backend work
* to cache ConnectedCoder's for better speed
* Thread-safety overhaul, this is major
*NSCountedSet:: [8]*
*NSData:: [8]*
*NSDate:: [8]*
*NSDeserializer:: [7]*
*NSDictionary:: [8]*
*NSDistantObject:: [7]*
*NSEnumerator:: [9]*
*NSException:: [9]*
But this needs integration with new, better
*NSInvocation:: [3]*
*NSLock:: [8]*
*NSMethodSignature:: [4]*
*NSMutableArray:: [8]*
*NSMutableCharacterSet:: [7]*
*NSMutableData:: [8]*
*NSMutableDictionary:: [8]*
*NSMutableSet:: [8]*
*NSMutableString:: [8]*
*NSNotification:: [9]*
*NSNotificationCenter:: [9]*
*NSNotificationQueue:: [6]*
Needs integration with NSRunLoop, and efficiency improvements
*NSNumber:: [9]*
*NSObject:: [10]*
*NSProcessInfo:: [9]*
*NSProxy:: [7]*
*NSRecursiveLock:: [8]*
*NSRunLoop:: [8]*
NSTimer's not yet working, but everything else should be
*NSScanner:: [8]*
*NSSerializer:: [7]*
*NSSet:: [8]*
*NSString:: [8]*
Careful, relationship with GNU String is tricky; this could also
use fixing.
*NSThread:: [8]*
*NSTimeZone:: [8]*
*NSTimeZoneDetail:: [8]*
*NSTimer:: [6]*
Working out bugs with returning doubles.
*NSUnarchiver:: [8]*
See NSArchvier
*NSUserDefaults:: [8]*
*NSValue:: [9]*
Cross-Class Projects, or GNU-related foundations for GNUstep classes
====================================================================
*Finish subclasses of Port class: Ports based on UDP, pflocal*
sockets, and shared memory.
*String classes will get some organizational work.*
Protocols
=========
*NSCoding:: [9]*
*NSCopying:: [9]*
*NSLocking:: [9]*
*NSMutableCopying:: [9]*
*NSObjCTypeSerializationCallBack:: [9]*
*NSObject (Protocol):: [9]*
Functions
=========
Memory Allocation Functions
---------------------------
*[8] Get the Virtual Memory Page Size*
`unsigned NSPageSize (void)'
`unsigned NSLogPageSize (void)'
`unsigned NSRoundDownToMultipleOfPageSize (unsigned BYTECOUNT)'
`unsigned NSRoundUpToMultipleOfPageSize (unsigned BYTECOUNT)'
*[2] Get the Amount of Real Memory*
`unsigned NSRealMemoryAvailable (void)'
*[8] Allocate or Free Virtual Memory*
`void *NSAllocateMemoryPages (unsigned BYTECOUNT)'
`void NSDeallocateMemoryPages (void *POINTER, unsigned BYTECOUNT)'
`void NSCopyMemoryPages (const void *SOURCE, void *DESTINATION, unsigned BYTECOUNT)'
*[8] Child and Merge Zones*
void NSMergeZone(NSZone *zonep)
NSZone *NSCreateChildZone(NSZone *parentZone, size_t startSize, size_t granularity, int canFree)
*[9] Get a Zone*
`NSZone *NSCreateZone (unsigned STARTSIZE, unsigned GRANULARITY, BOOL CANFREE)'
`NSZone *NSDefaultMallocZone (void)'
`NSZone *NSZoneFromPointer (void *POINTER)'
*[10] Allocate or Free Memory in a Zone*
`void *NSZoneMalloc (NSZone *ZONE,'
`void *NSZoneCalloc (NSZone *ZONE, unsigned NUMELEMS, unsigned NUMBYTES)'
`void *NSZoneRealloc (NSZone *ZONE, void *POINTER, unsigned SIZE)'
`void NSRecycleZone (NSZone *ZONE)'
`void NSZoneFree (NSZone *ZONE, void *POINTER)'
*[9] Name a Zone*
But the function names are wrong
`void NSSetZoneName (NSZone *ZONE, NSString *name)'
`NSString *NSZoneName (NSZone *ZONE)'
Object Allocation Functions
---------------------------
*[10] Allocate or Free an Object*
`NSObject *NSAllocateObject (Class ACLASS, unsigned EXTRABYTES, NSZone *ZONE)'
`NSObject *NSCopyObject(NSObject *ANOBJECT, unsigned EXTRABYTES, NSZone *ZONE)'
`void NSDeallocateObject (NSObject *ANOBJECT)'
*[9] Decide Whether to Retain an Object*
`BOOL NSShouldRetainWithZone (NSObject *ANOBJECT, NSZone
*REQUESTEDZONE)'
*[9] Modify the Number of References to an Object*
`BOOL NSDecrementExtraRefCountWasZero(id ANOBJECT)'
`void NSIncrementExtraRefCount(id ANOBJECT)'
Error-Handling Functions
------------------------
*[9] Change the Top-level Error Handler*
``NSUncaughtException'Handler *`NSGetUncaughtException'Handler(void)'
`void `NSSetUncaughtException'Handler(`NSUncaughtException'Handler *HANDLER)'
*[9] Macros to Handle an Exception*
`NS_DURING'
`NS_ENDHANDLER'
`NS_HANDLER'
`NS_VALUERETURN(VALUE, TYPE)'
`NS_VOIDRETURN'
*[9] Call the Assertion Handler from the Body of an Objective-C Method*
`NSAssert(BOOL CONDITION, NSString *DESCRIPTION)'
`NSAssert1(BOOL CONDITION, NSString *DESCRIPTION, ARG)'
`NSAssert2(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2)'
`NSAssert3(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3)'
`NSAssert4(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3, ARG4)'
`NSAssert5(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3, ARG4, ARG5)'
*[9] Call the Assertion Handler from the Body of a C Function*
`NSCAssert(BOOL CONDITION, NSString *DESCRIPTION)'
`NSCAssert1(BOOL CONDITION, NSString *DESCRIPTION, ARG)'
`NSCAssert2(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2)'
`NSCAssert3(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3)'
`NSCAssert4(BOOL CONDITION, NSString *DESCRIPTION, arg1, ARG2, ARG3, ARG4)'
`NSCAssert5(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3, ARG4, ARG5)'
*[9] Validate a Parameter*
`NSParameterAssert(BOOL CONDITION)'
`NSCParameterAssert(BOOL CONDITION)'
Geometric Functions
-------------------
*[10] Create Basic Structures*
`NSPoint NSMakePoint(float X, float Y)'
`NSSize NSMakeSize(float W, float H)'
`NSRect NSMakeRect(float X, float Y, float W, float H)'
`NSRange NSMakeRange(unsigned int LOCATION, unsigned int LENGTH)'
*[10] Get a Rectangle's Coordinates*
`float NSMaxX(NSRect ARECT)'
`float NSMaxY(NSRect ARECT)'
`float NSMidX(NSRect ARECT)'
`float NSMidY(NSRect ARECT)'
`float NSMinX(NSRect ARECT)'
`float NSMinY(NSRect ARECT)'
`float NSWidth(NSRect ARECT)'
`float NSHeight(NSRect ARECT)'
*[10] Modify a Copy of a Rectangle*
`NSRect NSInsetRect(NSRect ARECT, float DX, float DY)'
`NSRect NSOffsetRect(NSRect ARECT, float DX, float DY)'
`void NSDivideRect(NSRect INRECT, NSRect *SLICE, NSRect *REMAINDER, float AMOUNT, NSRectEdge EDGE)'
`NSRect NSIntegralRect(NSRect ARECT)'
*[10] Compute a Third Rectangle from Two Rectangles*
`NSRect NSUnionRect(NSRect ARECT, NSRect BRECT)'
`NSRect NSIntersectionRect(NSRect ARECT, NSRect BRECT)'
*[10] Test Geometric Relationships*
`BOOL NSEqualRects(NSRect ARECT, NSRect BRECT)'
`BOOL NSEqualSizes(NSSize ASIZE, NSSize BSIZE)'
`BOOL NSEqualPoints(NSPoint APOINT, NSPoint BPOINT)'
`BOOL NSIsEmptyRect(NSRect ARECT)'
`BOOL NSMouseInRect(NSPoint APOINT, NSRect ARECT, BOOL FLIPPED)'
`BOOL NSPointInRect(NSPoint APOINT, NSRect ARECT)'
`BOOL NSContainsRect(NSRect ARECT, NSRect BRECT)'
*[10] Get a String Representation*
`NSString *NSStringFromPoint(NSPoint APOINT)'
`NSString *NSStringFromRect(NSRect ARECT)'
`NSString *NSStringFromSize(NSSize ASIZE)'
Range Functions
---------------
*[9] Query a Range*
`BOOL NSEqualRanges(NSRange RANGE1, NSRange RANGE2)'
`unsigned NSMaxRange(NSRange RANGE)'
`BOOL NSLocationInRange(unsigned LOCATION, NSRange RANGE)'
*[9] Compute a Range from Two Other Ranges*
`NSRange NSUnionRange(NSRange RANGE1, NSRange RANGE2)'
`NSRange NSIntersectionRange(NSRange RANGE1, NSRange RANGE2)'
*[9] Get a String Representation*
`NSString *NSStringFromRange(NSRange RANGE)'
Hash Table Functions
--------------------
*[8]*
Create a Table
`NSHashTable * NSCreateHashTable(NSHashTableCallBacks CALLBACKS, unsigned CAPACITY)'
`NSHashTable * NSCreateHashTableWithZone(NSHashTableCallBacks CALLBACKS, unsigned CAPACITY, NSZone * ZONE)'
`NSHashTable * NSCopyHashTableWithZone(NSHashTable * TABLE, NSZone * ZONE)'
Free a Table
`void NSFreeHashTable(NSHashTable * TABLE)'
`void NSResetHashTable(NSHashTable * TABLE)'
Compare Two Tables
`BOOL NSCompareHashTables(NSHashTable * TABLE1, NSHashTable * TABLE2)'
Get the Number of Items
`unsigned NSCountHashTable(NSHashTable * TABLE)'
Returns the number of elements in TABLE.
Retrieve Items
`void * NSHashGet(NSHashTable * TABLE, const void * POINTER)'
`NSArray * NSAllHashTableObjects(NSHashTable * TABLE)'
`NSHashEnumerator NSEnumerateHashTable(NSHashTable * TABLE)'
`void * NSNextHashEnumeratorItem(NSHashEnumerator * ENUMERATOR)'
Add or Remove an Item
`void NSHashInsert(NSHashTable * TABLE, const void * POINTER)'
`void NSHashInsertKnownAbsent(NSHashTable * TABLE, const void * POINTER)'
`void * NSHashInsertIfAbsent(NSHashTable * TABLE, const void * POINTER)'
`void NSHashRemove(NSHashTable * TABLE, const void * POINTER)'
Get a String Representation
`NSString * NSStringFromHashTable(NSHashTable * TABLE)'
Map Table Functions
-------------------
*[8]*
Create a Table
`NSMapTable * NSCreateMapTable(NSMapTableKeyCallBacks KEYCALLBACKS, NSMapTableValueCallBacks VALUECALLBACKS, unsigned CAPACITY)'
`NSMapTable * NSCreateMapTableWithZone(NSMapTableKeyCallBacks KEYCALLBACKS, NSMapTableValueCallBacks VALUECALLBACKS, unsigned CAPACITY,'
`NSMapTable * NSCopyMapTableWithZone(NSMapTable * TABLE, NSZone * ZONE)'
Free a Table
`void NSFreeMapTable(NSMapTable * TABLE)'
`void NSResetMapTable(NSMapTable * TABLE)'
Compare Two Tables:
`BOOL NSCompareMapTables(NSMapTable * TABLE1, NSMapTable * TABLE2)'
Get the Number of Items
`unsigned NSCountMapTable(NSMapTable * TABLE)'
Retrieve Items
`BOOL NSMapMember(NSMapTable * TABLE, const void * KEY, void ** ORIGINALKEY, void ** VALUE)'
`void * NSMapGet(NSMapTable * TABLE,'
`NSMapEnumerator NSEnumerateMapTable(NSMapTable * TABLE)'
`BOOL NSNextMapEnumeratorPair(NSMapEnumerator * ENUMERATOR, void ** KEY, void ** VALUE)'
`NSArray * NSAllMapTableKeys(NSMapTable * TABLE)'
`NSArray * NSAllMapTableValues(NSMapTable * TABLE)'
Add or Remove an Item
`void NSMapInsert(NSMapTable * TABLE, const void * KEY, const void * VALUE)'
`void * NSMapInsertIfAbsent(NSMapTable * TABLE, const void * KEY, const void * VALUE)'
`void NSMapInsertKnownAbsent(NSMapTable * TABLE, const void * KEY, const void * VALUE)'
`void NSMapRemove(NSMapTable * TABLE,'
`NSString *NSStringFromMapTable(NSMapTable *TABLE)'
Miscellaneous Functions
-----------------------
*[7] Get Information about a User*
`NSString *NSUserName(void)'
`NSString *NSHomeDirectory(void)'
`NSString *NSHomeDirectoryForUser(NSString *USERNAME)'
*[9] Log an Error Message*
`void NSLog(NSString *format,...'
`void NSLogv(NSString * FORMAT, va_list ARGS)'
*[8] Get Localized Versions of Strings*
`NSString * NSLocalizedString(NSString * KEY, NSString * COMMENT)'
`NSString * NSLocalizedStringFromTable(NSString * KEY, NSString * TABLENAME, NSString * COMMENT)'
`NSString * NSLocalizedStringFromTableInBundle(NSString * KEY, NSString * TABLENAME, NSBundle * ABUNDLE, NSString * COMMENT)'
*[9] Convert to and from a String*
`Class NSClassFromString(NSString *ACLASSNAME)'
`SEL NSSelectorFromString(NSString *ASELECTORNAME)'
`NSString *NSStringFromClass(Class ACLASS)'
`NSString *NSStringFromSelector(SEL ASELECTOR)'
*[3] Compose a Message To Be Sent Later to an Object*
`NSInvocation *NS_INVOCATION(Class ACLASS, INSTANCEMESSAGE)'
`NSInvocation *NS_MESSAGE(id ANOBJECT, INSTANCEMESSAGE)'

View file

View file

@ -201,6 +201,9 @@ AUTHORS: GNUmakefile
$(DIST_FILES) >>AUTHORS; \
done
regenerate: $(DIST_FILES)
mv AUTHORS ..
copy-dist: $(DIST_FILES)
mkdir ../snap/src
mkdir ../snap/src/include

View file

@ -1,167 +0,0 @@
s/@configure_input@/ Generated from Makefile.in by configure.bat/
s/@srcdir@/./
s/@prefix@/$(MB_DEV)/
s/@exec_prefix@/$(prefix)/
s/libdir = $(exec_prefix)\/lib/libdir = $(exec_prefix)\\$(MB_LIB)/
s/includedir = $(prefix)\/include/includedir = $(prefix)\\$(MB_H)\\$(MB_OS)/
s/CC = @CC@ -pipe/CC = gcc -fgnu-runtime/
s/@RANLIB@/touch/
s/@INSTALL@/cp/
s/@INSTALL_PROGRAM@/$(INSTALL)/
s/@INSTALL_DATA@/$(INSTALL)/
s/AR = ar/AR = lib/
s/ARFLAGS = rc/ARFLAGS = /
s/AROUT =/AROUT = -out:/
s/@LN_S@/cp/
s/@SHARED_LIBRARY@/libgnustep-base.dll/
s/CFLAGS = -g -O -Wall -Wno-implicit/CFLAGS = -O -Wall -Wno-implicit/
s/LEXFLAGS =/LEXFLAGS = -L/
s/EXEEXT =/EXEEXT = .exe/
s/OEXT = .o/OEXT = .obj/
s/LIBEXT = .a/LIBEXT = .lib/
s/@DEFS@/-D__MS_WIN32__\
\
##################################################################\
#\
# NT specifics\
#\
WIN32_GCC_INCLUDE = \
INIT_FILE = gnustep_base_init_runtime\
INIT_FILE_OBJ = $(INIT_FILE)$(OEXT)/
s/@DYNAMIC_LINKER@/null/
s/@NEXT_INCLUDES@//
s/@HEADERS_INSTALL@/$(GNU_HEADERS) $(NEXTSTEP_HEADERS) $(GNUSTEP_HEADERS)/
s/@OBJS_INSTALL@/$(GNU_OBJS) $(NEXTSTEP_OBJS) $(GNUSTEP_OBJS)/
s/@LIBOBJECTS_SO@//
/lex.pl.m: proplist.l proplist.tab.h/,/proplist.l > $@/c\
lex.pl.m: proplist.l proplist.tab.h\
touch lex.pl.m
/lex.sf.m: stringsfile.l stringsfile.tab.h/,/stringsfile.l > $@/c\
lex.sf.m: stringsfile.l stringsfile.tab.h\
touch lex.sf.m
/lib$(LIBRARY_NAME)$(LIBEXT):/,/$(RANLIB) lib$(LIBRARY_NAME)$(LIBEXT)/c\
lib$(LIBRARY_NAME)$(LIBEXT): $(HEADERS_INSTALL) $(OBJS_INSTALL) $(INIT_FILE_OBJ)\
$(AR) $(ARFLAGS) $(AROUT)lib1$(LIBEXT) $(GNU_OBJS)\
$(AR) $(ARFLAGS) $(AROUT)lib2$(LIBEXT) $(NEXTSTEP_OBJS) $(INIT_FILE_OBJ)\
$(AR) $(ARFLAGS) $(AROUT)lib3$(LIBEXT) $(GNUSTEP_OBJS)\
$(AR) $(ARFLAGS) $(AROUT)lib$(LIBRARY_NAME)$(LIBEXT) \\\
lib1$(LIBEXT) lib2$(LIBEXT) lib3$(LIBEXT)\
rm lib1$(LIBEXT) lib2$(LIBEXT) lib3$(LIBEXT)
/NSVALUE_MFILES =/c\
NSVALUE_CLUSTER = 0 1 2 3 4 \
NSVALUE_OFILES = \\\
NSValue0$(OEXT) NSValue1$(OEXT) NSValue2$(OEXT) NSValue3$(OEXT) \\\
NSValue4$(OEXT) \
NSVALUE_MFILES = \\
/NSNUMBER_MFILES =/c\
NSNUMBER_CLUSTER = 0 1 2 3 4 5 6 7 8 9 10 11 12 \
NSNUMBER_OFILES = \\\
NSNumber0$(OEXT) NSNumber1$(OEXT) NSNumber2$(OEXT) \\\
NSNumber3$(OEXT) NSNumber4$(OEXT) NSNumber5$(OEXT) \\\
NSNumber6$(OEXT) NSNumber7$(OEXT) NSNumber8$(OEXT) \\\
NSNumber9$(OEXT) NSNumber10$(OEXT) NSNumber11$(OEXT) \\\
NSNumber12$(OEXT) \
NSNUMBER_MFILES = \\
/$(NSVALUE_MFILES) : NSCTemplateValue.m/,/cat $(srcdir)\/NSConcreteNumber/c\
# Compilation of class clusters \
$(NSVALUE_OFILES) : NSCTemplateValue.m \
for %i in ( ${NSVALUE_CLUSTER} ) do \\\
( cp NSCTemplateValue.m NSCTemplateValue%i.m & \\\
$(CC) -c $(ALL_CPPFLAGS) $(DEFS) $(ALL_OBJCFLAGS) \\\
-DTYPE_ORDER=%i NSCTemplateValue%i.m \\\
-o NSValue%i$(OEXT) & \\\
rm -f NSCTemplateValue%i.m ) \
\
$(NSNUMBER_OFILES) : NSConcreteNumber.m \
for %i in ( ${NSNUMBER_CLUSTER} ) do \\\
( cp NSConcreteNumber.m NSConcreteNumber%i.m & \\\
$(CC) -c $(ALL_CPPFLAGS) $(DEFS) $(ALL_OBJCFLAGS) \\\
-DTYPE_ORDER=%i -c NSConcreteNumber%i.m \\\
-o NSNumber%i$(OEXT) & \\\
rm -f NSConcreteNumber%i.m )
/GNUSTEP_OBJS =/,/$(NSNUMBER_MFILES:.m=/c\
GNUSTEP_OBJS = \\\
$(GNUSTEP_MFILES:.m=$(OEXT)) \\\
$(GNUSTEP_CFILES:.c=$(OEXT)) \\\
$(NSVALUE_OFILES) $(NSNUMBER_OFILES)
/installdirs:/,/$(includedir)\/Foundation/c\
installdirs:\
IF NOT EXIST $(includedir)\\gnustep mkdir $(includedir)\\gnustep\
IF NOT EXIST $(includedir)\\gnustep\\base mkdir $(includedir)\\gnustep\\base\
IF NOT EXIST $(includedir)\\objc mkdir $(includedir)\\objc
/install: installdirs all/,/cd $(includedir)\/objc; rm -f README/c\
$(INIT_FILE_OBJ): $(OBJS_INSTALL)\
nm $(GNU_OBJS) | grep " __GLOBAL_" > tmpinit.c\
nm $(GNUSTEP_OBJS) | grep " __GLOBAL_" >> tmpinit.c\
nm $(NEXTSTEP_OBJS) | grep " __GLOBAL_" >> tmpinit.c\
collect tmpinit.c $(INIT_FILE)\
$(CC) -c $(ALL_CPPFLAGS) $(DEFS) $(ALL_OBJCFLAGS) $(INIT_FILE).c\
rm tmpinit.c\
\
uninstall:\
rm -f $(libdir)\/lib$(LIBRARY_NAME)$(LIBEXT)\
rm -f $(libdir)\/lib$(LIBRARY_NAME)-dll$(LIBEXT)\
rm -f $(prefix)\/$(MB_BIN)\/lib$(LIBRARY_NAME).dll\
rm -rf $(includedir)\/gnustep/base\
rm -rf $(includedir)\/Foundation\
for %i in ( ${NEXTSTEP_HEADERS} ) do \\\
rm -f $(includedir)/%i\
\
lib$(LIBRARY_NAME)-dll$(LIBEXT): $(HEADERS_INSTALL) $(OBJS_INSTALL) $(INIT_LIB_OBJ) lib$(LIBRARY_NAME).def\
lib -machine:i386 -def:lib$(LIBRARY_NAME).def \\\
lib$(LIBRARY_NAME)$(LIBEXT) \\\
-out:lib$(LIBRARY_NAME)-dll$(LIBEXT)\
\
lib$(LIBRARY_NAME).dll: $(HEADERS_INSTALL) $(OBJS_INSTALL) $(INIT_LIB_OBJ) lib$(LIBRARY_NAME)-dll$(LIBEXT) win32-entry$(OEXT)\
link -out:lib$(LIBRARY_NAME).dll $(DLLFLAGS) \\\
lib$(LIBRARY_NAME)-dll.exp \\\
lib$(LIBRARY_NAME)$(LIBEXT) \\\
win32-entry$(OEXT) libgcc.lib libobjc-dll.lib \\\
libcmt.lib oldnames.lib user32.lib kernel32.lib wsock32.lib \\\
advapi32.lib\
\
lib$(LIBRARY_NAME).def: lib$(LIBRARY_NAME)$(LIBEXT)\
nm libgnustep-base.lib | grep "g e" | grep ".text" | gawk "{print $$6}" | gawk "{print substr($$1,2,length($$1)-1)}" > libgnustep-base.lst\
cat win32-def.top libgnustep-base.lst > libgnustep-base.def\
rm libgnustep-base.lst\
\
win32-entry$(OEXT): win32-entry.c\
$(CC) -c $(ALL_CPPFLAGS) $(DEFS) $(ALL_CFLAGS) -o $*$(OEXT) $<\
\
install: installdirs all\
$(INSTALL_DATA) lib$(LIBRARY_NAME)$(LIBEXT) $(libdir)\
$(INSTALL_DATA) lib$(LIBRARY_NAME)-dll$(LIBEXT) $(libdir)\
$(INSTALL_DATA) lib$(LIBRARY_NAME).dll $(prefix)/$(MB_BIN)\
$(INSTALL_DATA) $(srcdir)/gnustep/base/*.h $(includedir)/gnustep/base\
$(INSTALL_DATA) $(srcdir)/objc/*.h $(includedir)/objc\
$(INSTALL_DATA) include/config.h $(includedir)/gnustep/base/config.h\
IF EXIST $(includedir)\\Foundation rm -rf $(includedir)/Foundation\
cp -r $(includedir)/gnustep/base $(includedir)/Foundation
/for file in $(NEXTSTEP_HEADERS); do/,/done/c\
for %i in ( ${NEXTSTEP_HEADERS} ) do \\\
rm -f $(includedir)/%i
/gnustep\/base:/,/ln -s $(srcdir)\/include Foundation/c\
gnustep/base: include\/preface.h FORCE\
-rm -rf gnustep\
-mkdir gnustep\
-mkdir gnustep\\base\
-cp -rf include/* gnustep/base\
# This deletion is necessary, because the CVS repository contains\
# an emtpy `Foundation' directory that used to hold the OpenStep headers.\
Foundation: FORCE\
-rm -rf Foundation\
-mkdir Foundation\
-cp -rf include/* Foundation
/clean: mostlyclean/,/rm -f dynamic-load.h/c\
clean: mostlyclean\
rm -f lib$(LIBRARY_NAME)$(LIBEXT) lib$(LIBRARY_NAME).dll *${OEXT}\
rm -f $(NSVALUE_MFILES) $(NSNUMBER_MFILES)\
rm -f gnustep_base_init_runtime.*\
rm -f libgnustep-base-dll.*\
rm -f libgnustep-base.def\
distclean: clean\
rm -f Makefile\
rm -f 0 1 2 3 4 5 6 7 8 9 10 11 12\
rm -rf gnustep\
rm -rf Foundation\
rm -f dynamic-load.h

View file

@ -38,7 +38,6 @@
#include <sys/param.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#endif /* WIN32 */
static NSLock *_hostCacheLock = nil;

View file

@ -548,7 +548,7 @@ handle_printf_atsign (FILE *stream,
unsigned int len = [d length];
if (d == nil) return nil;
if(((test[0]==0xFF) && (test[1]==0xFE)) || ((test[1]==0xFF) && (test[0]==0xFE)))
if(test && (((test[0]==0xFF) && (test[1]==0xFE)) || ((test[1]==0xFF) && (test[0]==0xFE))))
enc = NSUnicodeStringEncoding;
else
enc = [NSString defaultCStringEncoding];

View file

@ -116,6 +116,7 @@ static BOOL entered_multi_threaded_state;
start-up, and for thread's created by calling
objc_thread_detach() directly.) */
t = [[NSThread alloc] init];
objc_thread_set_data (t);
return t;
}

View file

@ -38,6 +38,7 @@
#include <errno.h>
#include <Foundation/NSUserDefaults.h>
#include <Foundation/NSFileManager.h>
#include <Foundation/NSPathUtilities.h>
#include <Foundation/NSDictionary.h>
#include <Foundation/NSArray.h>
@ -505,11 +506,20 @@ static NSMutableString *processName = nil;
return NO;
// Read the persistent data from the stored database
newDict = [[NSMutableDictionary allocWithZone:[self zone]]
initWithContentsOfFile:defaultsDatabase];
if (!newDict)
if ([[NSFileManager defaultManager] fileExistsAtPath: defaultsDatabase])
newDict = [[NSMutableDictionary allocWithZone:[self zone]]
initWithCapacity:1];
initWithContentsOfFile:defaultsDatabase];
else
{
NSLog(@"Creating defaults database file %@", defaultsDatabase);
[[NSFileManager defaultManager] createFileAtPath: defaultsDatabase
contents: nil
attributes: nil];
}
if (!newDict)
newDict = [[NSMutableDictionary allocWithZone:[self zone]]
initWithCapacity:1];
if (changedDomains)
{ // Synchronize both dictionaries

View file

@ -49,7 +49,7 @@
#ifndef __WIN32__
#include <unistd.h> /* for gethostname() */
#include <sys/param.h> /* for MAXHOSTNAMELEN */
#include <arpa/inet.h> /* for inet_ntoa() */
#include <netinet/in.h> /* for inet_ntoa() */
#include <fcntl.h>
#include <sys/socket.h>
#include <sys/file.h>

View file

@ -41,7 +41,6 @@
#include <sys/param.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#endif /* WIN32 */
#include <sys/file.h>

215
TODO Normal file
View file

@ -0,0 +1,215 @@
Todo
****
This TODO list is out of date.
Projects Looking for Volunteers
===============================
If you think you can do one of these projects, please let me know.
Your help is greatly appreciated. Send email to `mccallum@gnu.org'.
* Need to improve the testsuite and actually run it on gstep-base.
* Change all the assert()'s (especially in the archiving code) to
NSAssert()'s. This will help make D.O. servers more safe from bad
clients.
* Make NS... classes raise the NSExceptions they are supposed to.
Change many NSParameterAssert()'s into NSAssert()'s with
explanations.
* Many implementations could be made more efficient. The library
hasn't been efficiency tuned very much. Overridding more methods
in certain classes could make things more efficient (especially
EltNodeCollector). SplayTree's could be done using top-down
splaying. collhash could be completely reimplemented. ...and a
lot more...
* Implement efficient SmallInt and SmallFloat classes in the same
sort of way that Smalltalk does. Talk to me.
mccallum@gnu.ai.mit.edu.
McCallum's To Do's
==================
* Separate core and non-core code in NSDictionary, NSSet, etc, the
same way I did for NSArray.
* Separate Constant and non-Constant collections for the rest of the
GNU connection classes the same way I did for Array.
* Make sure the GNU Archiver/Unarchiver handle
-encodeConditionalObject: and -decodeObject: correctly.
* Reorganize some of the Categories to make a minimal NSObject-using
program smaller. Currently it is huge becuase it pulls in
archiving and therefore many of the collection classes. (But
perhaps this doesn't matter, since we recommend using shared
libraries anyway.)
* Make sure that Encoder's properly release their CStream and
Stream's. It seems that the Stream is not getting -delloc'ed, and
therefore may not be closed, and therefore may be missing data at
the end.
* Do low-level frobbing of TCP to reduce delays.
* Make UdpPort work; make MachPort work.
* Finish NotificationQueue, and make it interoperate with the
RunLoop properly.
* Make the NSTimer's work and interoperate with the RunLoop properly.
* Fix many memory allocation inconsistencies. Methods that return
malloc'ed buffers should autorelease those buffers, (like
readFormat:). (I think all these are fixed now.)
* Many code fixes and cleanups, indicated with `xxx' in the source.
* Add Coding methods to all the collection classes.
* Finish Collection heirarchy clean ups. We need non-mutable
version for many of the classes.
* Possibly change implementation of `-(int)compare:anObject' for
Collection. How should non-Indexed collections be ordered?
* Fix all the subclassResponsibility comments in objects/*.h
* I will finish gnustep-base documentation.
Questions
=========
I would greatly appreciate your feedback on the questions below.
Please email your thoughts to mccallum@gnu.ai.mit.edu.
* I want to put method names in texinfo indices, but the colons in
the method names are interfering with info's notion of menu item
names and node names. Help. Any ideas? (Kresten?)
* HashTable.m (-initKeyDesc:valueDesc:capacity:) I tried to make it
portable, but I didn't try very hard. Anyone want to send in
fixes?
* I fixed -emptyCopy in all the subclasses, but the -emptyCopy scheme
seems pretty fragile. How about calling -initFoo: inside
-emptyCopy? This way we avoid having yet another method in which
instance vars must be initialized to some consistent state.
-allocCopy would never even get called. <<ObjC insiders: This is
a less well-expressed version of what we've just been discussing
in email.>>
* If you don't like the organization of the documentation and you
have suggestions for changes, please say so now, not after it's
all been written.
* Does anyone really need the ability to set the collection element
comparison function independent of the -compare: method?
* How about adding flexibity in the method name that a LinkedList
sends a LinkedListNode to get/set the link ivars. This would
enable us to add a node to more than one linked list.
* Something like this needed? - elementDidChange: (elt*)elementPtr;
Currently you have to remove, change, add, for some classes.
* I've been told that GNU filenames should be 14 chars or less. I
don't want to abbreviate my classnames, but I think using .h
@interface files with names different than the class name is even
worse. ** I want to keep my unabbreviated filenames!! ** What to
do, what to do... I can't believe that *all* GNU classnames will be
limited to 12 characters forever and ever--disgusting.
Albin's To Do List
==================
I'm sure that there're other things to do, but these are the ones I
know now:
General
-------
* Make thread-safe all of my code that should be.
* Fully annotate all of my headers.
* Document my work and the use of its fruit.
Critical
--------
* Code:
+ (`src/array.m') `objects_array_check'
+ (`src/array.m') `objects_array_map_elements'
+ (`src/cbs-char-p.m') `objects_char_p_describe'
+ (`src/cbs-int-p.m') `objects_int_p_describe'
+ (`src/cbs-int.m') `objects_int_describe'
+ (`src/hash.m') `_objects_hash_hash'
+ (`src/hash.m') `objects_hash_check'
+ (`src/hash.m') `objects_hash_description'
+ (`src/list.m') `objects_list_is_equal_to_list'
+ (`src/map.m') `_objects_map_hash'
+ (`src/map.m') `objects_map_check'
+ (`src/map.m') `objects_map_description'
* Correct:
+ (`src/array.m') `objects_array_dealloc'
+ (`src/cbs-int.m') `_GNUSTEP_BASE_NOT_AN_INT_MARKER'
* Improve the error handling of:
+ (`src/array.m') `_objects_array_insert_bucket'
+ (`src/hash.m') `objects_hash_add_element_known_absent'
+ (`src/list.m') `objects_list_at_index_insert_element'
+ (`src/map.m') `objects_map_at_key_put_value_known_absent'
Not So Critical
---------------
* Strengthen my resolve on the correctness of:
+ (`src/cbs-char-p.m') `_GNUSTEP_BASE_NOT_A_CHAR_P_MARKER'
+ (`src/cbs-id.m') `_GNUSTEP_BASE_NOT_AN_ID_MARKER'
+ (`src/cbs-int-p.m') `_GNUSTEP_BASE_NOT_AN_INT_P_MARKER'
+ (`src/cbs-int-p.m') `objects_int_p_is_equal'
+ (`src/cbs-void-p.m') `_GNUSTEP_BASE_NOT_A_VOID_P_MARKER'
+ (`src/hash.m') `objects_hash_rightsize'
+ (`src/hash.m') `objects_hash_all_elements'
+ (`src/map.m') `objects_map_rightsize'
+ (`src/map.m') `objects_map_all_keys'
+ (`src/map.m') `objects_map_all_values'
* Improve the effeciency of:
+ (`src/array.m') `_objects_array_insert_bucket'
+ (`src/hash.m') `objects_hash_minus_hash'
+ (`src/list.m') `objects_list_at_index_insert_list'

View file

@ -71,6 +71,7 @@ after-distclean::
# Things to do after checking
# after-check::
regenerate:
copy-dist: $(DIST_FILES)
mkdir ../snap/checks

View file

@ -45,6 +45,8 @@ after-install::
# Things to do after checking
# after-check::
regenerate:
copy-dist: $(DIST_FILES)
mkdir ../snap/Tools
for f in $(DIST_FILES); do \

3457
configure vendored Executable file

File diff suppressed because it is too large Load diff

View file

@ -1,15 +0,0 @@
#!/bin/sh -e
# The directory in which to find the last snapshot
dir=${HOME}/gnu/releases
# The name of this module
module=gstep-base
. Version
cvs -Q rtag -F release-`echo ${VERSION} | tr . -` $module
make dist
mv -f ${module}-${VERSION}.tar.gz $dir

View file

@ -1,59 +0,0 @@
#!/bin/sh
# The directory in which to find the last snapshot; must be absolute path
dir=/home/mccallum/gnu/releases
# The email addresses of people to receive mail about the new diff
diff_recipients=gnustep-dev@prep.ai.mit.edu
# The name of this module
module=gstep-base
# A regular expression for the version string "x.y.z"
yrptn='[0-9][0-9][0-9][0-9][0-9][0-9]'
# The pattern for the file containing the diff
ptn="${module}-${yrptn}"
dptn="${ptn}-${yrptn}.diff"
# Get the current version
. Version
# Find date of the last snapshot
lastdist=${VERSION}
# This depends on the user setting this variable from the command line
if [ -z $OLD ]; then
echo You must set the shell variable OLD to the old version number.
exit -1
fi
secondlastdist=${OLD}
echo Making diff between $secondlastdist and $lastdist
# The name of the diff file
diff="${module}-${secondlastdist}-${lastdist}.diff"
if [ -f $dir/$diff ]; then
echo $dir/$diff already exists! Exiting.
exit -1
fi
echo Making $diff
# Untar the old dist
(cd /tmp ; tar -zvxf $dir/${module}-${secondlastdist}.tar.gz)
# Untar the new dist
(cd /tmp ; tar -zvxf $dir/${module}-${lastdist}.tar.gz)
# Make the diff
echo Diffing...
rm -f /tmp/$diff
(cd /tmp; \
diff -u -N -r ${module}-${secondlastdist} ${module}-${lastdist} > $diff)
# Remove the dist dirs
rm -rf /tmp/${module}-${secondlastdist} /tmp/${module}-${lastdist}
if [ -s /tmp/$diff ]; then
# Mail a message saying the new diff is available. (Commented out for now)
# mail -s $diff < $diff $diff_recipients
gzip -9 /tmp/$diff && mv -f /tmp/$diff.gz $dir
else
rm -f /tmp/$diff
fi

View file

@ -1,63 +0,0 @@
#!/bin/sh
# The directory in which to find the last snapshot; must be absolute path
dir=/home/mccallum/gnu/releases
# The email addresses of people to receive mail about the new diff
diff_recipients=gnustep-dev@prep.ai.mit.edu
# The name of this module
module=gstep-base
# A regular expression for the six-digit date string "yymmdd"
yrptn='[0-9][0-9][0-9][0-9][0-9][0-9]'
# The pattern for the file containing the diff
ptn="${module}-${yrptn}"
dptn="${ptn}-${yrptn}.diff"
# Get the current date
date=`date +%y%m%d`
# Find date of the last snapshot
lastsnap=`cd $dir; ls $ptn.tar.gz 2>/dev/null |
sed -e "s/^.*\\(${yrptn}\\)[.a-z]*$/\\1/" |
sort -nr | head -1`
# Find the date of the second-to-last snapshot
secondlastsnap=`cd $dir; ls $ptn.tar.gz 2>/dev/null |
sed -e "s/^.*\\(${yrptn}\\)[.a-z]*$/\\1/" |
sort -nr | head -2 | tail -1`
# Find the date of the last diff
lastdiff=`cd $dir; ls $dptn $dptn.gz 2>/dev/null |
sed -e "s/^.*\\(${yrptn}\\)[.a-z]*$/\\1/" |
sort -nr | head -1`
echo Making diff between $secondlastsnap and $lastsnap
# The name of the diff file
diff="${module}-${secondlastsnap}-${lastsnap}.diff"
if [ -f $dir/$diff ]; then
echo $dir/$diff already exists! Exiting.
exit -1
fi
echo Making $diff
# Untar the old snapshot
(cd /tmp ; tar -zvxf $dir/${module}-${secondlastsnap}.tar.gz)
# Untar the new snapshot
(cd /tmp ; tar -zvxf $dir/${module}-${lastsnap}.tar.gz)
# Make the diff
echo Diffing...
rm -f /tmp/$diff
(cd /tmp; diff -u -r ${module}-${secondlastsnap} ${module}-${lastsnap} > $diff)
# Remove the snapshot dirs
rm -rf /tmp/${module}-${secondlastsnap} /tmp/${module}-${lastsnap}
if [ -s /tmp/$diff ]; then
# Mail a message saying the new diff is available. (Commented out for now)
# mail -s $diff < $diff $diff_recipients
gzip -9 /tmp/$diff && mv -f /tmp/$diff.gz $dir
else
rm -f /tmp/$diff
fi

View file

@ -1,26 +0,0 @@
#!/bin/sh -e
# The directory in which to find the last snapshot
dir=/home/mccallum/gnu/releases
# The name of this module
module=gstep-base
date=`date +%y%m%d`
snap=${module}-${date}
cvs -Q rtag -F snapshot-$date $module
rm -rf $snap
## Checkout the $module into a directory named $snap
#cvs checkout -d $snap -r snapshot-$date $module
#tar -f - -co $snap | gzip -9v -c > $snap.tar.gz
make snapshot
#find $snap \( -name CVS -prune \) -o \( -type f -print \) |
#xargs md5sum | gzip -9v -c > $snap.md5sum.gz
rm -rf $snap &
mv -f $snap.tar.gz $dir

View file

@ -1,40 +0,0 @@
#!/bin/sh
# Copy a dist file to the ftp server
# if shell variable OLD is set to a version string, also copy a diff file.
SOURCEDIR=$HOME/gnu/releases
DESTHOST=alpha.gnu.ai.mit.edu
DESTDIR='~ftp/gnu/gnustep'
# Load version variables
. Version
DISTFILE=gstep-base-${VERSION}.tar.gz
echo Uploading $DISTFILE to ${DESTHOST}:${DESTDIR}
cat ${SOURCEDIR}/${DISTFILE} \
| rsh $DESTHOST \
"(cd $DESTDIR; \
cat >| ${DISTFILE})"
if [ $OLD ] ; then
# Also upload the diff file
DIFFFILE=gstep-base-${OLD}-${VERSION}.diff.gz
if [ ! -e ${SOURCEDIR}/${DIFFFILE} ] ; then
echo File ${SOURCEDIR}/${DIFFFILE} not found.
exit -1
fi
echo Uploading ${DIFFFILE} to ${DESTHOST}:${DESTDIR}
cat ${SOURCEDIR}/${DIFFFILE} \
| rsh $DESTHOST \
"(cd $DESTDIR; \
cat >| ${DIFFFILE})"
fi