mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Integrate public as bindata optionally (#293)
* Dropped unused codekit config * Integrated dynamic and static bindata for public * Ignore public bindata * Add a general generate make task * Integrated flexible public assets into web command * Updated vendoring, added all missiong govendor deps * Made the linter happy with the bindata and dynamic code * Moved public bindata definition to modules directory * Ignoring the new bindata path now * Updated to the new public modules import path * Updated public bindata command and drop the new prefix
This commit is contained in:
		
				
					committed by
					
						 Lunny Xiao
						Lunny Xiao
					
				
			
			
				
	
			
			
			
						parent
						
							4680c349dd
						
					
				
				
					commit
					b6a95a8cb3
				
			
							
								
								
									
										89
									
								
								vendor/github.com/boltdb/bolt/bolt_unix.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								vendor/github.com/boltdb/bolt/bolt_unix.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | ||||
| // +build !windows,!plan9,!solaris | ||||
|  | ||||
| package bolt | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"syscall" | ||||
| 	"time" | ||||
| 	"unsafe" | ||||
| ) | ||||
|  | ||||
| // flock acquires an advisory lock on a file descriptor. | ||||
| func flock(db *DB, mode os.FileMode, exclusive bool, timeout time.Duration) error { | ||||
| 	var t time.Time | ||||
| 	for { | ||||
| 		// If we're beyond our timeout then return an error. | ||||
| 		// This can only occur after we've attempted a flock once. | ||||
| 		if t.IsZero() { | ||||
| 			t = time.Now() | ||||
| 		} else if timeout > 0 && time.Since(t) > timeout { | ||||
| 			return ErrTimeout | ||||
| 		} | ||||
| 		flag := syscall.LOCK_SH | ||||
| 		if exclusive { | ||||
| 			flag = syscall.LOCK_EX | ||||
| 		} | ||||
|  | ||||
| 		// Otherwise attempt to obtain an exclusive lock. | ||||
| 		err := syscall.Flock(int(db.file.Fd()), flag|syscall.LOCK_NB) | ||||
| 		if err == nil { | ||||
| 			return nil | ||||
| 		} else if err != syscall.EWOULDBLOCK { | ||||
| 			return err | ||||
| 		} | ||||
|  | ||||
| 		// Wait for a bit and try again. | ||||
| 		time.Sleep(50 * time.Millisecond) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // funlock releases an advisory lock on a file descriptor. | ||||
| func funlock(db *DB) error { | ||||
| 	return syscall.Flock(int(db.file.Fd()), syscall.LOCK_UN) | ||||
| } | ||||
|  | ||||
| // mmap memory maps a DB's data file. | ||||
| func mmap(db *DB, sz int) error { | ||||
| 	// Map the data file to memory. | ||||
| 	b, err := syscall.Mmap(int(db.file.Fd()), 0, sz, syscall.PROT_READ, syscall.MAP_SHARED|db.MmapFlags) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	// Advise the kernel that the mmap is accessed randomly. | ||||
| 	if err := madvise(b, syscall.MADV_RANDOM); err != nil { | ||||
| 		return fmt.Errorf("madvise: %s", err) | ||||
| 	} | ||||
|  | ||||
| 	// Save the original byte slice and convert to a byte array pointer. | ||||
| 	db.dataref = b | ||||
| 	db.data = (*[maxMapSize]byte)(unsafe.Pointer(&b[0])) | ||||
| 	db.datasz = sz | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // munmap unmaps a DB's data file from memory. | ||||
| func munmap(db *DB) error { | ||||
| 	// Ignore the unmap if we have no mapped data. | ||||
| 	if db.dataref == nil { | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	// Unmap using the original byte slice. | ||||
| 	err := syscall.Munmap(db.dataref) | ||||
| 	db.dataref = nil | ||||
| 	db.data = nil | ||||
| 	db.datasz = 0 | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| // NOTE: This function is copied from stdlib because it is not available on darwin. | ||||
| func madvise(b []byte, advice int) (err error) { | ||||
| 	_, _, e1 := syscall.Syscall(syscall.SYS_MADVISE, uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), uintptr(advice)) | ||||
| 	if e1 != 0 { | ||||
| 		err = e1 | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
		Reference in New Issue
	
	Block a user