| 
									
										
											  
											
												Fix build directive to properly compile under gccgo in Linux (#126)
Before this fix:
eric@workstation:~/go/src/github.com/pkg/sftp$ /opt/gccgo/bin/go test
client.go:12:2: cannot find package "github.com/kr/fs" in any of:
        /opt/gccgo/src/github.com/kr/fs (from $GOROOT)
        ($GOPATH not set)
client.go:13:2: cannot find package "github.com/pkg/errors" in any of:
        /opt/gccgo/src/github.com/pkg/errors (from $GOROOT)
        ($GOPATH not set)
client.go:14:2: cannot find package "golang.org/x/crypto/ssh" in any of:
        /opt/gccgo/src/golang.org/x/crypto/ssh (from $GOROOT)
        ($GOPATH not set)
eric@workstation:~/go/src/github.com/pkg/sftp$ export GOPATH=/home/eric/go
eric@workstation:~/go/src/github.com/pkg/sftp$ /opt/gccgo/bin/go test
./server_statvfs_stubs.go:9:1: error: redefinition of ‘respond’
 func (p sshFxpExtendedPacketStatVFS) respond(svr *Server) error {
 ^
./server_statvfs_impl.go:12:1: note: previous definition of ‘respond’ was here
 func (p sshFxpExtendedPacketStatVFS) respond(svr *Server) error {
 ^
./server_statvfs_impl.go:18:17: error: reference to undefined name ‘statvfsFromStatfst’
  retPkt, err := statvfsFromStatfst(stat)
                 ^
go1: internal compiler error: in do_get_backend, at go/gofrontend/statements.cc:476
0x67d1b3 Temporary_statement::do_get_backend(Translate_context*)
        ../../gccgo/gcc/go/gofrontend/statements.cc:476
0x64b9d0 Block::get_backend(Translate_context*)
        ../../gccgo/gcc/go/gofrontend/gogo.cc:5816
0x67a4cc Block_statement::do_get_backend(Translate_context*)
        ../../gccgo/gcc/go/gofrontend/statements.cc:1836
0x64b9d0 Block::get_backend(Translate_context*)
        ../../gccgo/gcc/go/gofrontend/gogo.cc:5816
0x67a556 If_statement::do_get_backend(Translate_context*)
        ../../gccgo/gcc/go/gofrontend/statements.cc:3213
0x64b9d0 Block::get_backend(Translate_context*)
        ../../gccgo/gcc/go/gofrontend/gogo.cc:5816
0x67a4cc Block_statement::do_get_backend(Translate_context*)
        ../../gccgo/gcc/go/gofrontend/statements.cc:1836
0x64b9d0 Block::get_backend(Translate_context*)
        ../../gccgo/gcc/go/gofrontend/gogo.cc:5816
0x64c3cb Function::build(Gogo*, Named_object*)
        ../../gccgo/gcc/go/gofrontend/gogo.cc:5422
0x64ca17 Named_object::get_backend(Gogo*, std::vector<Bexpression*, std::allocator<Bexpression*> >&, std::vector<Btype*, std::allocator<Btype*> >&, std::vector<Bfunction*, std::allocator<Bfunction*> >&)
        ../../gccgo/gcc/go/gofrontend/gogo.cc:7140
0x655ac9 Gogo::write_globals()
        ../../gccgo/gcc/go/gofrontend/gogo.cc:1262
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
FAIL    github.com/pkg/sftp [build failed]
After this fix:
eric@workstation:~/go/src/github.com/pkg/sftp$ /opt/gccgo/bin/go test
PASS
ok      github.com/pkg/sftp     0.093s
and, under gc Go:
eric@workstation:~/go/src/github.com/pkg/sftp$ /home/eric/src/go/bin/go test
PASS
ok      github.com/pkg/sftp     0.005s
											
										 
											2016-07-22 07:14:53 +08:00
										 |  |  | // +build darwin linux,!gccgo
 | 
					
						
							| 
									
										
										
										
											2016-06-13 12:45:13 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | // fill in statvfs structure with OS specific values
 | 
					
						
							|  |  |  | // Statfs_t is different per-kernel, and only exists on some unixes (not Solaris for instance)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package sftp | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"syscall" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (p sshFxpExtendedPacketStatVFS) respond(svr *Server) error { | 
					
						
							|  |  |  | 	stat := &syscall.Statfs_t{} | 
					
						
							|  |  |  | 	if err := syscall.Statfs(p.Path, stat); err != nil { | 
					
						
							| 
									
										
										
										
											2016-06-14 19:11:15 +08:00
										 |  |  | 		return svr.sendPacket(statusFromError(p, err)) | 
					
						
							| 
									
										
										
										
											2016-06-13 12:45:13 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	retPkt, err := statvfsFromStatfst(stat) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2016-06-14 19:11:15 +08:00
										 |  |  | 		return svr.sendPacket(statusFromError(p, err)) | 
					
						
							| 
									
										
										
										
											2016-06-13 12:45:13 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	retPkt.ID = p.ID | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return svr.sendPacket(retPkt) | 
					
						
							|  |  |  | } |