nfa dfa2nfa(register dfa da) { register nfa result; register posint state; register posint letter; result = newnfa(); result->highest_state = da->highest_state; result->alphabet_size = da->alphabet_size; result->minimal = FALSE; result->is_eps = FALSE; result->infin = newfinal(result->highest_state); result->delta = newndelta(result->alphabet_size, result->highest_state); setinit(result->infin[da->init]); for (state = 0; state <= result->highest_state; state++) setfinal(result->infin[state], da->final[state]); for (letter = 1; letter <= result->alphabet_size; letter++) for (state = 0; state <= result->highest_state; state++) { connect(result->delta, letter, state, da->delta[letter][state]); } return result; } /* dfa2nfa */
/* * Process a single external definition */ extdef() { register o; int sclass, scflag; struct nmlist typer; register struct nmlist *ds; if(((o=symbol())==EOFC) || o==SEMI) return; peeksym = o; sclass = 0; blklev = 0; if (getkeywords(&sclass, &typer)==0) { sclass = EXTERN; if (peeksym!=NAME) goto syntax; } scflag = 0; if (sclass==DEFXTRN) { scflag++; sclass = EXTERN; } if (sclass!=EXTERN && sclass!=STATIC && sclass!=TYPEDEF) error("Illegal storage class"); do { defsym = 0; paraml = NULL; parame = NULL; if (sclass==TYPEDEF) { decl1(TYPEDEF, &typer, 0, (struct nmlist *)NULL); continue; } decl1(EXTERN, &typer, 0, (struct nmlist *)NULL); if ((ds=defsym)==0) return; funcsym = ds; if ((ds->htype&XTYPE)==FUNC) { if ((peeksym=symbol())==LBRACE || peeksym==KEYW || (peeksym==NAME && csym->hclass==TYPEDEF)) { funcblk.type = decref(ds->htype); funcblk.strp = ds->hstrp; setinit(ds); outcode("BS", SYMDEF, sclass==EXTERN?ds->name:""); cfunc(); return; } if (paraml) error("Inappropriate parameters"); } else if ((o=symbol())==COMMA || o==SEMI) { peeksym = o; o = (length((union tree *)ds)+ALIGN) & ~ALIGN; if (sclass==STATIC) { setinit(ds); outcode("BSBBSBN", SYMDEF, "", BSS, NLABEL, ds->name, SSPACE, o); } else if (scflag) outcode("BSN", CSPACE, ds->name, o); } else { if (o!=ASSIGN) { error("Declaration syntax"); peeksym = o; } setinit(ds); if (sclass==EXTERN) outcode("BS", SYMDEF, ds->name); outcode("BBS", DATA, NLABEL, ds->name); if (cinit(ds, 1, sclass) & ALIGN) outcode("B", EVEN); } } while ((o=symbol())==COMMA); if (o==SEMI) return; syntax: if (o==RBRACE) { error("Too many }'s"); peeksym = 0; return; } error("External definition syntax"); errflush(o); statement(); }
int main(int argc, char** argv) { char line[300]; char action[16]; int i; //printf("start.......:%s\n",argv[1]); #if 0 if(strcmp(argv[1],"firewall")) { printf("******************\n"); for(i=0;i<argc;i++) { printf("%s ",argv[i]); } printf("\n***************\n"); } #endif if ( !apmib_init()) { printf("Initialize AP MIB failed !\n"); return -1; } apmib_initialized = 1; memset(line,0x00,300); if(argv[1] && (strcmp(argv[1], "init")==0)){ #if defined(CONFIG_RTL_ULINKER) #if defined(CONFIG_RTL_ULINKER_WLAN_DELAY_INIT) int ulinker_auto = 0; apmib_get(MIB_ULINKER_AUTO, (void *)&ulinker_auto); if (ulinker_auto == 0) system("echo \"wlan 1\" > /proc/wlan_init"); #endif if (strcmp(argv[3], "all")==0) { ulinker_bootup(); } #elif defined(CONFIG_POCKET_ROUTER_SUPPORT) pocketAP_bootup(); #endif #ifdef CONFIG_POCKET_AP_SUPPORT i=BRIDGE_MODE; apmib_set(MIB_OP_MODE,(void *)&i); apmib_get(MIB_DHCP, (void *)&i); //for FC, dhcp server not allowed when client if( i > DHCP_CLIENT ) i=0; apmib_set(MIB_DHCP, (void *)&i); //0:DHCP_DISABLED i = 0xc0a801fa; apmib_set(MIB_IP_ADDR, (void *)&i); //for FC, default IP to 192.168.1.250 #endif setinit(argc,argv); #if defined(CONFIG_RTL_ULINKER_WLAN_DELAY_INIT) if (ulinker_auto == 1) ulinker_wlan_init(); #endif return 0; } else if(argv[1] && (strcmp(argv[1], "br")==0)){ for(i=0;i<argc;i++){ if( i>2 ) string_casecade(line, argv[i]); } setbridge(line); } #ifdef HOME_GATEWAY else if(argv[1] && (strcmp(argv[1], "firewall")==0)){ if(argv[2] && (strcmp(argv[2], "Send_GARP")==0)) //it will be call by set_staticIP function { #ifdef SEND_GRATUITOUS_ARP sendArp(); #endif } else { setFirewallIptablesRules(argc,argv); } } else if(argv[1] && (strcmp(argv[1], "wlanapp")==0)){ for(i=0;i<argc;i++){ if( i>2 ) string_casecade(line, argv[i]); if(i==2) sprintf(action, "%s",argv[i]); } setWlan_Applications(action, line); }else if(argv[1] && (strcmp(argv[1], "disc")==0)){ sprintf(line, "%s", argv[2]); #ifdef MULTI_PPPOE if(argv[3]) wan_disconnect(line,argv[3]); else wan_disconnect(line,"NOMULPPPOE"); #else wan_disconnect(line); #endif }else if(argv[1] && ((strcmp(argv[1], "conn")==0)||(strcmp(argv[1], "renew")==0))){ if(argc < 4){ printf("sysconf conn Invalid agrments!\n"); return 0; } sprintf(action, "%s",argv[3]); for(i=0;i<argc;i++){ if( i>2 ) string_casecade(line, argv[i]); } if((strcmp(argv[1], "renew")==0)&&!strcmp(argv[2],"dhcp") &&!wan_dhcpcNeedRenewConn(action,line)) { return 0; } #if defined(CONFIG_DYNAMIC_WAN_IP) if((!strcmp(argv[2], "dhcp"))&&(isFileExist(TEMP_WAN_CHECK))){ RunSystemCmd(TEMP_WAN_DHCP_INFO, "echo", line, NULL_STR); } #endif #if defined(CONFIG_RTL_ULINKER) /* notice ulinker_process to reset domain name query */ system("echo 1 > /var/ulinker_reset_domain"); #endif #if defined(CONFIG_DOMAIN_NAME_QUERY_SUPPORT) if(!strcmp(action, "br0")) wan_connect_pocket(action, line); else wan_connect(action, line); #else wan_connect(action, line); #endif }else if(argv[1] && (strcmp(argv[1], "pppoe")==0)){ Init_Internet(argc,argv); }else if(argv[1] && (strcmp(argv[1], "pptp")==0)){ Init_Internet(argc,argv); }else if(argv[1] && (strcmp(argv[1], "l2tp")==0)){ Init_Internet(argc,argv); }else if(argv[1] && (strcmp(argv[1], "setQos")==0)){ Init_QoS(argc,argv); }else if(argv[1] && (strcmp(argv[1], "dhcpd")==0)){ sprintf(action, "%s",argv[2]); start_lan_dhcpd(action); } #if defined(CONFIG_DOMAIN_NAME_QUERY_SUPPORT) else if(argv[1] && (strcmp(argv[1], "upnpd")==0)){ if(argc < 4){ printf("sysconf upnpd Invalid agrments!\n"); return 0; } start_upnpd(atoi(argv[2]),atoi(argv[3])); } #endif //### add by sen_liu 2011.4.21 sync the system log update (enlarge from 1 pcs to 8 pcs) to SDKv2.5 from kernel 2.4 #if defined(RINGLOG) else if(argv[1] && (strcmp(argv[1], "log")==0)){ if (argc == 6 && !strcmp(argv[2], "-s") && !strcmp(argv[4], "-b")) { system("killall syslogd >/dev/null 2>&1"); system("rm /var/log/log_split >/dev/null 2>&1"); sprintf(line, "echo %s > /var/log/log_split", argv[5]); system(line); RunSystemCmd(NULL_FILE, "syslogd", "-L", "-s", argv[3], "-b", argv[5], NULL_STR); fprintf(stderr, "syslog will use %dKB for log(%s rotate, 1 original, %sKB for each).\n", atoi(argv[3]) * ((atoi(argv[5]))+1), argv[5], argv[3]); } /* else if (argc == 4 && !strcmp(argv[2], "-R")) { RunSystemCmd(NULL_FILE, "killall syslogd", NULL_STR); RunSystemCmd(NULL_FILE, "syslogd", "-L", "-R", argv[3], NULL_STR); } */ else { fprintf(stderr, "usage:\n"); fprintf(stderr, "sysconf log -s size -b number-of-rotate-backup\n"); //fprintf(stderr, "sysconf log -R IP\n"); } } #endif //### end #endif //#ifdef CONFIG_POCKET_ROUTER_SUPPORT // system("boa"); //#endif return 0; }