module_t *module_load(const char *Path, const char *File) { log_writef("Loading %s, path = %s.\n", File, Path); if (Path) return module_load_internal(Path, File, 0); //pthread_t Thread = pthread_self(); //printf("<thread @ %x> Entering module_load:%d(%s, %s)\n", Thread, __LINE__, Path, File); const char *Alias = path_join("library:", File); pthread_mutex_lock(LibRivaMutex); module_t *Module = stringtable_get(Modules, Alias); pthread_mutex_unlock(LibRivaMutex); if (Module) { module_reload(Module); //printf("Found module %s = 0x%x\n", Alias, Module); //printf("<thread @ %x> Leaving module_load:%d(%s, %s)\n", Thread, __LINE__, Path, File); return Module; }; for (path_node *Path = ModuleLibrary; Path; Path = Path->Next) { Module = module_load_internal(Path->Dir, File, Alias); if (Module) { //printf("<thread @ %x> Leaving module_load:%d(%s, %s)\n", Thread, __LINE__, Path, File); return Module; }; }; //printf("<thread @ %x> Leaving module_load:%d(%s, %s)\n", Thread, __LINE__, Path, File); return 0; };
module_provider_t *module_find_loaders(const char *Name, module_loader_t *Loader, int TimeStamp) { if (!Loader) return 0; if (Loader->TimeStamp > TimeStamp) { log_writef("Trying loader %s for %s.\n", Loader->Name, Name); void *LoadInfo = Loader->_Find(Name); if (LoadInfo) { log_writef("Found loader %s for %s.\n", Loader->Name, Name); module_provider_t *Provider = new(module_provider_t); Provider->Loader = Loader; Provider->LoadInfo = LoadInfo; Provider->HasImports = 0; Provider->Next = module_find_loaders(Name, Loader->Next, TimeStamp); return Provider; }; }; return module_find_loaders(Name, Loader->Next, TimeStamp); };
void log_file_open() { char *filename = malloc(64); time_t current_time = time(NULL); struct tm *now = localtime(¤t_time); sprintf(filename,"logs/nlpad-%.2d-%.2d-%.2d.log",now->tm_mday,now->tm_mon,now->tm_year); log_file = fopen(filename,"w"); log_writef(0,"Nonlogic Pad Logging Started\n"); }
void network_end_process(epdata_t *epd) { epd->status = STEP_WAIT; int i = 0; int response_code = 0; if(epd->iov[0].iov_base) { char *hl = strtok(epd->iov[0].iov_base, "\n"); if(hl) { hl = strtok(hl, " "); hl = strtok(NULL, " "); if(hl) { response_code = atoi(hl); } } } free(epd->iov[0].iov_base); epd->iov[0].iov_base = NULL; for(i = 0; i < epd->iov_buf_count; i++) { free(epd->iov[i].iov_base); epd->iov[i].iov_base = NULL; epd->iov[i].iov_len = 0; } epd->iov_buf_count = 0; long ttime = longtime(); if(ACCESS_LOG) log_writef(ACCESS_LOG, "%s - - [%s] %s \"%s %s %s\" %d %d %d \"%s\" \"%s\" %.3f\n", inet_ntoa(epd->client_addr), now_lc, epd->host ? epd->host : "-", epd->method ? epd->method : "-", epd->uri ? epd->uri : "/", epd->http_ver ? epd->http_ver : "-", response_code, epd->response_content_length, epd->response_content_length - epd->response_header_length, epd->referer ? epd->referer : "-", epd->user_agent ? epd->user_agent : "-", (float)(ttime - epd->start_time) / 1000); if(epd->keepalive == 1 && !check_process_for_exit()) { update_timeout(epd->timeout_ptr, STEP_WAIT_TIMEOUT); free_epd_request(epd); } else { close_client(epd); return; } }
void module_add_directory(const char *Dir) { Dir = path_fixup(Dir); if (Dir) { path_node *Node = new(path_node); Node->Dir = path_fixup(Dir); Node->Next = ModuleLibrary; ModuleLibrary = Node; log_writef("Adding %s to library search path.\n", Node->Dir); } };
void module_add_loader(const char *Name, int Priority, module_find_func FindFunc, module_load_func LoadFunc) { log_writef("Adding loader %s with priority %d.\n", Name, Priority); pthread_mutex_lock(LibRivaMutex); module_loader_t *Node = new(module_loader_t); Node->Name = Name; Node->_Find = FindFunc; Node->Load = LoadFunc; Node->Priority = Priority; Node->TimeStamp = ++ModuleTimeStamp; module_loader_t **Slot = &ModuleLoaders; while (Slot[0] && (Slot[0]->Priority >= Priority)) Slot = &(Slot[0]->Next); Node->Next = Slot[0]; Slot[0] = Node; pthread_mutex_unlock(LibRivaMutex); };