HDTenEightyP/NetNews huggingface dataset:
From: rpomeroy@aunext3.cam.amd.com (Ron Pomeroy x(Coop))
Newsgroups: comp.sys.next.programmer
Subject: Re: Project Manager Questions
Date: 1 Sep 92 22:29:13 GMT
Reply-To: rpomeroy@aunext3.cam.amd.com
Distribution: usa
Organization: Advanced Micro Devices, Inc.; Austin, Texas

In article <1992Sep01.184348.147083@lexmark.com> songer@lexmark.com  
(Christopher Songer) writes:
>>Hi,
>>
>>     Work has been hectic so I've not had the time to follow a
>>couple of threads I'm interested in as attentively as I would
>>have liked. What I'm interested in is what functionality project 
>>manager supplies and (most importantly) if it supports revision 
>>control. (While I can't imagine something called ProjectManager 
>>not supporting revision control; what I can and cannot imagine is
>>not too important here.)
>>
>>     Currently, I'm using CVS to do revision control on my
>>Next project directories. This works OK but like any command line
>>procedure, could certainly be easier with a nice front end.
>>
>>     If this is a redundant topic please drop me some email rather
>>than cluttering the group with useless posts.
>>
>>Thanks! 
>>-Chris
>>songer@lexmark.com
>>Development Engineer
>>Lexmark International Inc.

1) Me thinks its called ProjectBuilder not ProjectManager (correct me if I'm  
wrong)
2) Everything I've heard in the past has indicated it doesn't support revision  
control. (again, 3.0 types correct me if I'm wrong)

--
Ronald Pomeroy
Advanced Micro Devices
CAM Applications Group
rpomeroy@aunext3.amd.com
From: simsong (Simson L. Garfinkel)
Newsgroups: comp.sys.next.programmer
Subject: Re: "bind"ing sockets, -ObjC, and memset....A puzzle
Date: 1 Sep 92 12:16:18 GMT
Reply-To: simsong@next.cambridge.ma.us
Organization: Simson Garfinkel and Associates, Inc.

In article <1992Aug31.192253.16733@nevada.edu> oliverm@nevada.edu (Moises  
Oliveira ) writes:
> The sample program and output that Simson Garfinkel
> posted works by mere coincidence. 

Cool.  
-- 

................................................................simson
Newsgroups: comp.sys.next.programmer
From: mmelling@Trirex.com(Michael Mellinger)
Subject: Re: Workspace HideOnAutoLaunch . . 
Organization: Trirex Systems Inc.
Date: Tue, 1 Sep 1992 22:20:14 GMT

In article <1992Aug28.185411.27784@leland.Stanford.EDU>  
qureshi@unixhub.slac.stanford.edu ("For deposit only") writes:
> In article <1992Aug27.224549.17805@Trirex.COM>  
mmelling@Trirex.com(Michael  
> Mellinger) writes:
> > 
> > This problem ranks right up there with not having a NeXTstep  
equivalent to  
> > X11's DISPLAY environment variable.
> > 
> > -Mike
> 
> The NeXTStep equivalent is "NXHost".  So if I was on machine "foo" and  
wanted  
> to display on machine "bar", I would say, 
> Edit -NXHost bar
> 
It's not the same thing.  It's an incredible pain in the butt to type it  
everytime.  dwrite'ing it is a permanent alternative, which I don't like  
either.  One should be able to set the DISPLAY for a login session.

-Mike

Newsgroups: comp.sys.next.programmer
From: qureshi@unixhub.slac.stanford.edu ("For deposit only")
Subject: Re: Command-line apps now harder (Can you pass arguments?)
Reply-To: cooldude@elaine49.stanford.edu
Organization: DSO, Stanford University
Date: Fri, 4 Sep 92 19:42:48 GMT

In article <1992Sep2.141110.19865@pencom.com> alex@laos (Alex D. Nghiem)  
writes:
> 
> You can always use open, such as open Example.app to launch the application.
> 
> 
> Best regards,
> 
> 
> Alex Duong Nghiem          Phone: (512) 343-1111

How can you also pass arguments to the application being opened.  e.g, open  
bar.app and have it open a file called "foo".  

I tried "open bar.app foo" but it doesn't work.

Thanx,

imran
From: gburd@next.com) (Greg Burd)
Newsgroups: comp.sys.next.programmer
Subject: NEW Example Code on Sonata
Keywords: Example Code NeXT OOC Workspace Inspector Preferences Dynamic Loadable
Date: 28 Aug 92 17:02:56 GMT

Hello everyone,

	I have been placing example 3.0 code on Sonata in the past few  
weeks, and due to time constraints, I haven't had the opportunity to let  
everyone know what I have done.  All of these examples are in the  
directory /pub/next/submissions.  They may be moved to either  
/pub/next/submissions/3.0-release/source (or to  
/pub/next/docs/MiniExamples, as they may become MiniExamples).

PersonalPreferences.tar.Z
-------------------------
	This is a custom loadable Preference for Preferences.app.  It takes  
advantage of the Preferences API now available to developers in 3.0.  If  
you want to make a Preference, here is where to start.

NeXTWORLD_DragLab.tar.Z
-----------------------
	This is example code that will be discussed in the Winter edition  
of NeXTWORLD mag. in a joint article by myself and Simson (with some input  
from Andrew Stone).  It implements a view that uses the new 3.0 drag and  
drop categories and methods.  This example could easily be modified to  
drag anything anywhere; including files, EPS, TIFF, Custom Data, etc.

YourWS_Inspector.tar.Z
----------------------
	This is an example of how to create a custom Workspace Contents  
inspector.  If, for example, you were to write a program similar to Draw,  
and you would like your users to be able to view your documents without  
running the program.  You could create a custom contents inspector that  
had the ability to display your document.  The inspector you create is  
register for a file extension, and when a user has a file with that  
extension selected in Workspace, and the contents inspector active, your  
custom inspector will be activated.  This is really really cool.  :-)


	So I hope that this code will make your jobs easier, and I hope to  
see examples of vendors using this code in the future.  Comments are  
always welcome.  Your examples are also welcome.

Cheers,

-greg

---------
Greg Burd
NeXT Developer Support (temp)

#import <std/disclaimer>
#import <std/joke>
#import <std/ :-) >
From: wjs@blorf.cpac.washington.edu (William Shipley)
Newsgroups: comp.sys.next.programmer
Subject: Re: DBKit API questions
Date: 4 Sep 92 00:58:23 GMT
Article-I.D.: u.1992Sep4.005823.8849
Organization: University of Washington

Michael Brill wrote:
> Help DBKit Gods!
> 
> I have a field in a Sybase database that is a long int representing date&time
> (result of time() function).
>  [and he wants to]
>   (A) Display & edit both the date and time in separate columns, or else 
>       if I can't split 1 Sybase field into 2 DBKit attributes, then I'd 
>       settle for:
>   (B) Display & edit the date portion of the field

The Oracle has pondered your question carefully, and speaks thusly:

What you'd really like to do here is use the custom object interface in DBKit.

You can't, however, because of a SybaseAdaptor bug.

Another way to do this would be to create a custom Association subclass, which  
converts your int to a date or time string on the fly.  You'd then hook two of  
these custom Associations to the integer date property, and you'd be rocking.

The trick is to hook up all of your associations in IB, and then replace the  
date ones with your custom versions at run time.

-William Shipley
The Omni Group
DBKit consulting

PS: You owe the oracle a "Ren and Stimpy LOVE DBKit" T-shirt.
Newsgroups: comp.sys.next.programmer
From: callsen@cs.uiuc.edu (Christian J. Callsen)
Subject: lex and cc++ woes..
Organization: Department of Computer Science, UIUC
Distribution: comp
Date: Mon, 31 Aug 1992 16:43:58 GMT


Hi Netters!

For the record: NeXTstation TURBO Mono, NeXTstep 2.2 Extended.

I am currently experiencing a problem with lex on the NeXT -- or
rather, the skeleton file '/usr/lib/lex/ncform'. Alas it will *not*
compile with the 'cc++' compiler -- _flsbuf and _filbuf (declared in
stdio.h) are declared something like:

extern int _filbuf();
extern int _flsbuf();

.. when they should really have been declared with 1 and 2 arguments,
respectively. Now as 'cc' also handles 'old' prototypes, it actually
flies through, but 'cc++' reports "too many arguments to function" and
prompty refuses to compile. So I guess this is really a bug in (the
old) cc++ or what?

Am I doing something wrong?

What's the easiest (and best?) fix for this `problem'?
 Fix stdio.h myself?
 Patch the cc++ binary to handle old-style decls?
 Say my prayers and hope the problem will go away by itself?

Any opinions?

Chris J. Callsen
--
   __               | Christian J. Callsen  [ callsen@biobio.cs.uiuc.edu ]
  /  ) /            | Currently visiting: U of Illinois, Urbana-Champaign,
 /    /_  __  o _   | Dept. of Comp. Sci., 1304 W. Springfield Avenue,
(__/ / /_/ (_<_/_)_ | Urbana, IL 61801, USA     { Sm:^>le and be Happy Today! }
Newsgroups: comp.sys.next.programmer
From: howard@monitor.com (Howard Brenner)
Subject: Reading in .rtfd files
Reply-To: howard@monitor.com (Howard Brenner)
Organization: Monitor Company / IE
Date: Wed, 2 Sep 1992 16:38:37 GMT

Does anyone know how to read in an .rtfd file (files produced by edit when  
graphics are involved).  I tried loading in the TXT.rtf file in the .rtfd  
directory and it loaded in the text but not the graphics.  Any help would  
be much appreciated.

thanks!
Newsgroups: comp.sys.next.programmer
From: timm@void.ncsa.uiuc.edu (Tim McClarren)
Subject: Re: SoftPC and NeXTSTEP 3.0
Organization: University of Illinois at Urbana
Date: Sun, 30 Aug 1992 23:32:51 GMT

sam_s@NeXT.com (Sam Streeper) writes:

>Scott Hess writes:
>> 	john@wpa.com (John Bartley) writes:
>> >There have been previous reports that 3.0 would have some new
>> >capabilities that would allow certain apps (such as SoftPC) to
>> >handle direct screen writes (or whatever the appropriate technical
>> >term is :-) much faster than is currently possible under 2.1.
>> 
>> I've heard this at various times, too.  What's the scoop?  Is this
>> possible?  Can _I_ do it, or do just large companies able to
>> wine/dine get access to this?  In other words - is this documented,
>> or slimey?

>I think the scoop is that NXBitmapImageRep now supports the same formats
>as window devices;  You can't write directly to the screen, but you can 
>supply bitmaps that can be blasted into the Window Server's window devices  
>without unpacking.

>This can make things like emulators and alternate Window Servers much
>faster.

>-sam

>ps  I'm sure it's documented and you won't need to shmooz...
>ps/2 I hope shmooz isn't really a dirty word!

You can already do this under 2.0.  Check out ScreenMunger.  With
the proper overrides of relevant messages and what-not, you should
be able to draw directly into an on-screen window.  You'll have to roll
your own utilities to blit images though.
Tim

-- 
Tim McClarren     | "...a bajillion brilliant Jobsian lithium licks."
timm@ncsa.uiuc.edu|
(217)244-0015     |
From: simsong (Simson L. Garfinkel)
Newsgroups: comp.sys.next.programmer
Subject: status on book
Date: 26 Aug 92 13:30:00 GMT
Reply-To: simsong@next.cambridge.ma.us
Organization: Simson Garfinkel and Associates, Inc.

After speaking with my publisher last week, I'm informed that:

	NeXTSTEP Programming
	Step 1: Object-oriented applications

		by

	Simson L. Garfinkel
		and
	Michael K. Mahoney

Will be on the bookshelves in mid-November.

-- 

................................................................simson
Newsgroups: comp.sys.next.programmer
From: moose@svcdudes.com
Subject: Re: malloc_error
Reply-To: moose@svcdudes.com
Organization: Software Ventures, Inc.
Distribution: comp
Date: Mon, 31 Aug 92 17:25:21 GMT

In article <SHIN.92Aug29190422@sgtp.sgtp.apple.juice.or.jp>  
shin@sgtp.apple.juice.or.jp (Sugou Shinichirou) writes:
> Hello.
> 
> I don't know the way how to use 'malloc_error' function. Please refer to
> the UNIX manual 'malloc_error' about the detailed information.
> 
> Suppose I want to execute myMallocErr() instead of the default routine
> whenever memory allocation error happens.
> 
> void myMallocErr(int code)
> {
>         printf("error");
>         abort();
> }
> 
> (2) Link program with  '-lMallocDebug'. For example: If you are using IB,
>     define the following line within Makefile.preamble, and 'make debug'
>     will generate the malloc-check-routine active code.
> 
> 	OTHER_DEBUG_LIBS = -lMallocDebug
> 

I believe that linking MallocDebug will override your call you malloc_error.   
Try this without linking in MallocDebug
--
Michael Rutman			|	moose@svcdudes.com
Cubist				|	makes me a NeXT programmer
Software Ventures		|	maker of MicroPhone Pro
#include <std.disclaimer>	|	really offesive political statement
Newsgroups: comp.sys.next.programmer
From: BrianW@SoundS.WA.com (Brian Willoughby)
Subject: Q: Using select() to detect another process appending to a file
Reply-To: BrianW@SoundS.WA.com
Organization: SoundSoftware, Bellevue, WA, USA
Date: Mon, 31 Aug 1992 08:24:53 GMT


I am trying to use the select() function to detect changes appended to a  
standard disk file (which isn't stdin or any other pipe for my program).  I  
have everything working, except that select() seems to keep returning 1 to  
indicate that the file is ready for reading, even though I have read everything  
in the file up to EOF.  I am doing everything in a separate thread, hoping that  
select() will block until another task appends to the file, but apparently  
select() always thinks that the file is ready for reading, even if the file  
position for the file descriptor in question is at EOF.

Can anyone tell me what is wrong? (perhaps select() only works on pipes which  
are emptied when read and doesn't work on real files if I only want to know  
about data appended beyond the current file position?)

Here is a rough sketch of my code:
@interface Controller:Object
{
	id hashTable;
	int fd;
	FILE *fp;
	fd_set readfds;
}
@end
@implementation Controller
-appDidInit
{
	hashTable = [[HashTable alloc] initKeyDesc:"i" valueDesc:"i"];
	fp = fopen(file, "r");
	if (fp)
	{
		fd = fileno(fp);
		[hashTable insertKey:FWTAG_FILE value:fd];
	}
	[self startWatching];
}
-startWatching
{
	int fdTag, fd, nfound;
	NXHashState state = [hashTable initState];

	while ([hashTable nextState:&state key:&fdTag value:&fd])
		FD_SET(fd, &readfds);
	nfound = select(FD_SETSIZE, &readfds, NULL, NULL, NULL);
	state = [hashTable initState];
	while ([hashTable nextState:&state key:&fdTag value:&fd])
		if (FD_ISSET(fd, &readfds))
			[self notifyFileReady:fdTag];
}
-notifyFileReady:(int)fdTag
{
	switch (fdTag)
	{
		case ERROR:
			return;
		case FWTAG_FILE:
			while (cc = read(fd, buffer, BUF_SIZE - 1))
			{
				buffer[cc] = 0;
				[self handle_data:buffer];
			}
			break;
	}
	[self startWatching];
}
@end

This does work, since the file descriptor's position is maintained and I never  
process the same data twice.  But fprintf()s throughout the code reveal that  
select() is never blocking, but seemingly alway indicates that the file is  
ready for reading, even though the read()s that I do return EOF immediately.

Comments or clarifications welcome.
Thanks,
-- 
Brian Willoughby	Software Design Engineer, BSEE
BrianW@SoundS.WA.com	SoundSoftware
NeXTmail welcome	- NO EMAIL SOLICITATION without prior permission
Newsgroups: comp.sys.next.programmer
From: mdixon@parc.xerox.com (Mike Dixon)
Subject: Re: Is @selector(foo:) constant?
Keywords: @selector, Objective-C, constant
Organization: Xerox PARC
Date: 25 Aug 92 21:35:20 GMT

** 3.0 Incompatibility Alert! **

a few days ago i wrote:

    the trick is that although @selector(foo:) isn't constant,
    &@selector(foo:) is.  initialize your array with the addresses of
    the selectors, and remember to dereference them before you use
    them.

while this was true in 2.0, a new version of the TextORama MiniExample
that appeared today in the archives suggests that it's no longer true
in 3.0 (i'm not a beta tester, so i can't confirm it).  it appears
that even the addresses of @selector expressions are no longer
constant; to make this kind of code work in 3.0 you'll have to build
the array at runtime (with calls to sel_getUid -- see the new
TextORama for details).
--

                                             .mike.
Newsgroups: comp.sys.next.programmer
From: wtmahavi@ponder.csci.unt.edu (William Ted  Mahavier)
Subject: unixpc -> next transfer
Followup-To: ted@sol.acs.unt.edu
Keywords:  unixpc, next
Organization: UNT Mathematics Dept.
Date: Wed, 2 Sep 1992 03:48:25 GMT

Has anyone connected a unixpc to a next?  I have a unixpc7300 and
a nextstation 8/250 which I wish to connect in order to transfer
text only files from the unixpc to the next.  I am capaple of making
my own cables if I can hook them between the rs232 ports.

Mail responses to ted@sol.acs.unt.edu.
From: osiris@ucrengr.ucr.edu (mark radleigh)
Newsgroups: comp.sys.next.programmer
Subject: Examples using Pull-down lists
Keywords: pull-down, lists
Date: 26 Aug 92 08:25:31 GMT
Distribution: usa


	Do any of you nice people out there have any examples utilizing a 
PullDown or PopUp list?  Any info or insight would be greatly appreciated.
Thanks in advance.

  +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
 /                                                                         \
/  Mark J. Radleigh, Computer Science             | ..!ucsd!ucrmath!osiris  \
\  C.S.L.D. System Administrator, UC Riverside    | osiris@ucrengr.ucr.edu  /
 \                                                                         /
  +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
From: simsong (Simson L. Garfinkel)
Newsgroups: comp.sys.next.programmer
Subject: Re: "bind"ing sockets, -ObjC, and memset....A puzzle
Date: 28 Aug 92 19:02:30 GMT
Reply-To: simsong@next.cambridge.ma.us
Organization: Simson Garfinkel and Associates, Inc.

Apparently, when you include the -ObjC flag, all stack variables are  
initialized to 0.

Here's a simple test program:

int     foo(n)
{
        int     a,b;
        char    f[2342];
        int     c;

        printf("a=%d  b=%d  c=%d\n",a,b,c);
        a = n;
        c = n;
}

main()
{
        int a,b,c;

        foo(0);
        foo(2);
}



And here is the output:

altos> cc x.c
altos> a.out
a=84032826  b=212  c=0
a=212  b=57628  c=0
altos> cc -ObjC x.c
altos> a.out
a=0  b=0  c=0
a=0  b=0  c=0
altos> %


(ps: Other variables in the sin structure are used; it's always a good idea to  
initialize things to 0.)
-- 

................................................................simson
From: mrc@Tomobiki-Cho.CAC.Washington.EDU (Mark Crispin)
Newsgroups: comp.sys.next.programmer
Subject: Re: How to PANIC a NeXT (mach kernel bug )
Date: 2 Sep 92 23:40:05 GMT
Article-I.D.: Tomobiki.MS-C.715477205.1103527590.mrc
Organization: University of Washington
Content-Type: TEXT/PLAIN; charset=US-ASCII
To: Christopher D Audley <audley@jhunix.hcf.jhu.edu>
Mime-Version: 1.0

I believe that it is perfectly reasonable to claim that it is a bug in
the kernel if the kernel crashes just because some user consumed all
of a particular resource.

Bug #1: the user should not have been allowed to consume the entire
resource.  There should be a high-water mark for individual user use.
If the resource is something that the kernel also needs, there should
also be a high-water mark for total user use beyond which only the
kernel or privileged users can tread.  Disk space has the latter type
of high-water mark.

Bug #2: the kernel should not have crashed when the resource ran out.
It should have rejected the fatal attempt to get the resource.  If it
felt really nasty, it could have killed the process (which would have
freed things up quite nicely!).

Bug #3: it is a bug in the minds of `propeller heads' (to quote Steve
Jobs) that it is EVER anything other than a bug for a kernel to crash.
It may be a bug in the hardware.  It may be a bug in the software.  It
can be malicious physical damage (induced hardware bug).  But no
kernel should crash because of the actions of an unprivileged user
program.

Back in prehistoric days (before UNIX), we actually tried to make
operating systems that would not crash even with the most abusive user
programs running.  We succeeded, too.  It is embarassingly easy for an
unprivileged user to crash even so-called `secure' UNIX systems,
including in ways that cause filesystem damage.  This is an Achilles'
Heel, and one that should not be tolerated in a `UNIX for the masses'
system as NeXT claims to be.
Newsgroups: comp.sys.next.programmer
From: mcafee@Xenon.Stanford.EDU (Christopher C. McAfee)
Subject: Re: IB Parse Fails
Keywords: parse, IB
Organization: Computer Science Department, Stanford University.
Distribution: na
Date: Mon, 24 Aug 1992 04:31:14 GMT

In article <BtGI65.FKL@watserv1.uwaterloo.ca> optadm7@watserv1.uwaterloo.ca (J.Cassidy - Optometry) writes:
>
>I'm having a problem with IB, and am hoping if someone could
>assist me.  When I try to parse a .h file that I have origionally
>created with the 'unparse' command of the class window, i get
>the error message: 'No interface for class BottomView'.  BottomView
>is the subclass of View that I have created.  Following are some
>of the symptoms/things I have tried:
>
>I can move to another account and test things out by subclassing
>View, unparsing, then parsing.  This works fine.  Even when I
>copy this project back into my account and try parsing.
>
>When I try creating a new project, subclassing, unparsing, parsing 
>in my account, same error reported as above.
>
>When I copy one of my bad IB projects to another account and parsing
>there, I get the error message.
>
>Could anyone lend me assistance?  
>

I also discovered the same problem at work on Friday.  Very bizzare.
Very aggrevating!  Same account did the same thing on different machines
with different IB's.  

Chris
Newsgroups: comp.sys.next.programmer
From: oliverm@nevada.edu (Moises Oliveira )
Subject: Re: "bind"ing sockets, -ObjC, and memset....A puzzle
Summary: Programming through guesswork
Organization: Organization? Ha, don't make me laugh
Date: Mon, 31 Aug 1992 19:22:53 GMT

In article <17tieoINNsr5@news.aero.org> strauss@Aero.org (Daryll Strauss) writes:
>In article <1992Aug28.190230.2670@next.cambridge.ma.us>, simsong (Simson L. Garfinkel) writes:
>|> Apparently, when you include the -ObjC flag, all stack variables are  
>|> initialized to 0.
>|> 
>
>It would be a really bad idea to rely on that "feature." You must clear
>the sockaddr structure to use it. The C spec says that stack variables
>have unknown values. I've need heard anything different in for ObjC. So
>relying on the compiler to initialize variables for you is a disaster
>waiting to happen.

It's especially a bad idea seeing as how it's plain out
untrue!  The ObjC flag to the linker DOES NOT clear stack
variables to 0.  When you pass ObjC to the linker, it pulls
in a bunch of support for ObjC.  Because of this, in an
itsy-bitsy tiny example program like the one posted, a
large portion of the stack will end up filled with 0
values.   


But this will only remain true for the first function
call.  To see what I mean, change the program a bit: 

int     foo(n)
{
        int     a,b;
        int     c;

        printf("a=%d  b=%d  c=%d\n",a,b,c);
        a = n;
        c = n;
}

main()
{
        int a,b,c;

	foo(17);
	foo(13);
	foo(11);
	foo(7);
	foo(5);
	foo(3);
	foo(2);
	foo(1);
}

The sample program and output that Simson Garfinkel
posted works by mere coincidence.
From: wjs@blorf.cpac.washington.edu (William Shipley)
Newsgroups: comp.sys.next.programmer
Subject: Command-line apps now harder (was Re: Workspace HideOnAutoLaunch)
Date: 2 Sep 92 09:55:21 GMT
Article-I.D.: u.1992Sep2.095521.5784
Organization: University of Washington

Michael Mellinger writes:
> It's not the same thing.  It's an incredible pain in the butt to type it  
> everytime.  dwrite'ing it is a permanent alternative, which I don't like  
> either.  One should be able to set the DISPLAY for a login session.

Life gets worse (in this area) under 3.0, since you can't run .app wrappers  
easily from the command line (you have to cd to the directory and run the  
binary to make sure you pick up the resources), and ALL freshly compiled  
programs will be .app wrappers.

Good-bye, single file executables.  I wonder if there's a special heaven for  
cool NeXTstep features that fell by the wayside?  If so, this one is up there  
with the Music Kit and Icon.app.

-W
Newsgroups: comp.sys.next.programmer