[BACK]Return to MyEnvironment.m CVS log [TXT][DIR] Up to [local] / OpenXM / src / cfep

File: [local] / OpenXM / src / cfep / MyEnvironment.m (download)

Revision 1.7, Thu Oct 18 06:29:42 2018 UTC (5 years, 6 months ago) by takayama
Branch: MAIN
CVS Tags: HEAD
Changes since 1.6: +1 -1 lines

/opt/local/bin is added to the search path.

//
//  MyEnvironment.m
//  cfep
//
//  Created by Nobuki Takayama on 06/01/22.
//  Copyright 2006 OpenXM.org. All rights reserved.
//

#import "MyEnvironment.h"


@implementation MyEnvironment

// -(MyEnvironment *) initFor:with: ;    // init with a filename to load.  MyEnvironment may be written in the file.

// init sets up  protocol resources and environment for the task.
-(MyEnvironment *) init {
  return [self initFor: OX_TEXMACS];
}
-(MyEnvironment *) initFor: (enum peer_type) myPeerType {
  int i;
  NSString *s;
  NSSocketPort *s6000;
#define SIZE_e  5
  NSString *e[]       ={@"ASIRRC", @"OX_XTERM", @"LC_CTYPE",@"LC_ALL", @"LANG"};
  NSString *eDefault[]={nil      ,  nil,          nil,         nil,      nil    };     
  if (self = [super init]) {
    peer = myPeerType;
		
	isXRunning = [MyEnvironment checkX];
	
    //long initialization to the default value.  Personal initialization will be read in the different method.
    //(1)local string ( or default value)-->(2)preferences by .cfep/cfep.init  
    // --> private in the file 
    OpenXM_HOME=[[[NSBundle mainBundle]  bundlePath] stringByAppendingString: @"/OpenXM"];
    [OpenXM_HOME retain];


    s = NSLocalizedString(@"PEER_END_EVALUATE_MARK",nil); 
    if ([s compare: @"PEER_END_EVALUATE_MARK"] == NSOrderedSame) { 
      // default value
	  if (myPeerType == OX_TEXMACS) 
		peerEndEvaluateMark = [NSData dataWithBytes: (void *)"\005" length: 1];
	  else peerEndEvaluateMark = [NSData dataWithBytes: (void *)"\n" length: 1];
    }else{ 
      NSLog(@"PEER_END_EVALUATION_MARK. Not yet implemented.");
    }  
    [peerEndEvaluateMark retain];

    s = NSLocalizedString(@"PEER_STARTUP_STRING",nil); 
    if ([s compare: @"PEER_STARTUP_STRING"] == NSOrderedSame) { 
      // default value
	  if (myPeerType == OX_TEXMACS) 
        peerStartupString = [OpenXM_HOME stringByAppendingString: @"/bin/ox_texmacs --view cfep --engineLogToStdout -asirInitFile cfep-init.rr\n"];
	  else peerStartupString = @"\n";	
    }else{ 
	  if (myPeerType == OX_TEXMACS) 
		peerStartupString = [OpenXM_HOME stringByAppendingString: [NSString stringWithString: s]];
	  else peerStartupString = @"\n";	
    }  
    [peerStartupString retain]; 

    s = NSLocalizedString(@"PEER_INITIALIZATION_STRING",nil); 
    if ([s compare: @"PEER_INITIALIZATION_STRING"] == NSOrderedSame) { 
      // default value
      peerInitializationString = @"";
    }else{ 
      peerInitializationString = [NSString stringWithString: s];
    }  
    [peerInitializationString retain];

    s = NSLocalizedString(@"PEER_HELP_DIR",nil); 
    if ([s compare: @"PEER_HELP_DIR"] == NSOrderedSame) { 
      // default value
      peerHelpDir = [OpenXM_HOME stringByAppendingString:
						@"/doc/cfep/intro-ja.html"];
    }else{ 
      peerHelpDir = [NSString stringWithString: s];
    }  
    [peerHelpDir retain];

    s = NSLocalizedString(@"PEER_OPTION_STRING",nil); 
    if ([s compare: @"PEER_OPTION_STRING"] == NSOrderedSame) { 
      // default value
      if (myPeerType == OX_TEXMACS) peerOptionString = @"";  // @" --noWindow ";
	  else peerOptionString =@"";
    }else{ 
      peerOptionString = [NSString stringWithString: s];
    }  
    [peerOptionString retain];

    myUnixEnvironment = [NSMutableDictionary dictionaryWithCapacity: 32];
    [myUnixEnvironment retain];
    [myUnixEnvironment setObject: OpenXM_HOME forKey: @"OpenXM_HOME"];
    for (i=0; i< SIZE_e; i++) {
      s = NSLocalizedString(e[i],nil); 
      if ([s compare: e[i]] == NSOrderedSame) { 
		if (eDefault[i] != nil) {
			[myUnixEnvironment setObject: eDefault[i] forKey: e[i]];
		}
      }else{ 
		[myUnixEnvironment setObject: [NSString stringWithString: s]
			   forKey: e[i]];
	  }
	}

    s = NSLocalizedString(@"DISPLAY",nil); 
    if ([s compare: @"DISPLAY"] == NSOrderedSame) { 
	  if (isXRunning) [myUnixEnvironment setObject: @":0.0" forKey: @"DISPLAY"];
    }else{ 
        [myUnixEnvironment setObject: s forKey: @"DISPLAY"];
    }  

    s = NSLocalizedString(@"XAUTHORITY",nil); 
    if ([s compare: @"XAUTHORITY"] == NSOrderedSame) { 
	  if (isXRunning) 
	   [myUnixEnvironment setObject: [NSHomeDirectory() stringByAppendingString: @"/.Xauthority"]
			forKey: @"XAUTHORITY"];
    }else{ 
        [myUnixEnvironment setObject: s forKey: @"XAUTHORITY"];
    }  

    s = NSLocalizedString(@"DYLD_LIBRARY_PATH",nil); 
    if ([s compare: @"DYLD_LIBRARY_PATH"] == NSOrderedSame) { 
      [myUnixEnvironment setObject: [OpenXM_HOME stringByAppendingString: @"/lib"]
		forKey: @"DYLD_LIBRARY_PATH"];
    }else{ 
      [myUnixEnvironment setObject: s forKey: @"DYLD_LIBRARY_PATH"];
    }  

    s = NSHomeDirectory();
    [myUnixEnvironment setObject: s forKey: @"HOME"];

    s = NSLocalizedString(@"PATH",nil); 
    if ([s compare: @"PATH"] == NSOrderedSame) { 
      char *path;
	  NSString *defaultPath;
        defaultPath=@"/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/TeX/texbin:/opt/local/bin:/opt/local/sbin:/opt/bin:/opt/sbin:/usr/local/bin";
	  path = getenv("PATH");
	  if (!path) {
	    s = [NSString stringWithCString: path length: strlen(path)];
		s = [s stringByAppendingString: @":"];
		s = [s stringByAppendingString: defaultPath];
		[myUnixEnvironment setObject: s forKey: @"PATH"];
       } else [myUnixEnvironment setObject: defaultPath forKey: @"PATH"];
    } else {
	   [myUnixEnvironment setObject: s forKey: @"PATH"];
    }

	
    myDefaultTypingAttributes=
      [NSDictionary dictionaryWithObject: [NSFont fontWithName: @"Courier" size: 12] forKey: @"NSFont"];
    [myDefaultTypingAttributes retain];
    //  [textViewIn setTypingAttributes: adic];


  }
  [self retain];
  return self;
}
-(void) dealloc {
  NSLog(@"dealloc of MyEnvironment.\n");
  [OpenXM_HOME autorelease];  // or release ?
  [peerEndEvaluateMark autorelease];
  [peerStartupString autorelease];
  [peerInitializationString autorelease];
  [peerHelpDir autorelease];
  [peerOptionString autorelease];
  [myUnixEnvironment autorelease];
  [super dealloc];
}
+(int) checkX {
    /* still use an deprecated functions */
  NSEnumerator *apps = [[[NSWorkspace sharedWorkspace] launchedApplications] objectEnumerator ];
  NSDictionary *dicApp;
  while (dicApp = [apps nextObject]) {
    if ([@"XQuartz" compare: [dicApp objectForKey: @"NSApplicationName"]] == NSOrderedSame) {
	  NSLog(@"X11 is running.\n");
	  return 1;
	}  
  }	
  NSLog(@"X11 is NOT running.\n");
  return 0;
}
-(void) showForDebug {
  NSLog(@"OpenXM_HOME=%@\n",OpenXM_HOME);
  NSLog(@"peer=%d\n",peer);
  NSLog(@"peerEndEvaluateMark=%@\n",peerEndEvaluateMark);
  NSLog(@"peerStartupString=%@\n",peerStartupString);
  NSLog(@"peerInitializationString=%@\n",peerInitializationString);
  NSLog(@"peerHelpDir=%@\n",peerHelpDir);
  NSLog(@"peerOptionString=%@\n",peerOptionString);
  NSLog(@"myUnixEnvironment=%@\n",myUnixEnvironment);
}
-(NSMutableDictionary *) getMyUnixEnvironment {
  return myUnixEnvironment;
}
-(enum peer_type) getPeer {
  return peer;
}
-(NSData *)getPeerEndEvaluateMark {
  return peerEndEvaluateMark;
}
-(NSString *)getOpenXM_HOME {
  return OpenXM_HOME;
}
-(NSString *)getPeerStartupString {
  return peerStartupString;
}
-(NSString *)getPeerInitializationString {
  return peerInitializationString;
}
-(NSString *)getPeerOptionString {
  return peerOptionString; 
}
-(NSDictionary *)getMyDefaultTypingAttributes {
  return myDefaultTypingAttributes;
}
+(int) isX11Installed {
  NSFileManager *manager = [NSFileManager defaultManager];
  if ([manager fileExistsAtPath: @"/opt/X11/bin/X"]) return 1;
  else return 0;
}
+(int) isGccInstalled {
  NSFileManager *manager = [NSFileManager defaultManager];
  if ([manager fileExistsAtPath: @"/usr/bin/gcc"]) return 1;
  else return 0;
}



@end