Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
9bbd9b06
提交
9bbd9b06
authored
8月 30, 2015
作者:
Jeromy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
give ipfs get symlink support
License: MIT Signed-off-by:
Jeromy
<
jeromyj@gmail.com
>
上级
d993bc04
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
28 行增加
和
10 行删除
+28
-10
add.go
core/commands/add.go
+0
-4
extractor.go
thirdparty/tar/extractor.go
+17
-6
writer.go
unixfs/archive/tar/writer.go
+11
-0
没有找到文件。
core/commands/add.go
浏览文件 @
9bbd9b06
...
@@ -143,7 +143,6 @@ remains to be implemented.
...
@@ -143,7 +143,6 @@ remains to be implemented.
return
nil
// done
return
nil
// done
}
}
log
.
Errorf
(
"FILE: %#v"
,
file
)
if
_
,
err
:=
fileAdder
.
addFile
(
file
);
err
!=
nil
{
if
_
,
err
:=
fileAdder
.
addFile
(
file
);
err
!=
nil
{
return
err
return
err
}
}
...
@@ -361,9 +360,6 @@ func (params *adder) addFile(file files.File) (*dag.Node, error) {
...
@@ -361,9 +360,6 @@ func (params *adder) addFile(file files.File) (*dag.Node, error) {
}
}
if
s
,
ok
:=
file
.
(
*
files
.
Symlink
);
ok
{
if
s
,
ok
:=
file
.
(
*
files
.
Symlink
);
ok
{
log
.
Error
(
"SYMLINK: "
,
s
)
log
.
Error
(
s
.
Target
)
log
.
Error
(
s
.
FileName
())
dagnode
:=
&
dag
.
Node
{
dagnode
:=
&
dag
.
Node
{
Data
:
ft
.
SymlinkData
(
s
.
Target
),
Data
:
ft
.
SymlinkData
(
s
.
Target
),
}
}
...
...
thirdparty/tar/extractor.go
浏览文件 @
9bbd9b06
...
@@ -2,6 +2,7 @@ package tar
...
@@ -2,6 +2,7 @@ package tar
import
(
import
(
"archive/tar"
"archive/tar"
"fmt"
"io"
"io"
"os"
"os"
gopath
"path"
gopath
"path"
...
@@ -39,15 +40,21 @@ func (te *Extractor) Extract(reader io.Reader) error {
...
@@ -39,15 +40,21 @@ func (te *Extractor) Extract(reader io.Reader) error {
break
break
}
}
if
header
.
Typeflag
==
tar
.
TypeDir
{
switch
header
.
Typeflag
{
case
tar
.
TypeDir
:
if
err
:=
te
.
extractDir
(
header
,
i
);
err
!=
nil
{
if
err
:=
te
.
extractDir
(
header
,
i
);
err
!=
nil
{
return
err
return
err
}
}
continue
case
tar
.
TypeReg
:
}
if
err
:=
te
.
extractFile
(
header
,
tarReader
,
i
,
rootExists
,
rootIsDir
);
err
!=
nil
{
return
err
if
err
:=
te
.
extractFile
(
header
,
tarReader
,
i
,
rootExists
,
rootIsDir
);
err
!=
nil
{
}
return
err
case
tar
.
TypeSymlink
:
if
err
:=
te
.
extractSymlink
(
header
);
err
!=
nil
{
return
err
}
default
:
return
fmt
.
Errorf
(
"unrecognized tar header type: %d"
,
header
.
Typeflag
)
}
}
}
}
return
nil
return
nil
...
@@ -79,6 +86,10 @@ func (te *Extractor) extractDir(h *tar.Header, depth int) error {
...
@@ -79,6 +86,10 @@ func (te *Extractor) extractDir(h *tar.Header, depth int) error {
return
nil
return
nil
}
}
func
(
te
*
Extractor
)
extractSymlink
(
h
*
tar
.
Header
)
error
{
return
os
.
Symlink
(
h
.
Linkname
,
te
.
outputPath
(
h
.
Name
))
}
func
(
te
*
Extractor
)
extractFile
(
h
*
tar
.
Header
,
r
*
tar
.
Reader
,
depth
int
,
rootExists
bool
,
rootIsDir
bool
)
error
{
func
(
te
*
Extractor
)
extractFile
(
h
*
tar
.
Header
,
r
*
tar
.
Reader
,
depth
int
,
rootExists
bool
,
rootIsDir
bool
)
error
{
path
:=
te
.
outputPath
(
h
.
Name
)
path
:=
te
.
outputPath
(
h
.
Name
)
...
...
unixfs/archive/tar/writer.go
浏览文件 @
9bbd9b06
...
@@ -79,6 +79,8 @@ func (w *Writer) WriteNode(nd *mdag.Node, fpath string) error {
...
@@ -79,6 +79,8 @@ func (w *Writer) WriteNode(nd *mdag.Node, fpath string) error {
fallthrough
fallthrough
case
upb
.
Data_File
:
case
upb
.
Data_File
:
return
w
.
writeFile
(
nd
,
pb
,
fpath
)
return
w
.
writeFile
(
nd
,
pb
,
fpath
)
case
upb
.
Data_Symlink
:
return
writeSymlinkHeader
(
w
.
TarW
,
string
(
pb
.
GetData
()),
fpath
)
default
:
default
:
return
ft
.
ErrUnrecognizedType
return
ft
.
ErrUnrecognizedType
}
}
...
@@ -108,3 +110,12 @@ func writeFileHeader(w *tar.Writer, fpath string, size uint64) error {
...
@@ -108,3 +110,12 @@ func writeFileHeader(w *tar.Writer, fpath string, size uint64) error {
// TODO: set mode, dates, etc. when added to unixFS
// TODO: set mode, dates, etc. when added to unixFS
})
})
}
}
func
writeSymlinkHeader
(
w
*
tar
.
Writer
,
target
,
fpath
string
)
error
{
return
w
.
WriteHeader
(
&
tar
.
Header
{
Name
:
fpath
,
Linkname
:
target
,
Mode
:
0777
,
Typeflag
:
tar
.
TypeSymlink
,
})
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论