@@ -26,29 +26,46 @@ func (h *handler) visitFs(
2626 fsPath = initFsPath
2727 }
2828
29- f , err := os .Open (fsPath )
30- if f != nil {
31- defer f .Close ()
32- }
33- h .errHandler .LogError (err )
34-
3529 var fInfo os.FileInfo
36- if err != nil {
37- if os .IsExist (err ) {
38- return
30+ var childInfos []os.FileInfo
31+
32+ err := func () error {
33+ f , err := os .Open (fsPath )
34+ if f != nil {
35+ defer f .Close ()
3936 }
40- fInfo = newFakeFileInfo (path .Base (fsPath ), true )
41- } else {
42- fInfo , err = f .Stat ()
43- if h .errHandler .LogError (err ) {
44- return
37+ h .errHandler .LogError (err )
38+
39+ if err != nil {
40+ if os .IsExist (err ) {
41+ return err
42+ }
43+ fInfo = newFakeFileInfo (path .Base (fsPath ), true ) // prefix path for alias
44+ } else {
45+ fInfo , err = f .Stat ()
46+ if h .errHandler .LogError (err ) {
47+ return err
48+ }
4549 }
46- }
4750
48- if len (relPath ) > 0 {
49- if archiveCallback (f , fInfo , relPath ) != nil {
50- return
51+ if len (relPath ) > 0 {
52+ if err := archiveCallback (f , fInfo , relPath ); err != nil {
53+ return err
54+ }
5155 }
56+
57+ if f != nil && fInfo .IsDir () {
58+ childInfos , err = f .Readdir (0 )
59+ if h .errHandler .LogError (err ) {
60+ return err
61+ }
62+ childInfos = filterCallback (childInfos )
63+ }
64+
65+ return nil
66+ }()
67+ if err != nil {
68+ return
5269 }
5370
5471 if fInfo .IsDir () {
@@ -72,15 +89,6 @@ func (h *handler) visitFs(
7289 }
7390 }
7491
75- var childInfos []os.FileInfo
76- if f != nil {
77- childInfos , err = f .Readdir (0 )
78- if h .errHandler .LogError (err ) {
79- return
80- }
81- childInfos = filterCallback (childInfos )
82- }
83-
8492 for _ , childInfo := range childInfos {
8593 childPath := "/" + childInfo .Name ()
8694 childFsPath := fsPath + childPath
@@ -99,7 +107,6 @@ func (h *handler) visitFs(
99107 childRelPath := relPath + "/" + path .Base (childRawRequestPath )
100108 h .visitFs (childAliasedFsPath , childRawRequestPath , childRelPath , filterCallback , archiveCallback )
101109 }
102-
103110 }
104111}
105112
0 commit comments