[BACK]Return to d.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / k097

Diff for /OpenXM/src/k097/d.c between version 1.8 and 1.9

version 1.8, 2002/02/24 10:27:21 version 1.9, 2003/07/13 08:18:27
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/k097/d.c,v 1.7 2001/01/08 05:26:48 takayama Exp $ */  /* $OpenXM: OpenXM/src/k097/d.c,v 1.8 2002/02/24 10:27:21 takayama Exp $ */
 /* simple.c,  1996, 1/1 --- 1/5 */  /* simple.c,  1996, 1/1 --- 1/5 */
 #include <stdio.h>  #include <stdio.h>
 #include <ctype.h>  #include <ctype.h>
 #include <setjmp.h>  #include <setjmp.h>
 #include <stdlib.h>  #include <stdlib.h>
   #include <sys/types.h>
   #include <sys/stat.h>
 #include "d.h"  #include "d.h"
 #include "simple.tab.h"  #include "simple.tab.h"
   
Line 1111  void showStringBuff(objectp op)
Line 1113  void showStringBuff(objectp op)
   fprintf(stderr,"\n");    fprintf(stderr,"\n");
 }  }
   
 char *getLOAD_K_PATH() {  
   char *p;  /* Aux-functions for getLOAD_K_PATH(); */
   char *p2;  static int getOStypei();
   p = getenv("LOAD_K_PATH");  static char *getOStypes();
   if (p == NULL) {  static char *addSlash();
     return("/usr/local/lib/kxx97/yacc/");  static char *getOpenXM_HOME();
   static char *get_k0_lib_path();
   static void msg_get_home(int c,char *s);
   static int getFileSize(char *s);
   
   static int Verbose_get_home = 0;
   
   #define nomemory(a) {fprintf(stderr,"(%d) no more memory.\n",a);exit(10);}
   
   static int getOStypei() {
     /*
        0  unix
        1  windows-cygwin
        2  windows-cygwin-on-X
        3  windows-native
     */
     int ostype;
     char *s,*s2,*s3;
   #if defined(__CYGWIN__)
     ostype = 1;
   #else
     ostype = 0;
   #endif
     if (ostype == 0) return ostype;
     /* Heuristic method */
     s = (char *)getenv("WINDOWID");
     if (s != NULL) {
       return 2;
     }
     s = (char *)getenv("OSTYPE");
     s2 = (char *)getenv("MACHTYPE");
     s3 = (char *)getenv("PWD");
     if ((s != NULL) || (s2 != NULL) || (s3 != NULL)) {
       return 1;
     }
     return 3;
   }
   
   static char *getOStypes() {
     int ostype;
     ostype = getOStypei();
   
     if (ostype == 1) {
       return("Windows-cygwin");
     }else if (ostype == 2) {
       return("Windows-cygwin-on-X");
     }else if (ostype == 3) {
       return("Windows-native");
   }else{    }else{
     if (strlen(p) == 0) return(p);      return("unix");
     }
   }
   
   static int getFileSize(char *s) {
      struct stat buf;
      int m;
      if (s == NULL) return -1;
      m = stat(s,&buf);
      if (m == -1) {
        return -1;
         /* fail */
      }else{
         /* success */
        return ((int) buf.st_size);
      }
   }
   
   static char *addSlash(char *p) {
     char *p2;
      if ((strlen(p) == 0) || (p == NULL)) return(p);
     if (p[strlen(p)-1] == '/') return(p);      if (p[strlen(p)-1] == '/') return(p);
     /* Add / */      /* Add / */
     p2 = (char *) malloc(sizeof(char)*(strlen(p)+3));      p2 = (char *) GC_malloc(sizeof(char)*(strlen(p)+3));
     if (p2 == NULL) { fprintf(stderr,"No more memory.\n"); exit(10); }      if (p2 == NULL) { fprintf(stderr,"No more memory.\n"); exit(10); }
     strcpy(p2,p); strcat(p2,"/");      strcpy(p2,p); strcat(p2,"/");
     return(p2);      return(p2);
   
   }
   
   static void msg_get_home(int t,char *s) {
     extern int Verbose_get_home;
     if (!Verbose_get_home) return;
     if (t == 1) {
       fprintf(stderr,"getOpenXM_HOME(): ");
     }else if (t == 2) {
       fprintf(stderr,"getServerEnv(): ");
     }else if (t == 3) {
       fprintf(stderr,"getOXenv(): ");
     }else if (t == 4) {
       fprintf(stderr,"for_cmd(): ");
     }else{
       fprintf(stderr,"getting path...: ");
   }    }
     if (s != NULL) {
       fprintf(stderr,"%s\n",s);
     }else{
       fprintf(stderr," --NULL-- \n");
     }
 }  }
   
   char *getOpenXM_HOME() {
     char *p;
     char *h;
     p = getOStypes();
     msg_get_home(1,p);
   
     p = (char *) getenv("OpenXM_HOME");
     if (getFileSize(p) != -1) return addSlash(p);
     msg_get_home(1,"OpenXM_HOME is not found.");
   
     p = (char *) getenv("OPENXM_HOME");
     if (getFileSize(p) != -1) return addSlash(p);
     msg_get_home(1,"OPENXM_HOME is not found.");
   
     if (getOStypei() == 3) { /* cygwin-native */
       p = (char *) getenv("OpenXM_HOME_WIN");
       if (getFileSize(p) != -1) return addSlash(p);
       msg_get_home(1,"OpenXM_HOME_WIN is not found.");
   
       p = (char *) getenv("OPENXMHOMEWIN");
       if (getFileSize(p) != -1) return addSlash(p);
       msg_get_home(1,"OPENXMHOMEWIN is not found.");
     }
   
     /* Try to find default directories */
     h = (char *)getenv("HOME");
     if (h != NULL) {
       p = (char *)GC_malloc(strlen(h)+100);
       if (p == NULL) {
         fprintf(stderr,"No more memory.\n"); exit(100);
       }
       strcat(h,"/OpenXM");
       p = h;
       if (getFileSize(p) != -1) return addSlash(p);
       msg_get_home(1,"OpenXM is not found under the home directory.");
     }
   
     if (getOStypei() != 3) {
       p = "/usr/local/OpenXM";
     }else{
       p = "/cygdrive/c/usr/local/OpenXM";
     }
     if (getFileSize(p) != -1) return addSlash(p);
     msg_get_home(1,"OpenXM is not found under /usr/local");
   
     if (getOStypei() != 0) {
       p = "/cygdrive/c/OpenXM";
       if (getFileSize(p) != -1) return addSlash(p);
       msg_get_home(1,"OpenXM is not found under c:\\");
   
       p = "/cygdrive/c/OpenXM-win";
       if (getFileSize(p) != -1) return addSlash(p);
       msg_get_home(1,"OpenXM-win is not found under c:\\");
   
       p = "/cygdrive/c/Program Files/OpenXM";
       if (getFileSize(p) != -1) return addSlash(p);
       msg_get_home(1,"OpenXM is not found under c:\\Program Files");
   
       p = "/cygdrive/c/Program Files/OpenXM-win";
       if (getFileSize(p) != -1) return addSlash(p);
       msg_get_home(1,"OpenXM-win is not found under c:\\Program Files");
   
     }
   
     msg_get_home(1,"Giving up!");
     return NULL;
   
   }
   
   static char *get_k0_lib_path() {
     char *oxhome;
     char *p;
   
   
     p = (char *)getenv("LOAD_K_PATH");
     if (p != NULL) {
       if (getFileSize(p) != -1) return addSlash(p);
       msg_get_home(1,"LOAD_K0_PATH is not found.");
     }
   
     oxhome = getOpenXM_HOME();
     if (oxhome == NULL) return (char *)NULL;
     p = (char *) GC_malloc(strlen(oxhome)+100);
     if (p == NULL) {fprintf(stderr,"No more memory.\n"); exit(100);}
   
     strcpy(p,oxhome);
     strcat(p,"lib/k097");
     if (getFileSize(p) != -1) return addSlash(p);
     msg_get_home(1,oxhome);
     msg_get_home(1,"     is found, but ");
     msg_get_home(1,p);
     msg_get_home(1,"     is not found.");
   
     msg_get_home(1,"Giving up!");
     return NULL;
   }
   
   
   char *getLOAD_K_PATH() {
     char *p;
     p = get_k0_lib_path();
     if (p == NULL) {
       return("/usr/local/lib/kxx97/yacc/");
     }else{
           return p;
     }
   }

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>