Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
2bc57c88
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
大约 1 年 前同步成功
通知
9
Star
18
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2bc57c88
编写于
5月 19, 2016
作者:
R
Richard Levitte
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Documentation processor in perl, for platforms that don't have sh
Reviewed-by:
N
Rich Salz
<
rsalz@openssl.org
>
上级
2197494d
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
252 addition
and
0 deletion
+252
-0
util/process_docs.pl
util/process_docs.pl
+252
-0
未找到文件。
util/process_docs.pl
0 → 100644
浏览文件 @
2bc57c88
#! /usr/bin/env perl
# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html
use
strict
;
use
warnings
;
use
File::Spec::
Functions
;
use
File::
Basename
;
use
File::
Copy
;
use
File::
Path
;
use
Getopt::
Long
;
use
Pod::
Usage
;
use
lib
'
.
';
use
configdata
;
my
%options
=
();
GetOptions
(
\
%options
,
'
sourcedir=s
',
# Source directory
'
subdir=s%
',
# Subdirectories to look through,
# with associated section numbers
'
destdir=s
',
# Destination directory
#'in=s@', # Explicit files to process (ignores sourcedir)
#'section=i', # Default section used for --in files
'
type=s
',
# The result type, 'man' or 'html'
'
remove
',
# To remove files rather than writing them
'
dry-run|n
',
# Only output file names on STDOUT
'
debug|D+
',
);
unless
(
$options
{
subdir
})
{
$options
{
subdir
}
=
{
apps
=>
'
1
',
crypto
=>
'
3
',
ssl
=>
'
3
'
};
}
unless
(
$options
{
sourcedir
})
{
$options
{
sourcedir
}
=
catdir
(
$config
{
sourcedir
},
"
doc
");
}
pod2usage
(
1
)
unless
(
defined
$options
{
subdir
}
&&
defined
$options
{
sourcedir
}
&&
defined
$options
{
destdir
}
&&
defined
$options
{
type
}
&&
(
$options
{
type
}
eq
'
man
'
||
$options
{
type
}
eq
'
html
')
);
if
(
$options
{
debug
})
{
print
STDERR
"
DEBUG: options:
\n
";
print
STDERR
"
DEBUG: --sourcedir =
$options
{sourcedir}
\n
"
if
defined
$options
{
sourcedir
};
print
STDERR
"
DEBUG: --destdir =
$options
{destdir}
\n
"
if
defined
$options
{
destdir
};
print
STDERR
"
DEBUG: --type =
$options
{type}
\n
"
if
defined
$options
{
type
};
foreach
(
keys
%
{
$options
{
subdir
}})
{
print
STDERR
"
DEBUG: --subdir =
$_
=
$options
{subdir}->{
$_
}
\n
";
}
print
STDERR
"
DEBUG: --remove =
$options
{remove}
\n
"
if
defined
$options
{
remove
};
print
STDERR
"
DEBUG: --debug =
$options
{debug}
\n
"
if
defined
$options
{
debug
};
print
STDERR
"
DEBUG: --dry-run =
$options
{
\"
dry-run
\"
}
\n
"
if
defined
$options
{"
dry-run
"};
}
my
$symlink_exists
=
eval
{
symlink
("","");
1
};
foreach
my
$subdir
(
keys
%
{
$options
{
subdir
}})
{
my
$section
=
$options
{
subdir
}
->
{
$subdir
};
my
$podsourcedir
=
catfile
(
$options
{
sourcedir
},
$subdir
);
my
$podglob
=
catfile
(
$podsourcedir
,
"
*.pod
");
foreach
my
$podfile
(
glob
"
$podglob
")
{
my
$podname
=
basename
(
$podfile
,
"
.pod
");
my
$podpath
=
catfile
(
$podfile
);
my
%podinfo
=
(
section
=>
$section
);
print
STDERR
"
DEBUG: Reading
$podpath
\n
"
if
$options
{
debug
};
open
my
$pod_fh
,
$podpath
or
die
"
Trying to read
$podpath
: $!
\n
";
while
(
<
$pod_fh
>
)
{
s|\R$||
;
if
(
m|^=for\s+comment\s+openssl_manual_section:\s*([0-9])\s*$|
)
{
print
STDERR
"
Found section number $1
\n
"
if
$options
{
debug
};
$podinfo
{
section
}
=
$
1
;
}
last
if
m|^=head1|
&&
defined
$podinfo
{
lastsect
}
eq
"
NAME
";
if
(
m|^head1=\s*(.*)|
)
{
$podinfo
{
lastsect
}
=
$
1
;
$podinfo
{
lastsect
}
=~
s/\s+$//
;
}
next
if
(
m|^=|
||
m|^\s*$|
);
$podinfo
{
lastsecttext
}
.=
"
";
$podinfo
{
lastsecttext
}
.=
$_
;
}
close
$pod_fh
;
$podinfo
{
lastsecttext
}
=~
s| - .*$||
;
print
STDERR
"
DEBUG: Done reading
$podpath
\n
"
if
$options
{
debug
};
my
@podfiles
=
grep
{
$_
ne
$podname
}
map
{
s|\s+||g
;
$_
}
split
(
m|,|
,
$podinfo
{
lastsecttext
});
my
$updir
=
updir
();
my
$name
=
uc
$podname
;
my
$suffix
=
{
man
=>
"
.
$podinfo
{section}
",
html
=>
"
.html
"
}
->
{
$options
{
type
}};
my
$generate
=
{
man
=>
"
pod2man --name=
$name
--section=
$podinfo
{section} --center=OpenSSL --release=
$config
{version}
\"
$podpath
\"
",
html
=>
"
pod2html
\"
--podroot=
$options
{sourcedir}
\"
--htmldir=
$updir
--podpath=apps:crypto:ssl
\"
--infile=
$podpath
\"
\"
--title=
$podname
\"
"
}
->
{
$options
{
type
}};
my
$output_dir
=
catdir
(
$options
{
destdir
},
"
man
$podinfo
{section}
");
my
$output_file
=
$podname
.
$suffix
;
my
$output_path
=
catfile
(
$output_dir
,
$output_file
);
if
(
!
$options
{
remove
})
{
my
@output
;
print
STDERR
"
DEBUG: Processing, using
\"
$generate
\"\n
"
if
$options
{
debug
};
unless
(
$options
{"
dry-run
"})
{
@output
=
`
$generate
`;
map
{
s|href="http://man\.he\.net/man|href="../man|g
;
}
@output
if
$options
{
type
}
eq
"
html
";
}
print
STDERR
"
DEBUG: Done processing
\n
"
if
$options
{
debug
};
if
(
!
-
d
$output_dir
)
{
print
STDERR
"
DEBUG: Creating directory
$output_dir
\n
"
if
$options
{
debug
};
unless
(
$options
{"
dry-run
"})
{
mkpath
$output_dir
or
die
"
Trying to create directory
$output_dir
: $!
\n
";
}
}
print
STDERR
"
DEBUG: Writing
$output_path
\n
"
if
$options
{
debug
};
unless
(
$options
{"
dry-run
"})
{
open
my
$output_fh
,
'
>
',
$output_path
or
die
"
Trying to write to
$output_path
: $!
\n
";
foreach
(
@output
)
{
print
$output_fh
$_
;
}
close
$output_fh
;
}
print
STDERR
"
DEBUG: Done writing
$output_path
\n
"
if
$options
{
debug
};
}
else
{
print
STDERR
"
DEBUG: Removing
$output_path
\n
"
if
$options
{
debug
};
unless
(
$options
{"
dry-run
"})
{
while
(
unlink
$output_path
)
{}
}
}
print
"
$output_path
\n
";
foreach
(
@podfiles
)
{
my
$link_file
=
$_
.
$suffix
;
my
$link_path
=
catfile
(
$output_dir
,
$link_file
);
if
(
!
$options
{
remove
})
{
if
(
$symlink_exists
)
{
print
STDERR
"
DEBUG: Linking
$link_path
->
$output_file
\n
"
if
$options
{
debug
};
unless
(
$options
{"
dry-run
"})
{
symlink
$output_file
,
$link_path
;
}
}
else
{
print
STDERR
"
DEBUG: Copying
$output_path
to link_path
\n
"
if
$options
{
debug
};
unless
(
$options
{"
dry-run
"})
{
copy
$output_path
,
$link_path
;
}
}
}
else
{
print
STDERR
"
DEBUG: Removing
$link_path
\n
"
if
$options
{
debug
};
unless
(
$options
{"
dry-run
"})
{
while
(
unlink
$link_path
)
{}
}
}
print
"
$link_path
->
$output_path
\n
";
}
}
}
__END__
=pod
=head1 NAME
process_docs.pl - A script to process OpenSSL docs
=head1 SYNOPSIS
B<process_docs.pl>
[B<--sourcedir>=I<dir>]
B<--destdir>=I<dir>
B<--type>=B<man>|B<html>
[B<--remove>]
[B<--dry-run>|B<-n>]
[B<--debug>|B<-D>]
=head1 DESCRIPTION
This script looks for .pod files in the subdirectories 'apps', 'crypto'
and 'ssl' under the given source directory.
The OpenSSL configuration data file F<configdata.pm> I<must> reside in
the current directory, I<or> perl must have the directory it resides in
in its inclusion array. For the latter variant, a call like this would
work:
perl -I../foo util/process_docs.pl {options ...}
=head1 OPTIONS
=over 4
=item B<--sourcedir>=I<dir>
Top directory where the source files are found.
=item B<--destdir>=I<dir>
Top directory where the resulting files should end up
=item B<--type>=B<man>|B<html>
Type of output to produce. Currently supported are man pages and HTML files.
=item B<--remove>
Instead of writing the files, remove them.
=item B<--dry-run>|B<-n>
Do not perform any file writing, directory creation or file removal.
=item B<--debug>|B<-D>
Print extra debugging output.
=back
=head1 COPYRIGHT
Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the OpenSSL license (the "License"). You may not use
this file except in compliance with the License. You can obtain a copy
in the file LICENSE in the source distribution or at
https://www.openssl.org/source/license.html
=cut
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录