Add Go 1.4 compatibility layer for raw64

Using raw64 will not work, but at least it will compile.
This commit is contained in:
Jakob Unterwurzacher 2016-11-01 19:20:55 +01:00
parent f4c367381e
commit d15122d3d6
4 changed files with 39 additions and 1 deletions

View File

@ -25,7 +25,7 @@ type NameTransform struct {
func New(c *cryptocore.CryptoCore, longNames bool, raw64 bool) *NameTransform {
b64 := base64.URLEncoding
if raw64 {
b64 = base64.RawURLEncoding
b64 = getRaw64Encoding()
}
return &NameTransform{
cryptoCore: c,

View File

@ -0,0 +1,18 @@
//+build !go1.5
package nametransform
import (
"encoding/base64"
"log"
)
const (
HaveRaw64 = false
)
func getRaw64Encoding() *base64.Encoding {
log.Panicf("Tried to use base64.RawURLEncoding but your Go version does not provide it.\n" +
"You need Go 1.5 or higher.")
return nil
}

View File

@ -0,0 +1,15 @@
//+build go1.5
package nametransform
import (
"encoding/base64"
)
const (
HaveRaw64 = true
)
func getRaw64Encoding() *base64.Encoding {
return base64.RawURLEncoding
}

View File

@ -24,6 +24,7 @@ import (
"testing"
"github.com/rfjakob/gocryptfs/internal/cryptocore"
"github.com/rfjakob/gocryptfs/internal/nametransform"
"github.com/rfjakob/gocryptfs/internal/syscallcompat"
"github.com/rfjakob/gocryptfs/tests/test_helpers"
)
@ -63,6 +64,10 @@ func TestMain(m *testing.M) {
fmt.Printf("Skipping Go GCM variant, Go installation is too old")
continue
}
if testcase.raw64 && !nametransform.HaveRaw64 {
fmt.Printf("Skipping raw64 test, Go installation is too old")
continue
}
if testing.Verbose() {
fmt.Printf("matrix: testcase = %#v\n", testcase)
}