⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loaddll

📁 EPIC IRC客户端。来源于IRCII客户端但做了很多性能和功能的优化。
💻
字号:
#ifdef WANT_DLL#ifdef NO_DLFCN_H#   include "../compat/dlfcn.h"#else#if defined(__osf1__)#include <loader.h>#elif defined(HPUX)#include <dl.h>#else#   include <dlfcn.h>#endif#endif#ifndef RTLD_NOW#   define RTLD_NOW 1#endif#ifndef RTLD_GLOBAL#   define RTLD_GLOBAL 0#endifextern IrcCommandDll *dll_commands;typedef int (Irc_PackageInitProc)  _((IrcCommandDll **interp));typedef struct _package_installed {	struct _package_installed *next;	char	*name;} Packages;           Packages *install_pack = NULL;                                             void dll_load _((char *command, char *args, char *subargs)){#if defined(__osf__)  /*	OSF /1 1.0/1.1/1.2 and related systems */ldr_module_t lm;#elif defined(HPUX)  /* 	HP machines */	shl_t handle;#else		     /*		linux SunOS AIX etc */void *handle = NULL;#endif    char *filename = NULL;Irc_PackageInitProc *proc1Ptr;char *p, *procname = NULL;int code = 0;	if (command)	{		if (install_pack)		{			Packages *pkg = install_pack;			bitchsay("DLL packages installed");			for ( ; pkg; pkg = pkg->next)				put_it("DLL %s", pkg->name);		}		else			bitchsay("No dll's loaded");		return;	}	if (!args || !*args)	{		userage("LoadDll", "filename.so");		return;	}	filename = next_arg(args, &args);#if defined(__osf__)	if ((lm = (Tcl_PackageInitProc *) load(fileName, LDR_NOFLAGS)) == LDR_NULL_MODULE)	{		return;	}       #elif defined(HPUX)	if ((handle = shl_load(filename, BIND_IMMEDIATE, 0L)) == NULL)	{		return;	}	#else	handle = dlopen(filename, RTLD_NOW | RTLD_GLOBAL);	if (handle == NULL)	{		bitchsay("couldn't load file: %s %s", filename, dlerror());		return;	}#endif	if ((p = strrchr(filename, '/')))			p++;	else		p = filename;	procname  = m_strdup(p);	if ((p = strchr(procname, '.')))		*p = 0;	p = procname;	*p = toupper(*p);	p++;	while (*p)	{		*p = tolower(*p++);	}	malloc_strcat(&procname, "_Init");	if (!procname)		return;	if (!find_in_list((List **)&install_pack, procname, 0))	{	#if defined(__osf__)		/* OSF1 */		*proc1Ptr = ldr_lookup_package(pkg, procname);		code = (proc1Ptr)(&dll_commands);#elif defined(HPUX)		/* HPUX */		if (shl_findsym(&handle, procname, (short) TYPE_PROCEDURE, (void *) proc1Ptr))			code = (proc1Ptr)(&dll_commands);#else		if (!(proc1Ptr = (Irc_PackageInitProc *) dlsym(handle, (char *) procname)))			bitchsay("UnSuccessful load");		else			code = (proc1Ptr)(&dll_commands);#endif		if (!code && proc1Ptr)		{			Packages *new;			new = (Packages *) new_malloc(sizeof(Packages));			new->name = m_strdup(procname);			add_to_list((List **)&install_pack, (List *)new);		}		else if (code)			bitchsay("Error initiliziing dll");	}	else		bitchsay("Package Already installed");	new_free(&procname);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -