Public feed
#601497
void* ScriptThread(void *data){int abc=I_Script;char *p=NULL;p=(char*)malloc(256);int command;char pp[128];strcpy(p,((char*)data)); strcpy(pp,p); sscanf(pp,"%d %s",&command,pp); int tmp2 = command; Scripts=(script*)realloc(Scripts, (num_scripts+1)*sizeof(script)); ++num_scripts; int i=0; char tmp[128]; sprintf(tmp,"./%d.so",tmp2); void* handle = dlopen(tmp, RTLD_LAZY); if (!handle) { printf("Couldn't Open\n"); return 0; } // load the symbol typedef int (*main_t)(int); // reset errors dlerror(); main_t hello = (main_t) dlsym(handle, "main"); const char *dlsym_error = dlerror(); if (dlsym_error) { printf("Error:%s\n",dlsym_error); dlclose(handle); return 0; } Scripts[num_scripts].Snum=tmp2; Scripts[num_scripts].Inum=I_Script; if(strcmp(pp,"SERVER")==0) Scripts[num_scripts].player = -2; else for(int a = 0; a<=num_players;a++){ if(strcmp(pp,players[a].name)==0){ Scripts[num_scripts].player = players[a].Inum; break; } } hello(Scripts[num_scripts].Inum); dlclose(handle); for(i=0;i<=num_scripts;i++){ if(Scripts[i].Inum == abc){ break; } } num_scripts--; if(num_scripts>i) memmove(&Scripts[i], &Scripts[i+1], (num_scripts-i)*sizeof(script)); Scripts=(script*)realloc(Scripts, num_scripts*sizeof(script)); I_Script++; free(data); return 0;}