void init_vocoders() { char fname[1024]; DIR *dirp; struct dirent *dp; int i = 0; struct stat st; int cnt = 0; for (i = 0; i < MAXCODECS; i++) { vocoders[i].f = vocoder_default; vocoders[i].rate = 0; } if ((dirp = opendir(gmodpath)) == NULL) { misc_debug(0, "init_vocoders: cannot open modules dir %s: %s\n", gmodpath, strerror(errno)); return; } while((dp = readdir(dirp)) != NULL) { if (strcmp(dp->d_name, ".") == 0 || strcmp(dp->d_name, "..") == 0 || (memcmp(dp->d_name, "mod", 3) != 0)) continue; snprintf(fname, sizeof(fname) - 2, "%s/%s", gmodpath, dp->d_name); stat(fname, &st); if (S_ISREG(st.st_mode)) if (securemod(&st, fname)) if (loadmodule(fname) == 0) cnt++; } misc_debug(0, "loaded %d module(s)\n", cnt); }
void userinit(void) { Lsym *l; Node *n; char *buf, *p; p = getenv("home"); if(p != 0) { buf = smprint("%s/lib/acid", p); silent = 1; loadmodule(buf); free(buf); } interactive = 0; if(setjmp(err)) { unwind(); return; } l = look("acidinit"); if(l && l->proc) { n = an(ONAME, ZN, ZN); n->sym = l; n = an(OCALL, n, ZN); execute(n); } }
int MT3Interface::processinput(const char *input) { char *param; char command[256]; mtmemzero(command,sizeof(command)); strncpy(command,input,sizeof(command)-1); param = strchr(command,' '); if (param){ *param++ = 0; }; if ((stricmp(command,"open")==0) || (stricmp(command,"load")==0)){ if (param) loadmodule(param); return 1; } else if ((stricmp(command,"exit")==0) || (stricmp(command,"quit")==0)){ # ifdef _WIN32 PostQuitMessage(0); # else extern bool running; running = false; # endif return 1; } else{ return 0; }; }
void loadmoduleobjtype(void) { char *buf; buf = smprint("/sys/lib/acid/%s", mach->name); loadmodule(buf); free(buf); }
void userinit(void) { Lsym *l; Node *n; char buf[512], *p; p = getenv("home"); if(p == 0) p = getenv("HOME"); if(p != 0) { snprint(buf, sizeof(buf)-1, "%s/lib/acid", p); silent = 1; loadmodule(buf); } if(rdebug){ snprint(buf, sizeof(buf)-1, "%s/rdebug", acidlib); loadmodule(buf); } snprint(buf, sizeof(buf)-1, "%s/%s", acidlib, mach->name); loadmodule(buf); interactive = 0; if(setjmp(err)) { unwind(); return; } l = look("acidinit"); if(l && l->proc) { n = an(ONAME, ZN, ZN); n->sym = l; n = an(OCALL, n, ZN); execute(n); } }
void LoadModuleView::on_show() { char md5_signature[16]; uint8_t c; memcpy(md5_signature, (const void *)(0x10087FF0), 16); for (c=0; c<16; c++) { if (md5_signature[c] != _hash[c]) break; } //text_info.set(to_string_hex(*((unsigned int*)0x10087FF0), 8)); if (c == 16) { text_info.set("Module already loaded :)"); _mod_loaded = true; } else { text_info.set("Loading module"); loadmodule(); } }
int main(int argc, char **argv) { char *outname = "aout.rdf"; int moduleloaded = 0; char *respstrings[128] = { 0, }; options.verbose = 0; options.align = 16; options.dynalink = 0; options.strip = 0; error_file = stderr; argc--, argv++; if (argc == 0) usage(); while (argc && *argv && **argv == '-' && argv[0][1] != 'l') { switch (argv[0][1]) { case 'r': printf("ldrdf (linker for RDF files) version " LDRDF_VERSION "\n"); printf("RDOFF2 revision %s\n", RDOFF2_REVISION); exit(0); case 'v': if (argv[0][2] == '=') { options.verbose = argv[0][3] - '0'; if (options.verbose < 0 || options.verbose > 9) { fprintf(stderr, "ldrdf: verbosity level must be a number" " between 0 and 9\n"); exit(1); } } else options.verbose++; break; case 'a': options.align = atoi(argv[1]); if (options.align <= 0) { fprintf(stderr, "ldrdf: -a expects a positive number argument\n"); exit(1); } argv++, argc--; break; case 's': options.strip = 1; break; case 'd': if (argv[0][2] == 'y') options.dynalink = 1; break; case 'o': outname = argv[1]; argv++, argc--; break; case 'j': if (!objpath) { options.objpath = 1; objpath = argv[1]; argv++, argc--; break; } else { fprintf(stderr, "ldrdf: more than one objects search path specified\n"); exit(1); } case 'L': if (!libpath) { options.libpath = 1; libpath = argv[1]; argv++, argc--; break; } else { fprintf(stderr, "ldrdf: more than one libraries search path specified\n"); exit(1); } case '@':{ int i = 0; char buf[256]; FILE *f; options.respfile = 1; if (argv[1] != NULL) f = fopen(argv[1], "r"); else { fprintf(stderr, "ldrdf: no response file name specified\n"); exit(1); } if (f == NULL) { fprintf(stderr, "ldrdf: unable to open response file\n"); exit(1); } argv++, argc--; while (fgets(buf, sizeof(buf), f) != NULL) { char *p; if (buf[0] == '\n') continue; if ((p = strchr(buf, '\n')) != NULL) *p = '\0'; if (i >= 128) { fprintf(stderr, "ldrdf: too many input files\n"); exit(1); } *(respstrings + i) = newstr(buf); argc++, i++; } break; } case '2': options.stderr_redir = 1; error_file = stdout; break; case 'g': generic_rec_file = argv[1]; argv++, argc--; break; default: usage(); } argv++, argc--; } if (options.verbose > 4) { printf("ldrdf invoked with options:\n"); printf(" section alignment: %d bytes\n", options.align); printf(" output name: `%s'\n", outname); if (options.strip) printf(" strip symbols\n"); if (options.dynalink) printf(" Unix-style dynamic linking\n"); if (options.objpath) printf(" objects search path: %s\n", objpath); if (options.libpath) printf(" libraries search path: %s\n", libpath); printf("\n"); } symtab = symtabNew(); initsegments(); if (!symtab) { fprintf(stderr, "ldrdf: out of memory\n"); exit(1); } while (argc) { if (!*argv) argv = respstrings; if (!*argv) break; if (!strncmp(*argv, "-l", 2)) { if (libpath && (argv[0][2] != '/')) add_library(newstrcat(libpath, *argv + 2)); else add_library(*argv + 2); } else { if (objpath && (argv[0][0] != '/')) loadmodule(newstrcat(objpath, *argv)); else loadmodule(*argv); moduleloaded = 1; } argv++, argc--; } if (!moduleloaded) { printf("ldrdf: nothing to do. ldrdf -h for usage\n"); return 0; } search_libraries(); if (options.verbose > 2) { printf("symbol table:\n"); symtabDump(symtab, stdout); } write_output(outname); if (errorcount > 0) exit(1); return 0; }
void main(int argc, char *argv[]) { Dir *db; Lsym *l; Node *n; char buf[128], *s; int pid, i; char *p; char afile[512]; argv0 = argv[0]; pid = 0; aout = "v.out"; quiet = 1; /* turn off all debugging */ protodebug = 0; mtype = 0; ARGBEGIN{ case 'm': mtype = ARGF(); break; case 'w': wtflag = 1; break; case 'l': s = ARGF(); if(s == 0) usage(); lm[nlm++] = s; break; case 'd': p = ARGF(); if (p == 0) usage(); while (*p) { setdbg_opt(*p, 0); /* don't print set message */ p++; } break; case 'k': kernel++; break; case 'q': quiet = 0; break; case 'r': pid = 1; remote++; kernel++; break; case 'R': pid = 1; rdebug++; s = ARGF(); if(s == 0) usage(); remfd = opentty(s, 0); if(remfd < 0){ fprint(2, "acid: can't open %s: %r\n", s); exits("open"); } break; default: usage(); }ARGEND if(argc > 0) { if(remote || rdebug) aout = argv[0]; else if(isnumeric(argv[0])) { pid = atoi(argv[0]); sprint(prog, "/proc/%d/text", pid); aout = prog; if(argc > 1) aout = argv[1]; else if(kernel) aout = mysystem(); } else { if(kernel) { print("-k requires a pid"); kernel = 0; } aout = argv[0]; } } else if(rdebug) aout = "/386/bpc"; else if(remote) aout = "/mips/bcarrera"; fmtinstall('x', xfmt); fmtinstall('L', Lfmt); fmtinstall('f', gfltconv); fmtinstall('F', gfltconv); fmtinstall('g', gfltconv); fmtinstall('G', gfltconv); fmtinstall('e', gfltconv); fmtinstall('E', gfltconv); Binit(&bioout, 1, OWRITE); bout = &bioout; kinit(); initialising = 1; pushfile(0); loadvars(); installbuiltin(); if(mtype && machbyname(mtype) == 0) print("unknown machine %s", mtype); if (attachfiles(aout, pid) < 0) varreg(); /* use default register set on error */ acidlib = getenv("ACIDLIB"); if(acidlib == nil){ p = getenv("ROOT"); if(p == nil) p = "/usr/inferno"; snprint(afile, sizeof(afile)-1, "%s/lib/acid", p); acidlib = strdup(afile); } snprint(afile, sizeof(afile)-1, "%s/port", acidlib); loadmodule(afile); for(i = 0; i < nlm; i++) { if((db = dirstat(lm[i])) != nil) { free(db); loadmodule(lm[i]); } else { sprint(buf, "%s/%s", acidlib, lm[i]); loadmodule(buf); } } userinit(); varsym(); l = look("acidmap"); if(l && l->proc) { n = an(ONAME, ZN, ZN); n->sym = l; n = an(OCALL, n, ZN); execute(n); } interactive = 1; initialising = 0; line = 1; setup_os_notify(); for(;;) { if(setjmp(err)) { Binit(&bioout, 1, OWRITE); unwind(); } stacked = 0; Bprint(bout, "acid: "); if(yyparse() != 1) die(); restartio(); unwind(); } /* not reached */ }
void main(int argc, char *argv[]) { Lsym *l; Node *n; char *s; int pid, i; argv0 = argv[0]; pid = 0; aout = "8.out"; quiet = 1; mtype = 0; ARGBEGIN{ case 'm': mtype = EARGF(usage()); break; case 'w': wtflag = 1; break; case 'l': s = EARGF(usage()); lm[nlm++] = s; break; case 'k': kernel++; break; case 'q': quiet = 0; break; case 'r': pid = 1; remote++; kernel++; break; default: usage(); }ARGEND if(argc > 0) { if(remote) aout = argv[0]; else if(isnumeric(argv[0])) { pid = strtol(argv[0], 0, 0); snprint(prog, sizeof(prog), "/proc/%d/text", pid); aout = prog; if(argc > 1) aout = argv[1]; else if(kernel) aout = system(); } else { if(kernel) { fprint(2, "acid: -k requires a pid\n"); usage(); } aout = argv[0]; } } else if(remote) aout = "/mips/9ch"; fmtinstall('x', xfmt); fmtinstall('L', Lfmt); Binit(&bioout, 1, OWRITE); bout = &bioout; kinit(); initialising = 1; pushfile(0); loadvars(); installbuiltin(); if(mtype && machbyname(mtype) == 0) print("unknown machine %s", mtype); if (attachfiles(aout, pid) < 0) varreg(); /* use default register set on error */ loadmodule("/sys/lib/acid/port"); loadmoduleobjtype(); for(i = 0; i < nlm; i++) { if(access(lm[i], AREAD) >= 0) loadmodule(lm[i]); else { s = smprint("/sys/lib/acid/%s", lm[i]); loadmodule(s); free(s); } } userinit(); varsym(); l = look("acidmap"); if(l && l->proc) { n = an(ONAME, ZN, ZN); n->sym = l; n = an(OCALL, n, ZN); execute(n); } interactive = 1; initialising = 0; line = 1; notify(catcher); for(;;) { if(setjmp(err)) { Binit(&bioout, 1, OWRITE); unwind(); } stacked = 0; Bprint(bout, "acid: "); if(yyparse() != 1) die(); restartio(); unwind(); } /* not reached */ }
int main(int argc, char ** argv) { char * outname = "aout.rdf"; int moduleloaded = 0; options.verbose = 0; options.align = 16; options.warnUnresolved = 0; options.strip = 0; argc --, argv ++; if (argc == 0) usage(); while (argc && **argv == '-' && argv[0][1] != 'l') { switch(argv[0][1]) { case 'r': printf("ldrdf (linker for RDF files) version " LDRDF_VERSION "\n"); printf( _RDOFF_H "\n"); exit(0); case 'v': if (argv[0][2] == '=') { options.verbose = argv[0][3] - '0'; if (options.verbose < 0 || options.verbose > 9) { fprintf(stderr, "ldrdf: verbosity level must be a number" " between 0 and 9\n"); exit(1); } } else options.verbose++; break; case 'a': options.align = atoi(argv[1]); if (options.align <= 0) { fprintf(stderr, "ldrdf: -a expects a positive number argument\n"); exit(1); } argv++, argc--; break; case 's': options.strip = 1; break; case 'x': options.warnUnresolved = 1; break; case 'o': outname = argv[1]; argv++, argc--; break; default: usage(); } argv++, argc--; } if (options.verbose > 4) { printf("ldrdf invoked with options:\n"); printf(" section alignment: %d bytes\n", options.align); printf(" output name: `%s'\n", outname); if (options.strip) printf(" strip symbols\n"); if (options.warnUnresolved) printf(" warn about unresolved symbols\n"); printf("\n"); } symtab = symtabNew(); initsegments(); if (!symtab) { fprintf(stderr, "ldrdf: out of memory\n"); exit(1); } while (argc) { if (!strncmp(*argv, "-l", 2)) /* library */ add_library(*argv + 2); else { loadmodule(*argv); moduleloaded = 1; } argv++, argc--; } if (! moduleloaded) { printf("ldrdf: nothing to do. ldrdf -h for usage\n"); return 0; } search_libraries(); if (options.verbose > 2) { printf ("symbol table:\n"); symtabDump(symtab, stdout); } write_output(outname); if (errorcount > 0) exit(1); return 0; }