コード例 #1
0
ファイル: aplus_main.c プロジェクト: PlanetAPL/a-plus
void aplus_main(long argc, char** argv)
{
#if !defined(_INTERPRETER_ONLY)
        extern void AplusLoop();
#endif  
	I i; /* the number of arguments parsed */

#if !defined(_INTERPRETER_ONLY)
	dapinit();
#endif
	initReleaseData(_releaseCode);
	initVersion();
	initDefaultATREE(argv[0]);
	initCallouts();
	i = parseargs(argc, argv);
	if( !_quiet )
	  printId();
	atmpinit();
	envinit();
	if(0!=_megsforheap)setk1(_megsforheap);  /* must be before mem init! */
	ai(_workarea);                           /* initialize */
        if(_enable_coredump)
          {
            setSigv(1);
            setSigb(1);
            coreLimSet(aplusInfinity);
          }
	versSet(_version);
	releaseCodeSet(_releaseCode);
	phaseOfReleaseSet(_phaseOfRelease);
	majorReleaseSet(_majorRelease);
	minorReleaseSet(_minorRelease);
	startupSyslog(_version);
	xi(argv[0]);                             /* installation */
	argvInstall(argc, argv, i);              /* set up _argv */
	uextInstall();                           /* user lib install */
#if !defined(_INTERPRETER_ONLY)
	AplusLoop(argc, argv, i);
#else
        if (i < argc && argv[i] && *argv[i])
          loadafile(argv[i],0);
	if (Tf) pr(); 
	while(1) getm();
#endif
/**********************************************************************
    These functions are moved to AplusLoop 

	if (i < argc && argv[i] && *argv[i])
		loadafile(argv[i],0);                / * load script * /
	if (Tf) pr();                                / * initial prompt * /

**********************************************************************/
}
コード例 #2
0
ファイル: basic.c プロジェクト: lbsmith/Production-Basic
// entry point into program
int main(int argc, char *argv[])
{
  int x;
  program *pgm;
  FILE *fp;

  signal(SIGFPE, fpe_handler);
  signal(SIGINT, brk_handler); 

  gprog = SafeMalloc(sizeof(program));
  storageinit(gprog);  

  envinfo.argc = argc;
  for (x=0; x<argc; x++) envinfo.argv[x] = argv[x];

  if ((fp = fopen("LOGIN", "rb")) == NULL) 
    printf("ERROR: Could not open login script\n");
  else {
    fclose(fp);
    pgm = SafeMalloc(sizeof(program));
    envinit();
    loadall(pgm, "LOGIN");
    runprog(pgm, 1);
    GC_free(pgm);
  }

  printf("\x1B[11m");
  rl_inhibit_completion = 1;
  printf("\n\x1B[10mREADY\n"); 
  setjmp(mark);

  do {
     stackinit();
     gprog->nextprog = 0;
     gprog->prevprog = 0;
     input = readline(">");
     prog = input;
     if (*input) { 
       add_history(input); 
       encode_rpn(); 
     }
  } while (1);

  return 0;
}
コード例 #3
0
ファイル: main.c プロジェクト: ArmstrongJ/open-watcom-v2
int main( int argc, char *argv[] )
{
    const char  *fs = NULL;
    char        **eargv = NULL;
    int         eargc;

    setlocale( LC_CTYPE, "" );
    setlocale( LC_NUMERIC, "C" ); /* for parsing cmdline & prog */
    cmdname = argv[0];
    if( argc == 1 ) {
        fprintf( stderr,
          "usage: %s [-F fs] [-v var=value] [-f progfile | 'prog'] [file ...]\n",
          cmdname );
        exit( 1 );
    }
    signal( SIGFPE, fpecatch );

    srand_seed = 1;
    srand( (unsigned)srand_seed );

    yyin = NULL;
    symtab = makesymtab( NSYMTAB/NSYMTAB );
    if( argc == 2 && argv[1][0] == '@' && argv[1][1] != '\0' ) {
        const char  *env;

        env = getenv( &argv[1][1] );
        if( env != NULL ) {
            eargc = ParseEnvVar( env, NULL, NULL );  // count parameters.
            eargv = malloc( eargc * sizeof( char * ) + strlen( env ) + 1 + eargc );
            ParseEnvVar( env, eargv, (char *)( eargv + eargc ) );
            argc = eargc;
            argv = eargv;
        }
    }
    while( argc > 1 && argv[1][0] == '-' && argv[1][1] != '\0' ) {
        if( strcmp( argv[1], "-version" ) == 0 || strcmp( argv[1], "--version" ) == 0 ) {
            printf( "awk %s\n", version );
            exit( 0 );
            break;
        }
        if( strncmp( argv[1], "--", 2 ) == 0 ) {   /* explicit end of args */
            argc--;
            argv++;
            break;
        }
        switch( argv[1][1] ) {
        case 's':
            if( strcmp( argv[1], "-safe" ) == 0 )
                safe = true;
            break;
        case 'f':       /* next argument is program filename */
            if( argv[1][2] != '\0' ) {  /* arg is -fsomething */
                if( npfile >= MAX_PFILE - 1 ) {
                    FATAL( "too many -f options" );
                }
                pfile[npfile++] = unquote( &argv[1][2] );
            } else {        /* arg is -f something */
                argc--; argv++;
                if( argc <= 1 ) {
                    FATAL( "no program filename" );
                }
                if( npfile >= MAX_PFILE - 1 ) {
                    FATAL( "too many -f options" );
                }
                pfile[npfile++] = unquote( argv[1] );
            }
            break;
        case 'F':       /* set field separator */
            if( argv[1][2] != '\0' ) {  /* arg is -Fsomething */
                if( argv[1][2] == 't' && argv[1][3] == '\0' ) {     /* wart: t=>\t */
                    fs = "\t";
                } else if( argv[1][2] != '\0' ) {
                    fs = &argv[1][2];
                }
            } else {        /* arg is -F something */
                argc--; argv++;
                if( argc > 1 && argv[1][0] == 't' && argv[1][1] == '\0' ) { /* wart: t=>\t */
                    fs = "\t";
                } else if( argc > 1 && argv[1][0] != '\0' ) {
                    fs = &argv[1][0];
                }
            }
            if( fs == NULL || *fs == '\0' )
                WARNING( "field separator FS is empty" );
            break;
        case 'v':       /* -v a=1 to be done NOW.  one -v for each */
            if( argv[1][2] != '\0' ) {  /* arg is -vsomething */
                char *p;

                p = unquote( &argv[1][2] );
                if( isclvar( p ) ) {
                    setclvar( p );
                } else {
                    FATAL( "invalid -v option argument: %s", p );
                }
            } else {        /* arg is -v something */
                char *p;

                argc--; argv++;
                if( argc <= 1 ) {
                    FATAL( "no variable name" );
                }
                p = unquote( argv[1] );
                if( isclvar( p ) ) {
                    setclvar( p );
                } else {
                    FATAL( "invalid -v option argument: %s", p );
                }
            }
            break;
        case 'd':
            dbg = atoi( &argv[1][2] );
            if( dbg == 0 )
                dbg = 1;
            printf( "awk %s\n", version );
            break;
        default:
            WARNING( "unknown option %s ignored", argv[1] );
            break;
        }
        argc--;
        argv++;
    }
    /* argv[1] is now the first argument */
    if( npfile == 0 ) {      /* no -f; first argument is program */
        char *p;

        if( argc <= 1 ) {
            if( dbg )
                exit( 0 );
            FATAL( "no program given" );
        }
        p = unquote( argv[1] );
        dprintf(( "program = |%s|\n", p ));
        lexprog = p;
        argc--;
        argv++;
    }
    for( eargc = 1; eargc < argc; ++eargc ) {
        argv[eargc] = unquote( argv[eargc] );
    }
    recinit( recsize );
    syminit();
    compile_time = 1;
    argv[0] = cmdname;      /* put prog name at front of arglist */
    dprintf(( "argc=%d, argv[0]=%s\n", argc, argv[0] ));
    arginit( argc, argv );
    if( !safe )
        envinit( environ );
    yyparse();
    setlocale( LC_NUMERIC, "" ); /* back to whatever it is locally */
    if( fs )
        *FS = qstring( fs, '\0' );
    dprintf(( "errorflag=%d\n", errorflag ));
    if( errorflag == 0 ) {
        compile_time = 0;
        run( winner );
    } else {
        bracecheck();
    }
    return( errorflag );
}
コード例 #4
0
ファイル: main.c プロジェクト: OS2World/LIB-POSIX2
int main(int argc, const char *argv[])
{
	const char *fs = NULL, *marg;
	int temp;

	__progname = argv[0];
	_wildcard(&argc, &argv);

	setlocale(LC_ALL, "");
	cmdname = __progname;
	if (argc == 1) {
		fprintf(stderr, "Usage: %s [-f programfile | 'program'] [-Ffieldsep] [-v var=value] [-safe] [-mrn] [-mfn] [files]\n", cmdname);
		exit(1);
	}
	signal(SIGFPE, fpecatch);
	yyin = NULL;
	symtab = makesymtab(NSYMTAB);
	while (argc > 1 && argv[1][0] == '-' && argv[1][1] != '\0') {
		if (strcmp(argv[1], "--") == 0) {	/* explicit end of args */
			argc--;
			argv++;
			break;
		}
		switch (argv[1][1]) {
		case 's':
			if (strcmp(argv[1], "-safe") == 0)
				safe = 1;
			break;
		case 'f':	/* next argument is program filename */
			argc--;
			argv++;
			if (argc <= 1)
				ERROR "no program filename" FATAL;
			pfile[npfile++] = argv[1];
			break;
		case 'F':	/* set field separator */
			if (argv[1][2] != 0) {	/* arg is -Fsomething */
				if (argv[1][2] == 't' && argv[1][3] == 0)	/* wart: t=>\t */
					fs = "\t";
				else if (argv[1][2] != 0)
					fs = &argv[1][2];
			} else {		/* arg is -F something */
				argc--; argv++;
				if (argc > 1 && argv[1][0] == 't' && argv[1][1] == 0)	/* wart: t=>\t */
					fs = "\t";
				else if (argc > 1 && argv[1][0] != 0)
					fs = &argv[1][0];
			}
			if (fs == NULL || *fs == '\0')
				ERROR "field separator FS is empty" WARNING;
			break;
		case 'v':	/* -v a=1 to be done NOW.  one -v for each */
			if (argv[1][2] == '\0' && --argc > 1 && isclvar((++argv)[1]))
				setclvar((char*)argv[1]);
			break;
		case 'm':	/* more memory: -mr=record, -mf=fields */
				/* no longer needed */
			marg = argv[1];
			if (argv[1][3])
				temp = atoi(&argv[1][3]);
			else {
				argv++; argc--;
				temp = atoi(&argv[1][0]);
			}
			switch (marg[2]) {
			case 'r':	recsize = temp; break;
			case 'f':	nfields = temp; break;
			default: ERROR "unknown option %s\n", marg FATAL;
			}
			break;
		case 'd':
			dbg = atoi(&argv[1][2]);
			if (dbg == 0)
				dbg = 1;
			printf("awk %s\n", version);
			break;
		case 'V':	/* added for exptools "standard" */
			printf("awk %s\n", version);
			exit(0);
			break;
		default:
			ERROR "unknown option %s ignored", argv[1] WARNING;
			break;
		}
		argc--;
		argv++;
	}
	/* argv[1] is now the first argument */
	if (npfile == 0) {	/* no -f; first argument is program */
		if (argc <= 1) {
			if (dbg)
				exit(0);
			ERROR "no program given" FATAL;
		}
		   dprintf( ("program = |%s|\n", argv[1]) );
		lexprog = argv[1];
		argc--;
		argv++;
	}
	recinit(recsize);
	syminit();
	compile_time = 1;
	argv[0] = cmdname;	/* put prog name at front of arglist */
	   dprintf( ("argc=%d, argv[0]=%s\n", argc, argv[0]) );
	arginit(argc, argv);
	if (!safe)
		envinit(environ);
	yyparse();
	if (fs)
		*FS = qstring(fs, '\0');
	   dprintf( ("errorflag=%d\n", errorflag) );
	if (errorflag == 0) {
		compile_time = 0;
		run(winner);
	} else
		bracecheck();
	return(errorflag);
}
コード例 #5
0
ファイル: main.c プロジェクト: ajallooeian/libawkcpp
int main(int argc, char *argv[])
{
	const char *fs = NULL;

	setlocale(LC_CTYPE, "");
	setlocale(LC_NUMERIC, "C"); /* for parsing cmdline & prog */
	cmdname = argv[0];
	if (argc == 1) {
		fprintf(stderr, 
		  "usage: %s [-F fs] [-v var=value] [-f progfile | 'prog'] [file ...]\n", 
		  cmdname);
		exit(1);
	}
	signal(SIGFPE, fpecatch);
	yyin = NULL;
	symtab = makesymtab(NSYMTAB/NSYMTAB);
	while (argc > 1 && argv[1][0] == '-' && argv[1][1] != '\0') {
		if (strcmp(argv[1],"-version") == 0 || strcmp(argv[1],"--version") == 0) {
			printf("awk %s\n", version);
			exit(0);
			break;
		}
		if (strncmp(argv[1], "--", 2) == 0) {	/* explicit end of args */
			argc--;
			argv++;
			break;
		}
		switch (argv[1][1]) {
		case 's':
			if (strcmp(argv[1], "-safe") == 0)
				safe = 1;
			break;
		case 'f':	/* next argument is program filename */
			argc--;
			argv++;
			if (argc <= 1)
				FATAL("no program filename");
			if (npfile >= MAX_PFILE - 1)
				FATAL("too many -f options"); 
			pfile[npfile++] = argv[1];
			break;
		case 'F':	/* set field separator */
			if (argv[1][2] != 0) {	/* arg is -Fsomething */
				if (argv[1][2] == 't' && argv[1][3] == 0)	/* wart: t=>\t */
					fs = "\t";
				else if (argv[1][2] != 0)
					fs = &argv[1][2];
			} else {		/* arg is -F something */
				argc--; argv++;
				if (argc > 1 && argv[1][0] == 't' && argv[1][1] == 0)	/* wart: t=>\t */
					fs = "\t";
				else if (argc > 1 && argv[1][0] != 0)
					fs = &argv[1][0];
			}
			if (fs == NULL || *fs == '\0')
				WARNING("field separator FS is empty");
			break;
		case 'v':	/* -v a=1 to be done NOW.  one -v for each */
			if (argv[1][2] == '\0' && --argc > 1 && isclvar((++argv)[1]))
				setclvar(argv[1]);
			break;
		case 'd':
			dbg = atoi(&argv[1][2]);
			if (dbg == 0)
				dbg = 1;
			printf("awk %s\n", version);
			break;
		default:
			WARNING("unknown option %s ignored", argv[1]);
			break;
		}
		argc--;
		argv++;
	}
	/* argv[1] is now the first argument */
	if (npfile == 0) {	/* no -f; first argument is program */
		if (argc <= 1) {
			if (dbg)
				exit(0);
			FATAL("no program given");
		}
		   dprintf( ("program = |%s|\n", argv[1]) );
		lexprog = argv[1];
		argc--;
		argv++;
	}
	recinit(recsize);
	syminit();
	compile_time = 1;
	argv[0] = cmdname;	/* put prog name at front of arglist */
	   dprintf( ("argc=%d, argv[0]=%s\n", argc, argv[0]) );
	arginit(argc, argv);
	if (!safe)
		envinit(environ);
	yyparse();
	setlocale(LC_NUMERIC, ""); /* back to whatever it is locally */
	if (fs)
		*FS = qstring(fs, '\0');
	   dprintf( ("errorflag=%d\n", errorflag) );
	if (errorflag == 0) {
		compile_time = 0;
		run(winner);
	} else
		bracecheck();
	return(errorflag);
}
コード例 #6
0
ファイル: dased.c プロジェクト: Kampbell/isode-8.0
int 
main (int argc, char **argv, char **envp)
{
	int	    vecp;
	char   *vec[4];
	struct TSAPdisconnect   tds;
	struct TSAPdisconnect  *td = &tds;

	arginit (argv);
	envinit ();

	advise (LLOG_NOTICE, NULLCP, "listening on %s", taddr2str (&tas));
	if (TNetListen (&tas, td) == NOTOK)
		ts_adios (td, "TNetListen failed");

	for (;;) {
		int	nfds,
			secs;
		fd_set  ifds,
				*rfds;

		if (!isbound && prebind)
			 bind_to_dsa ();

		if (isbound) {
			rfds = &ifds;

			nfds = dsap_ad + 1;

			FD_ZERO (rfds);
			FD_SET (dsap_ad, rfds);

			secs = NOTOK;
		} else
			nfds = 0, rfds = NULLFD, secs = prebind ? 5 * 60L : NOTOK;

		if (TNetAcceptAux (&vecp, vec, NULLIP, NULLTA, nfds, rfds, NULLFD,
						   NULLFD, secs, td) == NOTOK) {
			ts_advise (td, LLOG_EXCEPTIONS, "TNetAccept failed");
			continue;
		}

		if (rfds && FD_ISSET (dsap_ad, rfds)) {	/* DSA timed us out... */
			if (debug)
				advise (LLOG_DEBUG, NULLCP, "unbound from directory");

			 ds_unbind ();
			isbound = 0;
		}

		if (vecp <= 0)
			continue;

		if (debug)
			break;

		switch (TNetFork (vecp, vec, td)) {
		case OK:
			ll_hdinit (pgm_log, pgmname);
			break;

		case NOTOK:
			ts_advise (td, LLOG_EXCEPTIONS, "TNetFork failed");
			continue;

		default:
			if (isbound) {
				if (dsap_ad != NOTOK)
					 close (dsap_ad), dsap_ad = NOTOK;
				isbound = 0;
			}
			continue;
		}
		break;
	}

	dased (vecp, vec);

	return 0;
}