[BACK]Return to main.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / parse

Diff for /OpenXM_contrib2/asir2000/parse/main.c between version 1.38 and 1.39

version 1.38, 2015/08/14 13:51:56 version 1.39, 2018/03/29 01:32:54
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2000/parse/main.c,v 1.37 2015/08/06 10:01:53 fujimoto Exp $   * $OpenXM: OpenXM_contrib2/asir2000/parse/main.c,v 1.38 2015/08/14 13:51:56 fujimoto Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 75  extern int mpi_nprocs,mpi_myid;
Line 75  extern int mpi_nprocs,mpi_myid;
   
 char *find_asirrc()  char *find_asirrc()
 {  {
         static char name[BUFSIZ];    static char name[BUFSIZ];
         char dir[BUFSIZ];    char dir[BUFSIZ];
         char *env,*env2;    char *env,*env2;
   
 /* if ASIR_CONFIG is set, execute it; else execute .asirrc */  /* if ASIR_CONFIG is set, execute it; else execute .asirrc */
         env = getenv("ASIR_CONFIG");    env = getenv("ASIR_CONFIG");
         if( env && !access(env, R_OK) ) {    if( env && !access(env, R_OK) ) {
                 strcpy(name,env);      strcpy(name,env);
                 return name;      return name;
         }    }
         env = getenv("HOME");    env = getenv("HOME");
         if ( env ) {    if ( env ) {
                 sprintf(name, "%s/.asirrc", env);      sprintf(name, "%s/.asirrc", env);
                 if (!access(name, R_OK)) {      if (!access(name, R_OK)) {
                         return name;        return name;
                 }      }
         }    }
 #if defined(VISUAL) || defined(__MINGW32__)  #if defined(VISUAL) || defined(__MINGW32__)
         env  = getenv("HOMEDRIVE");    env  = getenv("HOMEDRIVE");
         env2 = getenv("HOMEPATH");    env2 = getenv("HOMEPATH");
         if ( env && env2 ) {    if ( env && env2 ) {
                 sprintf(name, "%s%s/.asirrc", env, env2);      sprintf(name, "%s%s/.asirrc", env, env2);
                 if (!access(name, R_OK)) {      if (!access(name, R_OK)) {
                         return name;        return name;
                 }      }
         }    }
         env  = getenv("APPDATA");    env  = getenv("APPDATA");
         if ( env ) {    if ( env ) {
                 sprintf(name, "%s/OpenXM/.asirrc", env);      sprintf(name, "%s/OpenXM/.asirrc", env);
                 if (!access(name, R_OK)) {      if (!access(name, R_OK)) {
                         return name;        return name;
                 }      }
         }    }
         get_rootdir(dir, BUFSIZ);    get_rootdir(dir, BUFSIZ);
         sprintf(name, "%s/.asirrc", dir);    sprintf(name, "%s/.asirrc", dir);
         if (!access(name, R_OK)) {    if (!access(name, R_OK)) {
                 return name;      return name;
         }    }
 #endif  #endif
         return NULL;    return NULL;
 }  }
   
 #if defined(VISUAL_LIB)  #if defined(VISUAL_LIB)
Line 126  void
Line 126  void
 main(int argc,char *argv[])  main(int argc,char *argv[])
 #endif  #endif
 {  {
         int tmp;    int tmp;
         char *ifname;    char *ifname;
         extern int GC_dont_gc;    extern int GC_dont_gc;
         extern int do_asirrc;    extern int do_asirrc;
         extern int do_file;    extern int do_file;
         extern char *do_filename;    extern char *do_filename;
         extern int asir_setenv;    extern int asir_setenv;
         extern FILE *in_fp;    extern FILE *in_fp;
         extern int *StackBottom;    extern int *StackBottom;
 #if !defined(VISUAL) && !defined(__MINGW32__)  #if !defined(VISUAL) && !defined(__MINGW32__)
         char *slash,*bslash,*binname,*p;    char *slash,*bslash,*binname,*p;
 #endif  #endif
   
         set_stacksize();    set_stacksize();
         StackBottom = &tmp;    StackBottom = &tmp;
         GC_init();    GC_init();
 #if defined(MPI)  #if defined(MPI)
         mpi_init();    mpi_init();
         if ( mpi_myid ) {    if ( mpi_myid ) {
                 int slave_argc;      int slave_argc;
                 char *slave_argv[2];      char *slave_argv[2];
   
                 ox_mpi_slave_init();      ox_mpi_slave_init();
                 slave_argc = 1;      slave_argc = 1;
                 slave_argv[0] = "ox_asir"; slave_argv[1]=0;      slave_argv[0] = "ox_asir"; slave_argv[1]=0;
                 ox_main(argc,argv);      ox_main(argc,argv);
                 exit(0);      exit(0);
         } else    } else
                 ox_mpi_master_init();      ox_mpi_master_init();
 #elif !defined(VISUAL) && !defined(__MINGW32__)  #elif !defined(VISUAL) && !defined(__MINGW32__)
         slash = (char *)rindex(argv[0],'/');    slash = (char *)rindex(argv[0],'/');
         bslash = (char *)rindex(argv[0],'\\');    bslash = (char *)rindex(argv[0],'\\');
         if ( slash )    if ( slash )
                 binname = slash+1;      binname = slash+1;
         else if ( bslash )    else if ( bslash )
                 binname = bslash+1;      binname = bslash+1;
         else    else
                 binname = argv[0];      binname = argv[0];
         for ( p = binname; *p; p++ )    for ( p = binname; *p; p++ )
                 *p = tolower(*p);      *p = tolower(*p);
         if ( !strncmp(binname,"ox_asir",strlen("ox_asir")) ) {    if ( !strncmp(binname,"ox_asir",strlen("ox_asir")) ) {
                 /* never return */      /* never return */
                 ox_main(argc,argv);      ox_main(argc,argv);
                 exit(0);      exit(0);
 #if defined(DO_PLOT)  #if defined(DO_PLOT)
         } else if ( !strncmp(binname,"ox_plot",strlen("ox_plot")) ) {    } else if ( !strncmp(binname,"ox_plot",strlen("ox_plot")) ) {
                 /* never return */      /* never return */
                 ox_plot_main(argc,argv);      ox_plot_main(argc,argv);
                 exit(0);      exit(0);
 #endif  #endif
         } else if ( !strncmp(binname,"ox_launch",strlen("ox_launch")) ) {    } else if ( !strncmp(binname,"ox_launch",strlen("ox_launch")) ) {
                 /* never return */      /* never return */
                 launch_main(argc,argv);      launch_main(argc,argv);
                 exit(0);      exit(0);
         }    }
 #endif  #endif
   
         srandom((int)get_current_time());    srandom((int)get_current_time());
 /*      mt_sgenrand((unsigned long)get_current_time()); */  /*  mt_sgenrand((unsigned long)get_current_time()); */
   
         rtime_init();    rtime_init();
         env_init();    env_init();
         endian_init();    endian_init();
         cppname_init();    cppname_init();
         process_args(--argc,++argv);    process_args(--argc,++argv);
         if (!do_quiet) {    if (!do_quiet) {
                 copyright();      copyright();
         }    }
         output_init();    output_init();
         arf_init();    arf_init();
         nglob_init();    nglob_init();
         glob_init();    glob_init();
         sig_init();    sig_init();
         tty_init();    tty_init();
         debug_init();    debug_init();
         pf_init();    pf_init();
         sysf_init();    sysf_init();
         parif_init();    parif_init();
         order_init();    order_init();
         /* XXX set the default ordering */    /* XXX set the default ordering */
 #if defined(VISUAL) || defined(__MINGW32__)  #if defined(VISUAL) || defined(__MINGW32__)
         init_socket();    init_socket();
 #endif  #endif
 #if defined(UINIT)  #if defined(UINIT)
         reg_sysf();    reg_sysf();
 #endif  #endif
   
         if ( do_file ) {    if ( do_file ) {
                 asir_infile=NULL;      asir_infile=NULL;
                 loadasirfile(do_filename);      loadasirfile(do_filename);
         } else {    } else {
                 /* the bottom of the input stack */      /* the bottom of the input stack */
                 input_init(stdin,"stdin");      input_init(stdin,"stdin");
         }    }
   
         if ( do_asirrc && (ifname = find_asirrc()) ) {    if ( do_asirrc && (ifname = find_asirrc()) ) {
                 if ( !SETJMP(main_env) )      if ( !SETJMP(main_env) )
                         execasirfile(ifname);        execasirfile(ifname);
         }    }
   
         prompt();    prompt();
         while ( 1 ) {    while ( 1 ) {
                 if ( SETJMP(main_env) )      if ( SETJMP(main_env) )
                         prompt();        prompt();
                 if ( !do_file ) {      if ( !do_file ) {
                         if ( SETJMP(asir_infile->jmpbuf) )        if ( SETJMP(asir_infile->jmpbuf) )
                                 prompt();          prompt();
                         else        else
                                 asir_infile->ready_for_longjmp = 1;          asir_infile->ready_for_longjmp = 1;
                 }      }
                 restore_handler();      restore_handler();
                 read_eval_loop();      read_eval_loop();
         }    }
 }  }
   
 #if !defined(VISUAL_LIB)  #if !defined(VISUAL_LIB)
Line 251  void set_error(int code,char *reason,char *action)
Line 251  void set_error(int code,char *reason,char *action)
 void set_stacksize()  void set_stacksize()
 {  {
 #if !defined(VISUAL) && !defined(__MINGW32__)  #if !defined(VISUAL) && !defined(__MINGW32__)
         struct rlimit rlim;    struct rlimit rlim;
         int c,m;    int c,m;
   
         getrlimit(RLIMIT_STACK,&rlim);    getrlimit(RLIMIT_STACK,&rlim);
         if ( rlim.rlim_cur < (1<<26) ) {    if ( rlim.rlim_cur < (1<<26) ) {
                 rlim.rlim_cur = MIN(1<<26,rlim.rlim_max);      rlim.rlim_cur = MIN(1<<26,rlim.rlim_max);
                 setrlimit(RLIMIT_STACK,&rlim);      setrlimit(RLIMIT_STACK,&rlim);
         }    }
 #endif  #endif
 }  }

Legend:
Removed from v.1.38  
changed lines
  Added in v.1.39

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