您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ DSOerr函数代码示例

51自学网 2021-06-01 20:24:08
  C++
这篇教程C++ DSOerr函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中DSOerr函数的典型用法代码示例。如果您正苦于以下问题:C++ DSOerr函数的具体用法?C++ DSOerr怎么用?C++ DSOerr使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了DSOerr函数的27个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: dlfcn_load

static int dlfcn_load(DSO *dso)	{	void *ptr = NULL;	/* See applicable comments in dso_dl.c */	char *filename = DSO_convert_filename(dso, NULL);	int flags = DLOPEN_FLAG;	if(filename == NULL)		{		DSOerr(DSO_F_DLFCN_LOAD,DSO_R_NO_FILENAME);		goto err;		}#ifdef RTLD_GLOBAL	if (dso->flags & DSO_FLAG_GLOBAL_SYMBOLS)		flags |= RTLD_GLOBAL;#endif	ptr = dlopen(filename, flags);	if(ptr == NULL)		{		DSOerr(DSO_F_DLFCN_LOAD,DSO_R_LOAD_FAILED);		ERR_add_error_data(4, "filename(", filename, "): ", dlerror());		goto err;		}	if(!sk_void_push(dso->meth_data, (char *)ptr))		{		DSOerr(DSO_F_DLFCN_LOAD,DSO_R_STACK_ERROR);		goto err;		}	/* Success */	dso->loaded_filename = filename;	return(1);err:	/* Cleanup! */	if(filename != NULL)		OPENSSL_free(filename);	if(ptr != NULL)		dlclose(ptr);	return(0);}
开发者ID:Cpasjuste,项目名称:platform_external_openssl,代码行数:40,


示例2: dl_load

static int dl_load(DSO *dso){    shl_t ptr = NULL;    /*     * We don't do any fancy retries or anything, just take the method's (or     * DSO's if it has the callback set) best translation of the     * platform-independant filename and try once with that.     */    char *filename = DSO_convert_filename(dso, NULL);    if (filename == NULL) {        DSOerr(DSO_F_DL_LOAD, DSO_R_NO_FILENAME);        goto err;    }    ptr = shl_load(filename, BIND_IMMEDIATE |                   (dso->flags & DSO_FLAG_NO_NAME_TRANSLATION ? 0 :                    DYNAMIC_PATH), 0L);    if (ptr == NULL) {        DSOerr(DSO_F_DL_LOAD, DSO_R_LOAD_FAILED);        ERR_add_error_data(4, "filename(", filename, "): ", strerror(errno));        goto err;    }    if (!sk_push(dso->meth_data, (char *)ptr)) {        DSOerr(DSO_F_DL_LOAD, DSO_R_STACK_ERROR);        goto err;    }    /*     * Success, stick the converted filename we've loaded under into the DSO     * (it also serves as the indicator that we are currently loaded).     */    dso->loaded_filename = filename;    return (1); err:    /* Cleanup! */    if (filename != NULL)        OPENSSL_free(filename);    if (ptr != NULL)        shl_unload(ptr);    return (0);}
开发者ID:03050903,项目名称:godot,代码行数:40,


示例3: DSO_set_filename

int DSO_set_filename(DSO *dso, const char *filename){    char *copied;    if ((dso == NULL) || (filename == NULL)) {        DSOerr(DSO_F_DSO_SET_FILENAME, ERR_R_PASSED_NULL_PARAMETER);        return (0);    }    if (dso->loaded_filename) {        DSOerr(DSO_F_DSO_SET_FILENAME, DSO_R_DSO_ALREADY_LOADED);        return (0);    }    /* We'll duplicate filename */    copied = strdup(filename);    if (copied == NULL) {        DSOerr(DSO_F_DSO_SET_FILENAME, ERR_R_MALLOC_FAILURE);        return (0);    }    free(dso->filename);    dso->filename = copied;    return (1);}
开发者ID:vigortls,项目名称:vigortls,代码行数:22,


示例4: win32_load

static int win32_load(DSO *dso){    HINSTANCE h = NULL, *p = NULL;    /* See applicable comments from dso_dl.c */    char *filename = DSO_convert_filename(dso, NULL);    if (filename == NULL) {        DSOerr(DSO_F_WIN32_LOAD, DSO_R_NO_FILENAME);        goto err;    }    h = LoadLibraryA(filename);    if (h == NULL) {        DSOerr(DSO_F_WIN32_LOAD, DSO_R_LOAD_FAILED);        ERR_add_error_data(3, "filename(", filename, ")");        goto err;    }    p = (HINSTANCE *) OPENSSL_malloc(sizeof(HINSTANCE));    if (p == NULL) {        DSOerr(DSO_F_WIN32_LOAD, ERR_R_MALLOC_FAILURE);        goto err;    }    *p = h;    if (!sk_void_push(dso->meth_data, p)) {        DSOerr(DSO_F_WIN32_LOAD, DSO_R_STACK_ERROR);        goto err;    }    /* Success */    dso->loaded_filename = filename;    return (1); err:    /* Cleanup ! */    if (filename != NULL)        OPENSSL_free(filename);    if (p != NULL)        OPENSSL_free(p);    if (h != NULL)        FreeLibrary(h);    return (0);}
开发者ID:Adallom,项目名称:openssl,代码行数:39,


示例5: dlfcn_unload

static intdlfcn_unload(DSO *dso){	void *ptr;	if (dso == NULL) {		DSOerr(DSO_F_DLFCN_UNLOAD, ERR_R_PASSED_NULL_PARAMETER);		return (0);	}	if (sk_void_num(dso->meth_data) < 1)		return (1);	ptr = sk_void_pop(dso->meth_data);	if (ptr == NULL) {		DSOerr(DSO_F_DLFCN_UNLOAD, DSO_R_NULL_HANDLE);		/* Should push the value back onto the stack in		 * case of a retry. */		sk_void_push(dso->meth_data, ptr);		return (0);	}	/* For now I'm not aware of any errors associated with dlclose() */	dlclose(ptr);	return (1);}
开发者ID:Basskrapfen,项目名称:openbsd,代码行数:22,


示例6: DSOerr

void *DSO_bind_var(DSO *dso, const char *symname)	{	void *ret = NULL;	if((dso == NULL) || (symname == NULL))		{		DSOerr(DSO_F_DSO_BIND_VAR,ERR_R_PASSED_NULL_PARAMETER);		return(NULL);		}	if(dso->meth->dso_bind_var == NULL)		{		DSOerr(DSO_F_DSO_BIND_VAR,DSO_R_UNSUPPORTED);		return(NULL);		}	if((ret = dso->meth->dso_bind_var(dso, symname)) == NULL)		{		DSOerr(DSO_F_DSO_BIND_VAR,DSO_R_SYM_FAILURE);		return(NULL);		}	/* Success */	return(ret);	}
开发者ID:CoryXie,项目名称:BarrelfishOS,代码行数:22,


示例7: DSO_bind_func

DSO_FUNC_TYPE DSO_bind_func(DSO *dso, const char *symname)	{	DSO_FUNC_TYPE ret = NULL;	if((dso == NULL) || (symname == NULL))		{		DSOerr(DSO_F_DSO_BIND_FUNC,ERR_R_PASSED_NULL_PARAMETER);		return(NULL);		}	if(dso->meth->dso_bind_func == NULL)		{		DSOerr(DSO_F_DSO_BIND_FUNC,DSO_R_UNSUPPORTED);		return(NULL);		}	if((ret = dso->meth->dso_bind_func(dso, symname)) == NULL)		{		DSOerr(DSO_F_DSO_BIND_FUNC,DSO_R_SYM_FAILURE);		return(NULL);		}	/* Success */	return(ret);	}
开发者ID:CoryXie,项目名称:BarrelfishOS,代码行数:22,


示例8: DSO_set_name_converter

int DSO_set_name_converter(DSO *dso, DSO_NAME_CONVERTER_FUNC cb,                           DSO_NAME_CONVERTER_FUNC *oldcb){    if (dso == NULL) {        DSOerr(DSO_F_DSO_SET_NAME_CONVERTER,               ERR_R_PASSED_NULL_PARAMETER);        return (0);    }    if (oldcb)        *oldcb = dso->name_converter;    dso->name_converter = cb;    return (1);}
开发者ID:vigortls,项目名称:vigortls,代码行数:13,


示例9: dl_unload

static int dl_unload(DSO *dso){    shl_t ptr;    if (dso == NULL) {        DSOerr(DSO_F_DL_UNLOAD, ERR_R_PASSED_NULL_PARAMETER);        return (0);    }    if (sk_num(dso->meth_data) < 1)        return (1);    /* Is this statement legal? */    ptr = (shl_t) sk_pop(dso->meth_data);    if (ptr == NULL) {        DSOerr(DSO_F_DL_UNLOAD, DSO_R_NULL_HANDLE);        /*         * Should push the value back onto the stack in case of a retry.         */        sk_push(dso->meth_data, (char *)ptr);        return (0);    }    shl_unload(ptr);    return (1);}
开发者ID:1564143452,项目名称:kbengine,代码行数:22,


示例10: DSO_new_method

DSO *DSO_load(DSO *dso, const char *filename, DSO_METHOD *meth, int flags){    DSO *ret;    int allocated = 0;    if (dso == NULL) {        ret = DSO_new_method(meth);        if (ret == NULL) {            DSOerr(DSO_F_DSO_LOAD, ERR_R_MALLOC_FAILURE);            goto err;        }        allocated = 1;        /* Pass the provided flags to the new DSO object */        if (DSO_ctrl(ret, DSO_CTRL_SET_FLAGS, flags, NULL) < 0) {            DSOerr(DSO_F_DSO_LOAD, DSO_R_CTRL_FAILED);            goto err;        }    } else        ret = dso;    /* Don't load if we're currently already loaded */    if (ret->filename != NULL) {        DSOerr(DSO_F_DSO_LOAD, DSO_R_DSO_ALREADY_LOADED);        goto err;    }    /*     * filename can only be NULL if we were passed a dso that already has one     * set.     */    if (filename != NULL)        if (!DSO_set_filename(ret, filename)) {            DSOerr(DSO_F_DSO_LOAD, DSO_R_SET_FILENAME_FAILED);            goto err;        }    filename = ret->filename;    if (filename == NULL) {        DSOerr(DSO_F_DSO_LOAD, DSO_R_NO_FILENAME);        goto err;    }    if (ret->meth->dso_load == NULL) {        DSOerr(DSO_F_DSO_LOAD, DSO_R_UNSUPPORTED);        goto err;    }    if (!ret->meth->dso_load(ret)) {        DSOerr(DSO_F_DSO_LOAD, DSO_R_LOAD_FAILED);        goto err;    }    /* Load succeeded */    return (ret); err:    if (allocated)        DSO_free(ret);    return (NULL);}
开发者ID:benlaurie,项目名称:openssl-old-2,代码行数:53,


示例11: dl_ctrl

static long dl_ctrl(DSO *dso, int cmd, long larg, void *parg)	{	if(dso == NULL)		{		DSOerr(DSO_F_DL_CTRL,ERR_R_PASSED_NULL_PARAMETER);		return(-1);		}	switch(cmd)		{	case DSO_CTRL_GET_FLAGS:		return dso->flags;	case DSO_CTRL_SET_FLAGS:		dso->flags = larg;		return(0);	case DSO_CTRL_OR_FLAGS:		dso->flags |= larg;		return(0);	default:		break;		}	DSOerr(DSO_F_DL_CTRL,DSO_R_UNKNOWN_COMMAND);	return(-1);	}
开发者ID:aosm,项目名称:OpenSSL096,代码行数:23,


示例12: DSO_up_ref

int DSO_up_ref(DSO *dso){    int i;    if (dso == NULL) {        DSOerr(DSO_F_DSO_UP_REF, ERR_R_PASSED_NULL_PARAMETER);        return 0;    }    if (CRYPTO_atomic_add(&dso->references, 1, &i, dso->lock) <= 0)        return 0;    return ((i > 1) ? 1 : 0);}
开发者ID:vigortls,项目名称:vigortls,代码行数:14,


示例13: strlen

static char *dlfcn_name_converter(DSO *dso, const char *filename)	{	char *translated;	int len, rsize, transform;	len = strlen(filename);	rsize = len + 1;	transform = (strstr(filename, "/") == NULL);	if(transform)		{#ifndef SYMBIAN				/* We will convert this to "%s.so" or "lib%s.so" */		rsize += 3;	/* The length of ".so" */		if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)			rsize += 3; /* The length of "lib" */#else	/* We will convert this to "%s.dll" or "lib%s.dll" */		rsize += 4;	/* The length of ".dll" */		if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)			rsize += 3; /* The length of "lib" */#endif					}	translated = OPENSSL_malloc(rsize);	if(translated == NULL)		{		DSOerr(DSO_F_DLFCN_NAME_CONVERTER,				DSO_R_NAME_TRANSLATION_FAILED);		return(NULL);		}	if(transform)		{#ifndef SYMBIAN				if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)			sprintf(translated, "lib%s.so", filename);		else			sprintf(translated, "%s.so", filename);#else		if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)			sprintf(translated, "lib%s.dll", filename);		else			sprintf(translated, "%s.dll", filename);#endif						}	else		sprintf(translated, "%s", filename);	return(translated);	}
开发者ID:cdaffara,项目名称:symbiandump-os2,代码行数:49,


示例14: DSO_free

int DSO_free(DSO *dso){    int i;    if (dso == NULL)        return (1);    i = CRYPTO_add(&dso->references, -1, CRYPTO_LOCK_DSO);#ifdef REF_PRINT    REF_PRINT("DSO", dso);#endif    if (i > 0)        return (1);#ifdef REF_CHECK    if (i < 0) {        fprintf(stderr, "DSO_free, bad reference count/n");        abort();    }#endif    if ((dso->meth->dso_unload != NULL) && !dso->meth->dso_unload(dso)) {        DSOerr(DSO_F_DSO_FREE, DSO_R_UNLOAD_FAILED);        return (0);    }    if ((dso->meth->finish != NULL) && !dso->meth->finish(dso)) {        DSOerr(DSO_F_DSO_FREE, DSO_R_FINISH_FAILED);        return (0);    }    sk_void_free(dso->meth_data);    OPENSSL_free(dso->filename);    OPENSSL_free(dso->loaded_filename);    OPENSSL_free(dso);    return (1);}
开发者ID:benlaurie,项目名称:openssl-old-2,代码行数:36,


示例15: DSO_METHOD_openssl

DSO *DSO_new_method(DSO_METHOD *meth)	{	DSO *ret;	if(default_DSO_meth == NULL)		/* We default to DSO_METH_openssl() which in turn defaults		 * to stealing the "best available" method. Will fallback		 * to DSO_METH_null() in the worst case. */		default_DSO_meth = DSO_METHOD_openssl();	ret = (DSO *)OPENSSL_malloc(sizeof(DSO));	if(ret == NULL)		{		DSOerr(DSO_F_DSO_NEW_METHOD,ERR_R_MALLOC_FAILURE);		return(NULL);		}	memset(ret, 0, sizeof(DSO));	ret->meth_data = sk_void_new_null();	if(ret->meth_data == NULL)		{		/* sk_new doesn't generate any errors so we do */		DSOerr(DSO_F_DSO_NEW_METHOD,ERR_R_MALLOC_FAILURE);		OPENSSL_free(ret);		return(NULL);		}	if(meth == NULL)		ret->meth = default_DSO_meth;	else		ret->meth = meth;	ret->references = 1;	if((ret->meth->init != NULL) && !ret->meth->init(ret))		{		OPENSSL_free(ret);		ret=NULL;		}	return(ret);	}
开发者ID:CoryXie,项目名称:BarrelfishOS,代码行数:36,


示例16: DSO_up_ref

int DSO_up_ref(DSO *dso){    int i;    if (dso == NULL) {        DSOerr(DSO_F_DSO_UP_REF, ERR_R_PASSED_NULL_PARAMETER);        return 0;    }    if (CRYPTO_UP_REF(&dso->references, &i, dso->lock) <= 0)        return 0;    REF_PRINT_COUNT("DSO", r);    REF_ASSERT_ISNT(i < 2);    return ((i > 1) ? 1 : 0);}
开发者ID:Castaglia,项目名称:openssl,代码行数:16,


示例17: DSOerr

char *DSO_merge(DSO *dso, const char *filespec1, const char *filespec2){    char *result = NULL;    if (dso == NULL || filespec1 == NULL) {        DSOerr(DSO_F_DSO_MERGE, ERR_R_PASSED_NULL_PARAMETER);        return (NULL);    }    if ((dso->flags & DSO_FLAG_NO_NAME_TRANSLATION) == 0) {        if (dso->merger != NULL)            result = dso->merger(dso, filespec1, filespec2);        else if (dso->meth->dso_merger != NULL)            result = dso->meth->dso_merger(dso, filespec1, filespec2);    }    return (result);}
开发者ID:benlaurie,项目名称:openssl-old-2,代码行数:16,


示例18: dlfcn_name_converter

static char *dlfcn_name_converter(DSO *dso, const char *filename){	char *translated;	int ret;	if (strchr(filename, '/') == NULL) {		/* Bare name, so convert to "%s.so" or "lib%s.so" */		if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)			ret = asprintf(&translated, "lib%s" DSO_ext, filename);		else			ret = asprintf(&translated, "%s" DSO_ext, filename);		if (ret == -1)			translated = NULL;	} else {		/* Full path, so just duplicate it */		translated = strdup(filename);	}	if (translated == NULL)		DSOerr(DSO_F_DLFCN_NAME_CONVERTER,		    DSO_R_NAME_TRANSLATION_FAILED);	return (translated);}
开发者ID:Basskrapfen,项目名称:openbsd,代码行数:24,


示例19: DSOerr

static char *dlfcn_merger(DSO *dso, const char *filespec1,	const char *filespec2)	{	char *merged;	size_t len;	if(!filespec1 && !filespec2)		{		DSOerr(DSO_F_DLFCN_MERGER,				ERR_R_PASSED_NULL_PARAMETER);		return(NULL);		}	/* If the first file specification is a rooted path, it rules.	   same goes if the second file specification is missing. */	if (!filespec2 || (filespec1 != NULL && filespec1[0] == '/'))		{		len = strlen(filespec1) + 1;		merged = OPENSSL_malloc(len);		if(!merged)			{			DSOerr(DSO_F_DLFCN_MERGER, ERR_R_MALLOC_FAILURE);			return(NULL);			}		strlcpy(merged, filespec1, len);		}	/* If the first file specification is missing, the second one rules. */	else if (!filespec1)		{		len = strlen(filespec2) + 1;		merged = OPENSSL_malloc(strlen(filespec2) + 1);		if(!merged)			{			DSOerr(DSO_F_DLFCN_MERGER,				ERR_R_MALLOC_FAILURE);			return(NULL);			}		strlcpy(merged, filespec2, len);		}	else		/* This part isn't as trivial as it looks.  It assumes that		   the second file specification really is a directory, and		   makes no checks whatsoever.  Therefore, the result becomes		   the concatenation of filespec2 followed by a slash followed		   by filespec1. */		{		int spec2len, len;		spec2len = strlen(filespec2);		len = spec2len + (filespec1 ? strlen(filespec1) : 0);		if(filespec2 && filespec2[spec2len - 1] == '/')			{			spec2len--;			len--;			}		merged = OPENSSL_malloc(len + 2);		if(!merged)			{			DSOerr(DSO_F_DLFCN_MERGER,				ERR_R_MALLOC_FAILURE);			return(NULL);			}		strlcpy(merged, filespec2, len + 2);		merged[spec2len] = '/';		strlcpy(&merged[spec2len + 1], filespec1, len + 1 - spec2len);		}	return(merged);	}
开发者ID:sofuture,项目名称:bitrig,代码行数:68,


示例20: LoadLibrary

static void *win32_globallookup(const char *name)	{	HMODULE dll;	HANDLE hModuleSnap = INVALID_HANDLE_VALUE;	MODULEENTRY32 me32;	CREATETOOLHELP32SNAPSHOT create_snap;	CLOSETOOLHELP32SNAPSHOT  close_snap;	MODULE32 module_first, module_next;	FARPROC ret=NULL;	dll = LoadLibrary(TEXT(DLLNAME));	if (dll == NULL)		{		DSOerr(DSO_F_WIN32_GLOBALLOOKUP,DSO_R_UNSUPPORTED);		return NULL;		}	create_snap = (CREATETOOLHELP32SNAPSHOT)		GetProcAddress(dll,"CreateToolhelp32Snapshot");	if (create_snap == NULL)		{		FreeLibrary(dll);		DSOerr(DSO_F_WIN32_GLOBALLOOKUP,DSO_R_UNSUPPORTED);		return NULL;		}	/* We take the rest for granted... */#ifdef _WIN32_WCE	close_snap = (CLOSETOOLHELP32SNAPSHOT)		GetProcAddress(dll,"CloseToolhelp32Snapshot");#else	close_snap = (CLOSETOOLHELP32SNAPSHOT)CloseHandle;#endif	module_first = (MODULE32)GetProcAddress(dll,"Module32First");	module_next  = (MODULE32)GetProcAddress(dll,"Module32Next");	hModuleSnap = (*create_snap)(TH32CS_SNAPMODULE,0);	if( hModuleSnap == INVALID_HANDLE_VALUE )		{		FreeLibrary(dll);		DSOerr(DSO_F_WIN32_GLOBALLOOKUP,DSO_R_UNSUPPORTED);		return NULL;		}	me32.dwSize = sizeof(me32);	if (!(*module_first)(hModuleSnap,&me32))		{		(*close_snap)(hModuleSnap);		FreeLibrary(dll);		return NULL;		}	do	{		if ((ret = GetProcAddress(me32.hModule,name)))			{			(*close_snap)(hModuleSnap);			FreeLibrary(dll);			return ret;			}		} while((*module_next)(hModuleSnap,&me32));	(*close_snap)(hModuleSnap); 	FreeLibrary(dll);	return NULL;	}
开发者ID:AustinWise,项目名称:Netduino-Micro-Framework,代码行数:65,


示例21: vms_bind_sym

void vms_bind_sym(DSO *dso, const char *symname, void **sym){    DSO_VMS_INTERNAL *ptr;    int status;# if 0    int flags = (1 << 4);       /* LIB$M_FIS_MIXEDCASE, but this symbol isn't                                 * defined in VMS older than 7.0 or so */# else    int flags = 0;# endif    struct dsc$descriptor_s symname_dsc;/* Arrange 32-bit pointer to (copied) string storage, if needed. */# if __INITIAL_POINTER_SIZE == 64#  define SYMNAME symname_32p#  pragma pointer_size save#  pragma pointer_size 32    char *symname_32p;#  pragma pointer_size restore    char symname_32[NAMX_MAXRSS + 1];# else                          /* __INITIAL_POINTER_SIZE == 64 */#  define SYMNAME ((char *) symname)# endif                         /* __INITIAL_POINTER_SIZE == 64 [else] */    *sym = NULL;    if ((dso == NULL) || (symname == NULL)) {        DSOerr(DSO_F_VMS_BIND_SYM, ERR_R_PASSED_NULL_PARAMETER);        return;    }# if __INITIAL_POINTER_SIZE == 64    /* Copy the symbol name to storage with a 32-bit pointer. */    symname_32p = symname_32;    strcpy(symname_32p, symname);# endif                         /* __INITIAL_POINTER_SIZE == 64 [else] */    symname_dsc.dsc$w_length = strlen(SYMNAME);    symname_dsc.dsc$b_dtype = DSC$K_DTYPE_T;    symname_dsc.dsc$b_class = DSC$K_CLASS_S;    symname_dsc.dsc$a_pointer = SYMNAME;    if (sk_void_num(dso->meth_data) < 1) {        DSOerr(DSO_F_VMS_BIND_SYM, DSO_R_STACK_ERROR);        return;    }    ptr = (DSO_VMS_INTERNAL *)sk_void_value(dso->meth_data,                                            sk_void_num(dso->meth_data) - 1);    if (ptr == NULL) {        DSOerr(DSO_F_VMS_BIND_SYM, DSO_R_NULL_HANDLE);        return;    }    if (dso->flags & DSO_FLAG_UPCASE_SYMBOL)        flags = 0;    status = do_find_symbol(ptr, &symname_dsc, sym, flags);    if (!$VMS_STATUS_SUCCESS(status)) {        unsigned short length;        char errstring[257];        struct dsc$descriptor_s errstring_dsc;        errstring_dsc.dsc$w_length = sizeof(errstring);        errstring_dsc.dsc$b_dtype = DSC$K_DTYPE_T;        errstring_dsc.dsc$b_class = DSC$K_CLASS_S;        errstring_dsc.dsc$a_pointer = errstring;        *sym = NULL;        status = sys$getmsg(status, &length, &errstring_dsc, 1, 0);        if (!$VMS_STATUS_SUCCESS(status))            lib$signal(status); /* This is really bad.  Abort! */        else {            errstring[length] = '/0';            DSOerr(DSO_F_VMS_BIND_SYM, DSO_R_SYM_FAILURE);            if (ptr->imagename_dsc.dsc$w_length)                ERR_add_error_data(9,                                   "Symbol ", symname,                                   " in ", ptr->filename,                                   " (", ptr->imagename, ")",                                   ": ", errstring);            else                ERR_add_error_data(6,                                   "Symbol ", symname,                                   " in ", ptr->filename, ": ", errstring);        }        return;    }    return;}
开发者ID:Adallom,项目名称:openssl,代码行数:92,


示例22: DSOerr

static char *win32_merger(DSO *dso, const char *filespec1,                          const char *filespec2){    char *merged = NULL;    struct file_st *filespec1_split = NULL;    struct file_st *filespec2_split = NULL;    if (!filespec1 && !filespec2) {        DSOerr(DSO_F_WIN32_MERGER, ERR_R_PASSED_NULL_PARAMETER);        return (NULL);    }    if (!filespec2) {        merged = OPENSSL_malloc(strlen(filespec1) + 1);        if (!merged) {            DSOerr(DSO_F_WIN32_MERGER, ERR_R_MALLOC_FAILURE);            return (NULL);        }        strcpy(merged, filespec1);    } else if (!filespec1) {        merged = OPENSSL_malloc(strlen(filespec2) + 1);        if (!merged) {            DSOerr(DSO_F_WIN32_MERGER, ERR_R_MALLOC_FAILURE);            return (NULL);        }        strcpy(merged, filespec2);    } else {        filespec1_split = win32_splitter(dso, filespec1, 0);        if (!filespec1_split) {            DSOerr(DSO_F_WIN32_MERGER, ERR_R_MALLOC_FAILURE);            return (NULL);        }        filespec2_split = win32_splitter(dso, filespec2, 1);        if (!filespec2_split) {            DSOerr(DSO_F_WIN32_MERGER, ERR_R_MALLOC_FAILURE);            OPENSSL_free(filespec1_split);            return (NULL);        }        /* Fill in into filespec1_split */        if (!filespec1_split->node && !filespec1_split->device) {            filespec1_split->node = filespec2_split->node;            filespec1_split->nodelen = filespec2_split->nodelen;            filespec1_split->device = filespec2_split->device;            filespec1_split->devicelen = filespec2_split->devicelen;        }        if (!filespec1_split->dir) {            filespec1_split->dir = filespec2_split->dir;            filespec1_split->dirlen = filespec2_split->dirlen;        } else if (filespec1_split->dir[0] != '//'                   && filespec1_split->dir[0] != '/') {            filespec1_split->predir = filespec2_split->dir;            filespec1_split->predirlen = filespec2_split->dirlen;        }        if (!filespec1_split->file) {            filespec1_split->file = filespec2_split->file;            filespec1_split->filelen = filespec2_split->filelen;        }        merged = win32_joiner(dso, filespec1_split);    }    OPENSSL_free(filespec1_split);    OPENSSL_free(filespec2_split);    return (merged);}
开发者ID:crypto-org-ua,项目名称:openssl-ua,代码行数:64,


示例23: strlen

static char *vms_merger(DSO *dso, const char *filespec1, const char *filespec2)	{	int status;	int filespec1len, filespec2len;	struct FAB fab;#ifdef NAML$C_MAXRSS	struct NAML nam;	char esa[NAML$C_MAXRSS];#else	struct NAM nam;	char esa[NAM$C_MAXRSS];#endif	char *merged;	if (!filespec1) filespec1 = "";	if (!filespec2) filespec2 = "";	filespec1len = strlen(filespec1);	filespec2len = strlen(filespec2);	fab = cc$rms_fab;#ifdef NAML$C_MAXRSS	nam = cc$rms_naml;#else	nam = cc$rms_nam;#endif	fab.fab$l_fna = (char *)filespec1;	fab.fab$b_fns = filespec1len;	fab.fab$l_dna = (char *)filespec2;	fab.fab$b_dns = filespec2len;#ifdef NAML$C_MAXRSS	if (filespec1len > NAM$C_MAXRSS)		{		fab.fab$l_fna = 0;		fab.fab$b_fns = 0;		nam.naml$l_long_filename = (char *)filespec1;		nam.naml$l_long_filename_size = filespec1len;		}	if (filespec2len > NAM$C_MAXRSS)		{		fab.fab$l_dna = 0;		fab.fab$b_dns = 0;		nam.naml$l_long_defname = (char *)filespec2;		nam.naml$l_long_defname_size = filespec2len;		}	nam.naml$l_esa = esa;	nam.naml$b_ess = NAM$C_MAXRSS;	nam.naml$l_long_expand = esa;	nam.naml$l_long_expand_alloc = sizeof(esa);	nam.naml$b_nop = NAM$M_SYNCHK | NAM$M_PWD;	nam.naml$v_no_short_upcase = 1;	fab.fab$l_naml = &nam;#else	nam.nam$l_esa = esa;	nam.nam$b_ess = NAM$C_MAXRSS;	nam.nam$b_nop = NAM$M_SYNCHK | NAM$M_PWD;	fab.fab$l_nam = &nam;#endif	status = sys$parse(&fab, 0, 0);	if(!$VMS_STATUS_SUCCESS(status))		{		unsigned short length;		char errstring[257];		struct dsc$descriptor_s errstring_dsc;		errstring_dsc.dsc$w_length = sizeof(errstring);		errstring_dsc.dsc$b_dtype = DSC$K_DTYPE_T;		errstring_dsc.dsc$b_class = DSC$K_CLASS_S;		errstring_dsc.dsc$a_pointer = errstring;		status = sys$getmsg(status, &length, &errstring_dsc, 1, 0);		if (!$VMS_STATUS_SUCCESS(status))			lib$signal(status); /* This is really bad.  Abort!  */		else			{			errstring[length] = '/0';			DSOerr(DSO_F_VMS_MERGER,DSO_R_FAILURE);			ERR_add_error_data(7,					   "filespec /"", filespec1, "/", ",					   "defaults /"", filespec2, "/": ",					   errstring);			}		return(NULL);		}#ifdef NAML$C_MAXRSS	if (nam.naml$l_long_expand_size)		{		merged = OPENSSL_malloc(nam.naml$l_long_expand_size + 1);		if(!merged)			goto malloc_err;		strncpy(merged, nam.naml$l_long_expand,			nam.naml$l_long_expand_size);		merged[nam.naml$l_long_expand_size] = '/0';		}	else		{//.........这里部分代码省略.........
开发者ID:LucidOne,项目名称:Rovio,代码行数:101,


示例24: FILESPEC1

static char *vms_merger(DSO *dso, const char *filespec1,                        const char *filespec2){    int status;    int filespec1len, filespec2len;    struct FAB fab;    struct NAMX_STRUCT nam;    char esa[NAMX_MAXRSS + 1];    char *merged;/* Arrange 32-bit pointer to (copied) string storage, if needed. */# if __INITIAL_POINTER_SIZE == 64#  define FILESPEC1 filespec1_32p;#  define FILESPEC2 filespec2_32p;#  pragma pointer_size save#  pragma pointer_size 32    char *filespec1_32p;    char *filespec2_32p;#  pragma pointer_size restore    char filespec1_32[NAMX_MAXRSS + 1];    char filespec2_32[NAMX_MAXRSS + 1];# else                          /* __INITIAL_POINTER_SIZE == 64 */#  define FILESPEC1 ((char *) filespec1)#  define FILESPEC2 ((char *) filespec2)# endif                         /* __INITIAL_POINTER_SIZE == 64 [else] */    if (!filespec1)        filespec1 = "";    if (!filespec2)        filespec2 = "";    filespec1len = strlen(filespec1);    filespec2len = strlen(filespec2);# if __INITIAL_POINTER_SIZE == 64    /* Copy the file names to storage with a 32-bit pointer. */    filespec1_32p = filespec1_32;    filespec2_32p = filespec2_32;    strcpy(filespec1_32p, filespec1);    strcpy(filespec2_32p, filespec2);# endif                         /* __INITIAL_POINTER_SIZE == 64 [else] */    fab = cc$rms_fab;    nam = CC_RMS_NAMX;    FAB_OR_NAML(fab, nam).FAB_OR_NAML_FNA = FILESPEC1;    FAB_OR_NAML(fab, nam).FAB_OR_NAML_FNS = filespec1len;    FAB_OR_NAML(fab, nam).FAB_OR_NAML_DNA = FILESPEC2;    FAB_OR_NAML(fab, nam).FAB_OR_NAML_DNS = filespec2len;    NAMX_DNA_FNA_SET(fab)        nam.NAMX_ESA = esa;    nam.NAMX_ESS = NAMX_MAXRSS;    nam.NAMX_NOP = NAM$M_SYNCHK | NAM$M_PWD;    SET_NAMX_NO_SHORT_UPCASE(nam);    fab.FAB_NAMX = &nam;    status = sys$parse(&fab, 0, 0);    if (!$VMS_STATUS_SUCCESS(status)) {        unsigned short length;        char errstring[257];        struct dsc$descriptor_s errstring_dsc;        errstring_dsc.dsc$w_length = sizeof(errstring);        errstring_dsc.dsc$b_dtype = DSC$K_DTYPE_T;        errstring_dsc.dsc$b_class = DSC$K_CLASS_S;        errstring_dsc.dsc$a_pointer = errstring;        status = sys$getmsg(status, &length, &errstring_dsc, 1, 0);        if (!$VMS_STATUS_SUCCESS(status))            lib$signal(status); /* This is really bad.  Abort! */        else {            errstring[length] = '/0';            DSOerr(DSO_F_VMS_MERGER, DSO_R_FAILURE);            ERR_add_error_data(7,                               "filespec /"", filespec1, "/", ",                               "defaults /"", filespec2, "/": ", errstring);        }        return (NULL);    }    merged = OPENSSL_malloc(nam.NAMX_ESL + 1);    if (!merged)        goto malloc_err;    strncpy(merged, nam.NAMX_ESA, nam.NAMX_ESL);    merged[nam.NAMX_ESL] = '/0';    return (merged); malloc_err:    DSOerr(DSO_F_VMS_MERGER, ERR_R_MALLOC_FAILURE);}
开发者ID:Adallom,项目名称:openssl,代码行数:93,


示例25: win32_pathbyaddr

static int win32_pathbyaddr(void *addr, char *path, int sz){    HMODULE dll;    HANDLE hModuleSnap = INVALID_HANDLE_VALUE;    MODULEENTRY32 me32;    CREATETOOLHELP32SNAPSHOT create_snap;    CLOSETOOLHELP32SNAPSHOT close_snap;    MODULE32 module_first, module_next;    if (addr == NULL) {        union {            int (*f) (void *, char *, int);            void *p;        } t = {            win32_pathbyaddr        };        addr = t.p;    }    dll = LoadLibrary(TEXT(DLLNAME));    if (dll == NULL) {        DSOerr(DSO_F_WIN32_PATHBYADDR, DSO_R_UNSUPPORTED);        return -1;    }    create_snap = (CREATETOOLHELP32SNAPSHOT)        GetProcAddress(dll, "CreateToolhelp32Snapshot");    if (create_snap == NULL) {        FreeLibrary(dll);        DSOerr(DSO_F_WIN32_PATHBYADDR, DSO_R_UNSUPPORTED);        return -1;    }    /* We take the rest for granted... */# ifdef _WIN32_WCE    close_snap = (CLOSETOOLHELP32SNAPSHOT)        GetProcAddress(dll, "CloseToolhelp32Snapshot");# else    close_snap = (CLOSETOOLHELP32SNAPSHOT) CloseHandle;# endif    module_first = (MODULE32) GetProcAddress(dll, "Module32First");    module_next = (MODULE32) GetProcAddress(dll, "Module32Next");    hModuleSnap = (*create_snap) (TH32CS_SNAPMODULE, 0);    if (hModuleSnap == INVALID_HANDLE_VALUE) {        FreeLibrary(dll);        DSOerr(DSO_F_WIN32_PATHBYADDR, DSO_R_UNSUPPORTED);        return -1;    }    me32.dwSize = sizeof(me32);    if (!(*module_first) (hModuleSnap, &me32)) {        (*close_snap) (hModuleSnap);        FreeLibrary(dll);        DSOerr(DSO_F_WIN32_PATHBYADDR, DSO_R_FAILURE);        return -1;    }    do {        if ((BYTE *) addr >= me32.modBaseAddr &&            (BYTE *) addr < me32.modBaseAddr + me32.modBaseSize) {            (*close_snap) (hModuleSnap);            FreeLibrary(dll);# ifdef _WIN32_WCE#  if _WIN32_WCE >= 101            return WideCharToMultiByte(CP_ACP, 0, me32.szExePath, -1,                                       path, sz, NULL, NULL);#  else            {                int i, len = (int)wcslen(me32.szExePath);                if (sz <= 0)                    return len + 1;                if (len >= sz)                    len = sz - 1;                for (i = 0; i < len; i++)                    path[i] = (char)me32.szExePath[i];                path[len++] = 0;                return len;            }#  endif# else            {                int len = (int)strlen(me32.szExePath);                if (sz <= 0)                    return len + 1;                if (len >= sz)                    len = sz - 1;                memcpy(path, me32.szExePath, len);                path[len++] = 0;                return len;            }# endif        }    } while ((*module_next) (hModuleSnap, &me32));    (*close_snap) (hModuleSnap);    FreeLibrary(dll);    return 0;}
开发者ID:crypto-org-ua,项目名称:openssl-ua,代码行数:99,


示例26: vms_bind_sym

void vms_bind_sym(DSO *dso, const char *symname, void **sym)	{	DSO_VMS_INTERNAL *ptr;	int status;#if 0	int flags = (1<<4); /* LIB$M_FIS_MIXEDCASE, but this symbol isn't                               defined in VMS older than 7.0 or so */#else	int flags = 0;#endif	struct dsc$descriptor_s symname_dsc;	*sym = NULL;	symname_dsc.dsc$w_length = strlen(symname);	symname_dsc.dsc$b_dtype = DSC$K_DTYPE_T;	symname_dsc.dsc$b_class = DSC$K_CLASS_S;	symname_dsc.dsc$a_pointer = (char *)symname; /* The cast is needed */	if((dso == NULL) || (symname == NULL))		{		DSOerr(DSO_F_VMS_BIND_SYM,ERR_R_PASSED_NULL_PARAMETER);		return;		}	if(sk_num(dso->meth_data) < 1)		{		DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_STACK_ERROR);		return;		}	ptr = (DSO_VMS_INTERNAL *)sk_value(dso->meth_data,		sk_num(dso->meth_data) - 1);	if(ptr == NULL)		{		DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_NULL_HANDLE);		return;		}	if(dso->flags & DSO_FLAG_UPCASE_SYMBOL) flags = 0;	status = do_find_symbol(ptr, &symname_dsc, sym, flags);	if(!$VMS_STATUS_SUCCESS(status))		{		unsigned short length;		char errstring[257];		struct dsc$descriptor_s errstring_dsc;		errstring_dsc.dsc$w_length = sizeof(errstring);		errstring_dsc.dsc$b_dtype = DSC$K_DTYPE_T;		errstring_dsc.dsc$b_class = DSC$K_CLASS_S;		errstring_dsc.dsc$a_pointer = errstring;		*sym = NULL;		status = sys$getmsg(status, &length, &errstring_dsc, 1, 0);		if (!$VMS_STATUS_SUCCESS(status))			lib$signal(status); /* This is really bad.  Abort!  */		else			{			errstring[length] = '/0';			DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_SYM_FAILURE);			if (ptr->imagename_dsc.dsc$w_length)				ERR_add_error_data(9,					"Symbol ", symname,					" in ", ptr->filename,					" (", ptr->imagename, ")",					": ", errstring);			else				ERR_add_error_data(6,					"Symbol ", symname,					" in ", ptr->filename,					": ", errstring);			}		return;		}	return;	}
开发者ID:LucidOne,项目名称:Rovio,代码行数:78,


示例27: vms_load

static int vms_load(DSO *dso){    void *ptr = NULL;    /* See applicable comments in dso_dl.c */    char *filename = DSO_convert_filename(dso, NULL);/* Ensure 32-bit pointer for "p", and appropriate malloc() function. */# if __INITIAL_POINTER_SIZE == 64#  define DSO_MALLOC _malloc32#  pragma pointer_size save#  pragma pointer_size 32# else                          /* __INITIAL_POINTER_SIZE == 64 */#  define DSO_MALLOC OPENSSL_malloc# endif                         /* __INITIAL_POINTER_SIZE == 64 [else] */    DSO_VMS_INTERNAL *p = NULL;# if __INITIAL_POINTER_SIZE == 64#  pragma pointer_size restore# endif                         /* __INITIAL_POINTER_SIZE == 64 */    const char *sp1, *sp2;      /* Search result */    const char *ext = NULL;	/* possible extension to add */    if (filename == NULL) {        DSOerr(DSO_F_VMS_LOAD, DSO_R_NO_FILENAME);        goto err;    }    /*-     * A file specification may look like this:     *     *      node::dev:[dir-spec]name.type;ver     *     * or (for compatibility with TOPS-20):     *     *      node::dev:<dir-spec>name.type;ver     *     * and the dir-spec uses '.' as separator.  Also, a dir-spec     * may consist of several parts, with mixed use of [] and <>:     *     *      [dir1.]<dir2>     *     * We need to split the file specification into the name and     * the rest (both before and after the name itself).     */    /*     * Start with trying to find the end of a dir-spec, and save the position     * of the byte after in sp1     */    sp1 = strrchr(filename, ']');    sp2 = strrchr(filename, '>');    if (sp1 == NULL)        sp1 = sp2;    if (sp2 != NULL && sp2 > sp1)        sp1 = sp2;    if (sp1 == NULL)        sp1 = strrchr(filename, ':');    if (sp1 == NULL)        sp1 = filename;    else        sp1++;                  /* The byte after the found character */    /* Now, let's see if there's a type, and save the position in sp2 */    sp2 = strchr(sp1, '.');    /*     * If there is a period and the next character is a semi-colon,     * we need to add an extension     */    if (sp2 != NULL && sp2[1] == ';')        ext = ".EXE";    /*     * If we found it, that's where we'll cut.  Otherwise, look for a version     * number and save the position in sp2     */    if (sp2 == NULL) {        sp2 = strchr(sp1, ';');        ext = ".EXE";    }    /*     * If there was still nothing to find, set sp2 to point at the end of the     * string     */    if (sp2 == NULL)        sp2 = sp1 + strlen(sp1);    /* Check that we won't get buffer overflows */    if (sp2 - sp1 > FILENAME_MAX        || (sp1 - filename) + strlen(sp2) > FILENAME_MAX) {        DSOerr(DSO_F_VMS_LOAD, DSO_R_FILENAME_TOO_BIG);        goto err;    }    p = DSO_MALLOC(sizeof(DSO_VMS_INTERNAL));    if (p == NULL) {        DSOerr(DSO_F_VMS_LOAD, ERR_R_MALLOC_FAILURE);        goto err;    }    strncpy(p->filename, sp1, sp2 - sp1);    p->filename[sp2 - sp1] = '/0';//.........这里部分代码省略.........
开发者ID:Adallom,项目名称:openssl,代码行数:101,



注:本文中的DSOerr函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ DSP_FAILED函数代码示例
C++ DSO_free函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。