Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
2df16881
R
Rust
项目概览
int
/
Rust
大约 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2df16881
编写于
10月 01, 2012
作者:
P
Patrick Walton
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
libcore: Implement os::args() on Windows
上级
5e7ff924
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
46 addition
and
1 deletion
+46
-1
src/libcore/os.rs
src/libcore/os.rs
+46
-1
未找到文件。
src/libcore/os.rs
浏览文件 @
2df16881
...
...
@@ -761,7 +761,46 @@ fn real_args() -> ~[~str] {
#[cfg(windows)]
fn
real_args
()
->
~
[
~
str
]
{
fail
// Needs implementing.
let
mut
nArgs
:
c_int
=
0
;
let
lpArgCount
=
ptr
::
to_mut_unsafe_ptr
(
&
mut
nArgs
);
let
lpCmdLine
=
GetCommandLineW
();
let
szArgList
=
CommandLineToArgvW
(
lpCmdLine
,
lpArgCount
);
let
mut
args
=
~
[];
for
uint
::
range
(
0
,
nArgs
as
uint
)
|
i
|
{
unsafe
{
// Determine the length of this argument.
let
ptr
=
*
szArgList
.offset
(
i
);
let
mut
len
=
0
;
while
*
ptr
.offset
(
len
)
!=
0
{
len
+=
1
;
}
// Push it onto the list.
vec
::
push
(
&
mut
args
,
vec
::
raw
::
form_slice
(
ptr
,
len
,
str
::
from_utf16
));
}
}
unsafe
{
LocalFree
(
cast
::
transmute
(
szArgList
));
}
return
args
;
}
type
LPCWSTR
=
*
u16
;
#[cfg(windows)]
#[link_name=
"kernel32"
]
#[abi=
"stdcall"
]
extern
{
fn
GetCommandLineW
()
->
LPCWSTR
;
fn
LocalFree
(
ptr
:
*
c_void
);
}
#[cfg(windows)]
#[link_name=
"shell32"
]
#[abi=
"stdcall"
]
extern
{
fn
CommandLineToArgvW
(
lpCmdLine
:
LPCWSTR
,
pNumArgs
:
*
mut
c_int
)
->
**
u16
;
}
struct
OverriddenArgs
{
...
...
@@ -845,6 +884,12 @@ pub fn last_os_error() {
log
(
debug
,
last_os_error
());
}
#[test]
pub
fn
test_args
()
{
let
a
=
real_args
();
assert
a
.len
()
>=
1
;
}
fn
make_rand_name
()
->
~
str
{
let
rng
:
rand
::
Rng
=
rand
::
Rng
();
let
n
=
~
"TEST"
+
rng
.gen_str
(
10u
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录