| 
									
										
										
										
											2018-02-03 00:19:59 +08:00
										 |  |  | // +build darwin linux
 | 
					
						
							| 
									
										
										
										
											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" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-22 20:00:27 +08:00
										 |  |  | func (p *sshFxpExtendedPacketStatVFS) respond(svr *Server) responsePacket { | 
					
						
							| 
									
										
										
										
											2021-02-11 02:13:19 +08:00
										 |  |  | 	retPkt, err := getStatVFSForPath(p.Path) | 
					
						
							| 
									
										
										
										
											2016-06-13 12:45:13 +08:00
										 |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2021-02-22 20:00:27 +08:00
										 |  |  | 		return statusFromError(p.ID, err) | 
					
						
							| 
									
										
										
										
											2016-06-13 12:45:13 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-09-05 10:35:25 +08:00
										 |  |  | 	retPkt.ID = p.ID | 
					
						
							| 
									
										
										
										
											2016-06-13 12:45:13 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-26 05:54:02 +08:00
										 |  |  | 	return retPkt | 
					
						
							| 
									
										
										
										
											2016-06-13 12:45:13 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2021-02-11 02:13:19 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | func getStatVFSForPath(name string) (*StatVFS, error) { | 
					
						
							| 
									
										
										
										
											2021-02-22 20:00:27 +08:00
										 |  |  | 	var stat syscall.Statfs_t | 
					
						
							|  |  |  | 	if err := syscall.Statfs(name, &stat); err != nil { | 
					
						
							| 
									
										
										
										
											2021-02-11 02:13:19 +08:00
										 |  |  | 		return nil, err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-22 20:00:27 +08:00
										 |  |  | 	return statvfsFromStatfst(&stat) | 
					
						
							| 
									
										
										
										
											2021-02-11 02:13:19 +08:00
										 |  |  | } |