/* #includes */ /*{{{C}}}*//*{{{*/ #undef _POSIX_SOURCE #define _POSIX_SOURCE 1 #undef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 2 #include "config.h" #include #include #ifdef HAVE_GETTEXT #include #define _(String) gettext(String) #else #define _(String) String #endif #include #include #include #ifdef USE_DMALLOC #include "dmalloc.h" #endif #include "getopt.h" #include "bas.h" /*}}}*/ #ifdef CONFIG_BUILD_KERNEL int main(int argc, FAR char *argv[]) #else int bas_main(int argc, char *argv[]) #endif { /* variables */ /*{{{*/ char *runFile=(char*)0; int usage=0,o; const char *lp="/dev/null"; int backslash_colon=0; int uppercase=0; int restricted=0; int lpfd; static struct option lopts[]= { { "lp", required_argument, 0, 'l' }, { "help", no_argument, 0, 'h' }, { "restricted", no_argument, 0, 'r' }, { "uppercase", no_argument, 0, 'u' }, { "backslash-colon", no_argument, 0, 'b' }, { "version", no_argument, 0, 'V' }, #if defined(__STDC__) && __STDC__ { (const char*)0, 0, 0, '\0' } #else { (char*)0, 0, 0, '\0' } #endif }; /*}}}*/ #ifdef HAVE_GETTEXT bindtextdomain("bas",LOCALEDIR); textdomain("bas"); #endif /* parse arguments */ /*{{{*/ while ((o=getopt_long(argc,argv,"+bl:ruVh?",lopts,(int*)0))!=EOF) switch (o) { case 'b': backslash_colon=1; break; case 'l': lp=optarg; break; case 'u': uppercase=1; break; case 'r': restricted=1; break; case 'V': printf("bas %s\n", VERSION); exit(0); break; case 'h': usage=2; break; default: usage=1; break; } if (optind.\n"),stdout); exit(0); } if ((lpfd=open(lp,O_WRONLY|O_CREAT|O_TRUNC,0666))==-1) { fprintf(stderr,_("bas: Opening `%s' for line printer output failed (%s).\n"),lp,strerror(errno)); exit(2); } bas_argc=argc-optind; bas_argv=&argv[optind]; bas_argv0=runFile; /*}}}*/ bas_init(backslash_colon,restricted,uppercase,lpfd); if (runFile) bas_runFile(runFile); else bas_interpreter(); bas_exit(); return(0); } /*}}}*/