Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
btwise
openssl
提交
856d456a
O
openssl
项目概览
btwise
/
openssl
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
856d456a
编写于
12月 31, 2000
作者:
R
Richard Levitte
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make the DSO code for VMS work again. First attempt.
上级
7f2113a2
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
24 addition
and
30 deletion
+24
-30
crypto/dso/dso_vms.c
crypto/dso/dso_vms.c
+24
-30
未找到文件。
crypto/dso/dso_vms.c
浏览文件 @
856d456a
...
...
@@ -133,10 +133,18 @@ DSO_METHOD *DSO_METHOD_vms(void)
static
int
vms_load
(
DSO
*
dso
)
{
#if 0
void
*
ptr
=
NULL
;
/* See applicable comments in dso_dl.c */
char
*
filename
=
DSO_convert_filename
(
dso
,
NULL
);
DSO_VMS_INTERNAL
*
p
;
const
char
*
sp1
,
*
sp2
;
/* Search result */
if
(
filename
==
NULL
)
{
DSOerr
(
DSO_F_DLFCN_LOAD
,
DSO_R_NO_FILENAME
);
goto
err
;
}
/* A file specification may look like this:
*
* node::dev:[dir-spec]name.type;ver
...
...
@@ -178,14 +186,14 @@ static int vms_load(DSO *dso)
||
(
sp1
-
filename
)
+
strlen
(
sp2
)
>
FILENAME_MAX
)
{
DSOerr
(
DSO_F_VMS_LOAD
,
DSO_R_FILENAME_TOO_BIG
);
return(0)
;
goto
err
;
}
p
=
(
DSO_VMS_INTERNAL
*
)
OPENSSL_malloc
(
sizeof
(
DSO_VMS_INTERNAL
));
if
(
p
==
NULL
)
{
DSOerr
(
DSO_F_VMS_LOAD
,
ERR_R_MALLOC_FAILURE
);
return(0)
;
goto
err
;
}
strncpy
(
p
->
filename
,
sp1
,
sp2
-
sp1
);
...
...
@@ -207,16 +215,19 @@ static int vms_load(DSO *dso)
if
(
!
sk_push
(
dso
->
meth_data
,
(
char
*
)
p
))
{
DSOerr
(
DSO_F_VMS_LOAD
,
DSO_R_STACK_ERROR
);
OPENSSL_free(p);
return(0);
goto
err
;
}
/* Success (for now, we lie. We actually do not know...) */
dso
->
loaded_filename
=
filename
;
return
(
1
);
#else
/* See the comments lower down in the vms_name_converter
* "implementation" :-) */
please_break_compilation
();
return
(
bother_richard
);
#endif
err:
/* Cleanup! */
if
(
p
!=
NULL
)
OPENSSL_free
(
p
);
if
(
filename
!=
NULL
)
OPENSSL_free
(
filename
);
return
(
0
);
}
/* Note that this doesn't actually unload the shared image, as there is no
...
...
@@ -353,26 +364,9 @@ static DSO_FUNC_TYPE vms_bind_func(DSO *dso, const char *symname)
return
sym
;
}
static
char
*
vms_name_converter
(
DSO
*
dso
)
static
char
*
vms_name_converter
(
DSO
*
dso
,
const
char
*
filename
)
{
/* Implementation note: on VMS is it preferable to do real conversions
* here, or to actually have it performed in-line with the bind calls
* (given that VMS never actually does a load except implicitly within
* the bind functions). Another note: normally (eg. dlfcn), the
* DSO_load call will either load, put the loaded filename into the DSO
* (which marks it effectively as "read-only"), and return success - or
* it will fail. VMS needs to work out what to do - otherwise DSO_load
* will always succeed, but leave the DSO looking unloaded (because the
* loaded_filename will be NULL still) and then real loading (and
* setting of loaded_filename) will only happen during the first bind
* call (which should have error checking anyway to prevent you calling
* it on an "unloaded" DSO - thus giving VMS *serious* grief). Richard,
* what do you think? Is it worth having DSO_load() try to find and pin
* itself to a library file (and populate loaded_filename) even though
* it's unecessary to actually do a load prior to the first bind call?
* I leave it to you ... :-) */
deliberately_break_compilation_here
();
return
(
1
);
return
(
filename
);
}
#endif
/* VMS */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录