Exemplo n.º 1
0
Arquivo: module.c Projeto: wrapl/wrapl
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;
};
Exemplo n.º 2
0
Arquivo: module.c Projeto: wrapl/wrapl
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);
};
Exemplo n.º 3
0
void log_file_open()
{
	char *filename = malloc(64);
	time_t current_time = time(NULL);
	struct tm *now = localtime(&current_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");
}
Exemplo n.º 4
0
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;
    }
}
Exemplo n.º 5
0
Arquivo: module.c Projeto: wrapl/wrapl
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);
	}
};
Exemplo n.º 6
0
Arquivo: module.c Projeto: wrapl/wrapl
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);
};