Improved NSHosting support

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@13062 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-Macdonald 2002-03-09 19:35:59 +00:00
parent 368fa049c1
commit 3ab6ab3e9b
3 changed files with 63 additions and 9 deletions

View file

@ -1,3 +1,8 @@
2002-03-09 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSPasteboard.m: Use NSHost to look for alternative servers.
* Tools/gpbs.m: Use -NSHost to specify alternative server names.
Sat Mar 9 12:22:05 2002 Adam Fedor <fedor@yogi.doc.com>
* Source/GSSimpleLayoutManager.m:

View file

@ -181,9 +181,15 @@ static NSMapTable *mimeMap = NULL;
}
else
{
NSLog(@"Unable to contact pasteboard server on %@ - "
@"please ensure that gpbs is running.", host);
return nil;
the_server = (id<GSPasteboardSvr>)[NSConnection
rootProxyForConnectionWithRegisteredName:
[PBS_NAME stringByAppendingFormat: @"-%@", host] host: @"*"];
if (the_server == nil)
{
NSLog(@"Unable to contact pasteboard server for %@ - "
@"please ensure that gpbs is running.", host);
}
RETAIN(the_server);
}
}
return the_server;

View file

@ -1041,6 +1041,8 @@ int
main(int argc, char** argv, char **env)
{
NSAutoreleasePool *pool;
NSString *hostname;
#ifdef GS_PASS_ARGUMENTS
[NSProcessInfo initializeWithArguments:argv count:argc environment:env];
@ -1061,12 +1063,6 @@ main(int argc, char** argv, char **env)
/* Register a connection that provides the server object to the network */
conn = [NSConnection defaultConnection];
[conn setRootObject: server];
if ([conn registerName: PBSNAME] == NO)
{
NSLog(@"Unable to register with name server.\n");
exit(1);
}
[conn setDelegate: server];
[[NSNotificationCenter defaultCenter]
addObserver: server
@ -1074,6 +1070,53 @@ main(int argc, char** argv, char **env)
name: NSConnectionDidDieNotification
object: conn];
hostname = [[NSUserDefaults standardUserDefaults] stringForKey: @"NSHost"];
if ([hostname length] == 0)
{
if ([conn registerName: PBSNAME] == NO)
{
NSLog(@"Unable to register with name server.\n");
exit(1);
}
}
else
{
NSHost *host = [NSHost hostWithName: hostname];
NSPort *port = [conn receivePort];
NSPortNameServer *ns = [NSPortNameServer systemDefaultPortNameServer];
NSArray *a;
unsigned c;
if (host == nil)
{
NSLog(@"gdnc - unknown NSHost argument ... %@ - quiting.", hostname);
DESTROY(self);
return self;
}
a = [host names];
c = [a count];
while (c-- > 0)
{
NSString *name = [a objectAtIndex: c];
name = [PBSNAME stringByAppendingFormat: @"-%@", name];
if ([ns registerPort: port forName: name] == NO)
{
}
}
a = [host addresses];
c = [a count];
while (c-- > 0)
{
NSString *name = [a objectAtIndex: c];
name = [PBSNAME stringByAppendingFormat: @"-%@", name];
if ([ns registerPort: port forName: name] == NO)
{
}
}
}
if (verbose)
{
NSLog(@"GNU pasteboard server startup.\n");