Ejemplo n.º 1
0
int main(int argc, char *argv[]) {
    int c;
    int dump_flags = 0;
    char *filename = DEFAULT_FILE;
    
    while ((c=getopt(argc, argv, "hvf:elo")) != EOF) {
	switch (c) {
	case 'h':
	case 'v': usage(argv[0]); exit(0);
	case 'f': filename = optarg; break;
	case 'e': dump_flags |= VMAD_DUMP_EXEC; break;
	case 'l': dump_flags |= VMAD_DUMP_LIBS; break;
	case 'o': dump_flags |= VMAD_DUMP_OTHER; break;
	default: exit(1);
	}
    }

    while (1) {
	int r;
	printf("Doing vmadump(\"%s\", 0x%x)=", filename, dump_flags); fflush(stdout);
	r = do_dump(filename, dump_flags);
	if (r > 0) {
	    printf("%d\n", r);
	    printf("Doing vmaundump(\"%s\")\n", filename);
	    fflush(stdout);
	    do_undump(filename);
	    /* not reached */
	}
	close(3); /* hack to deal with the lack of close_on_exec */
    }
}
Ejemplo n.º 2
0
static void doit(int undump, char* filename)
{
 FILE* f= (filename==NULL) ? stdin : efopen(filename, undump ? "rb" : "r");
 ZIO z;
 char source[255+2];			/* +2 for '@' and '\0' */
 luaL_filesource(source,filename,sizeof(source));
 zFopen(&z,f,source);
 if (verbose) fprintf(stderr,"%s\n",source+1);
 if (undump) do_undump(&z); else do_compile(&z);
 if (f!=stdin) fclose(f);
}
Ejemplo n.º 3
0
Archivo: luac.c Proyecto: jeske/hz
static void doit(int undump, char* filename)
{
    FILE* f= (filename==NULL) ? stdin : efopen(filename, undump ? "rb" : "r");
    ZIO z;
    if (filename==NULL) filename="(stdin)";
    zFopen(&z,f,filename);
    if (verbose) fprintf(stderr,"%s\n",filename);
    if (undump) do_undump(&z);
    else do_compile(&z);
    if (f!=stdin) fclose(f);
}