From 4bccc611c30906594a0c61fd528ccef09b16f6bb Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Thu, 22 Jan 2015 12:53:10 -0800 Subject: [PATCH] Update dependencies --- Godeps/Godeps.json | 2 +- .../src/github.com/bkaradzic/go-lz4/reader.go | 388 +++++++++--------- .../src/github.com/bkaradzic/go-lz4/writer.go | 376 ++++++++--------- .../github.com/calmh/xdr/cmd/genxdr/main.go | 6 +- 4 files changed, 387 insertions(+), 385 deletions(-) diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 25dd8eeb..c2f222f9 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -35,7 +35,7 @@ }, { "ImportPath": "github.com/syncthing/protocol", - "Rev": "15bf5f583a88b7aaf0a5b810fcf5fb21da0a3b3f" + "Rev": "3450b5f80cbf69777693cb4762685817ee2489ad" }, { "ImportPath": "github.com/syndtr/goleveldb/leveldb", diff --git a/Godeps/_workspace/src/github.com/bkaradzic/go-lz4/reader.go b/Godeps/_workspace/src/github.com/bkaradzic/go-lz4/reader.go index 73afa882..18628eee 100644 --- a/Godeps/_workspace/src/github.com/bkaradzic/go-lz4/reader.go +++ b/Godeps/_workspace/src/github.com/bkaradzic/go-lz4/reader.go @@ -1,194 +1,194 @@ -/* - * Copyright 2011-2012 Branimir Karadzic. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ - -package lz4 - -import ( - "encoding/binary" - "errors" - "io" -) - -var ( - // ErrCorrupt indicates the input was corrupt - ErrCorrupt = errors.New("corrupt input") -) - -const ( - mlBits = 4 - mlMask = (1 << mlBits) - 1 - runBits = 8 - mlBits - runMask = (1 << runBits) - 1 -) - -type decoder struct { - src []byte - dst []byte - spos uint32 - dpos uint32 - ref uint32 -} - -func (d *decoder) readByte() (uint8, error) { - if int(d.spos) == len(d.src) { - return 0, io.EOF - } - b := d.src[d.spos] - d.spos++ - return b, nil -} - -func (d *decoder) getLen() (uint32, error) { - - length := uint32(0) - ln, err := d.readByte() - if err != nil { - return 0, ErrCorrupt - } - for ln == 255 { - length += 255 - ln, err = d.readByte() - if err != nil { - return 0, ErrCorrupt - } - } - length += uint32(ln) - - return length, nil -} - -func (d *decoder) cp(length, decr uint32) { - - if int(d.ref+length) < int(d.dpos) { - copy(d.dst[d.dpos:], d.dst[d.ref:d.ref+length]) - } else { - for ii := uint32(0); ii < length; ii++ { - d.dst[d.dpos+ii] = d.dst[d.ref+ii] - } - } - d.dpos += length - d.ref += length - decr -} - -func (d *decoder) finish(err error) error { - if err == io.EOF { - return nil - } - - return err -} - -// Decode returns the decoded form of src. The returned slice may be a -// subslice of dst if it was large enough to hold the entire decoded block. -func Decode(dst, src []byte) ([]byte, error) { - - if len(src) < 4 { - return nil, ErrCorrupt - } - - uncompressedLen := binary.LittleEndian.Uint32(src) - - if uncompressedLen == 0 { - return nil, nil - } - - if uncompressedLen > MaxInputSize { - return nil, ErrTooLarge - } - - if dst == nil || len(dst) < int(uncompressedLen) { - dst = make([]byte, uncompressedLen) - } - - d := decoder{src: src, dst: dst[:uncompressedLen], spos: 4} - - decr := []uint32{0, 3, 2, 3} - - for { - code, err := d.readByte() - if err != nil { - return d.dst, d.finish(err) - } - - length := uint32(code >> mlBits) - if length == runMask { - ln, err := d.getLen() - if err != nil { - return nil, ErrCorrupt - } - length += ln - } - - if int(d.spos+length) > len(d.src) { - return nil, ErrCorrupt - } - - for ii := uint32(0); ii < length; ii++ { - d.dst[d.dpos+ii] = d.src[d.spos+ii] - } - - d.spos += length - d.dpos += length - - if int(d.spos) == len(d.src) { - return d.dst, nil - } - - if int(d.spos+2) >= len(d.src) { - return nil, ErrCorrupt - } - - back := uint32(d.src[d.spos]) | uint32(d.src[d.spos+1])<<8 - - if back > d.dpos { - return nil, ErrCorrupt - } - - d.spos += 2 - d.ref = d.dpos - back - - length = uint32(code & mlMask) - if length == mlMask { - ln, err := d.getLen() - if err != nil { - return nil, ErrCorrupt - } - length += ln - } - - literal := d.dpos - d.ref - if literal < 4 { - d.cp(4, decr[literal]) - } else { - length += 4 - } - - if d.dpos+length > uncompressedLen { - return nil, ErrCorrupt - } - - d.cp(length, 0) - } -} +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +package lz4 + +import ( + "encoding/binary" + "errors" + "io" +) + +var ( + // ErrCorrupt indicates the input was corrupt + ErrCorrupt = errors.New("corrupt input") +) + +const ( + mlBits = 4 + mlMask = (1 << mlBits) - 1 + runBits = 8 - mlBits + runMask = (1 << runBits) - 1 +) + +type decoder struct { + src []byte + dst []byte + spos uint32 + dpos uint32 + ref uint32 +} + +func (d *decoder) readByte() (uint8, error) { + if int(d.spos) == len(d.src) { + return 0, io.EOF + } + b := d.src[d.spos] + d.spos++ + return b, nil +} + +func (d *decoder) getLen() (uint32, error) { + + length := uint32(0) + ln, err := d.readByte() + if err != nil { + return 0, ErrCorrupt + } + for ln == 255 { + length += 255 + ln, err = d.readByte() + if err != nil { + return 0, ErrCorrupt + } + } + length += uint32(ln) + + return length, nil +} + +func (d *decoder) cp(length, decr uint32) { + + if int(d.ref+length) < int(d.dpos) { + copy(d.dst[d.dpos:], d.dst[d.ref:d.ref+length]) + } else { + for ii := uint32(0); ii < length; ii++ { + d.dst[d.dpos+ii] = d.dst[d.ref+ii] + } + } + d.dpos += length + d.ref += length - decr +} + +func (d *decoder) finish(err error) error { + if err == io.EOF { + return nil + } + + return err +} + +// Decode returns the decoded form of src. The returned slice may be a +// subslice of dst if it was large enough to hold the entire decoded block. +func Decode(dst, src []byte) ([]byte, error) { + + if len(src) < 4 { + return nil, ErrCorrupt + } + + uncompressedLen := binary.LittleEndian.Uint32(src) + + if uncompressedLen == 0 { + return nil, nil + } + + if uncompressedLen > MaxInputSize { + return nil, ErrTooLarge + } + + if dst == nil || len(dst) < int(uncompressedLen) { + dst = make([]byte, uncompressedLen) + } + + d := decoder{src: src, dst: dst[:uncompressedLen], spos: 4} + + decr := []uint32{0, 3, 2, 3} + + for { + code, err := d.readByte() + if err != nil { + return d.dst, d.finish(err) + } + + length := uint32(code >> mlBits) + if length == runMask { + ln, err := d.getLen() + if err != nil { + return nil, ErrCorrupt + } + length += ln + } + + if int(d.spos+length) > len(d.src) { + return nil, ErrCorrupt + } + + for ii := uint32(0); ii < length; ii++ { + d.dst[d.dpos+ii] = d.src[d.spos+ii] + } + + d.spos += length + d.dpos += length + + if int(d.spos) == len(d.src) { + return d.dst, nil + } + + if int(d.spos+2) >= len(d.src) { + return nil, ErrCorrupt + } + + back := uint32(d.src[d.spos]) | uint32(d.src[d.spos+1])<<8 + + if back > d.dpos { + return nil, ErrCorrupt + } + + d.spos += 2 + d.ref = d.dpos - back + + length = uint32(code & mlMask) + if length == mlMask { + ln, err := d.getLen() + if err != nil { + return nil, ErrCorrupt + } + length += ln + } + + literal := d.dpos - d.ref + if literal < 4 { + d.cp(4, decr[literal]) + } else { + length += 4 + } + + if d.dpos+length > uncompressedLen { + return nil, ErrCorrupt + } + + d.cp(length, 0) + } +} diff --git a/Godeps/_workspace/src/github.com/bkaradzic/go-lz4/writer.go b/Godeps/_workspace/src/github.com/bkaradzic/go-lz4/writer.go index 40ebaed1..368d2480 100644 --- a/Godeps/_workspace/src/github.com/bkaradzic/go-lz4/writer.go +++ b/Godeps/_workspace/src/github.com/bkaradzic/go-lz4/writer.go @@ -1,188 +1,188 @@ -/* - * Copyright 2011-2012 Branimir Karadzic. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ - -package lz4 - -import "encoding/binary" -import "errors" - -const ( - minMatch = 4 - hashLog = 17 - hashTableSize = 1 << hashLog - hashShift = (minMatch * 8) - hashLog - incompressible uint32 = 128 - uninitHash = 0x88888888 - - // MaxInputSize is the largest buffer than can be compressed in a single block - MaxInputSize = 0x7E000000 -) - -var ( - // ErrTooLarge indicates the input buffer was too large - ErrTooLarge = errors.New("input too large") -) - -type encoder struct { - src []byte - dst []byte - hashTable []uint32 - pos uint32 - anchor uint32 - dpos uint32 -} - -// CompressBound returns the maximum length of a lz4 block, given it's uncompressed length -func CompressBound(isize int) int { - if isize > MaxInputSize { - return 0 - } - return isize + ((isize) / 255) + 16 + 4 -} - -func (e *encoder) writeLiterals(length, mlLen, pos uint32) { - - ln := length - - var code byte - if ln > runMask-1 { - code = runMask - } else { - code = byte(ln) - } - - if mlLen > mlMask-1 { - e.dst[e.dpos] = (code << mlBits) + byte(mlMask) - } else { - e.dst[e.dpos] = (code << mlBits) + byte(mlLen) - } - e.dpos++ - - if code == runMask { - ln -= runMask - for ; ln > 254; ln -= 255 { - e.dst[e.dpos] = 255 - e.dpos++ - } - - e.dst[e.dpos] = byte(ln) - e.dpos++ - } - - for ii := uint32(0); ii < length; ii++ { - e.dst[e.dpos+ii] = e.src[pos+ii] - } - - e.dpos += length -} - -// Encode returns the encoded form of src. The returned array may be a -// sub-slice of dst if it was large enough to hold the entire output. -func Encode(dst, src []byte) ([]byte, error) { - - if len(src) >= MaxInputSize { - return nil, ErrTooLarge - } - - if n := CompressBound(len(src)); len(dst) < n { - dst = make([]byte, n) - } - - e := encoder{src: src, dst: dst, hashTable: make([]uint32, hashTableSize)} - - binary.LittleEndian.PutUint32(dst, uint32(len(src))) - e.dpos = 4 - - var ( - step uint32 = 1 - limit = incompressible - ) - - for { - if int(e.pos)+12 >= len(e.src) { - e.writeLiterals(uint32(len(e.src))-e.anchor, 0, e.anchor) - return e.dst[:e.dpos], nil - } - - sequence := uint32(e.src[e.pos+3])<<24 | uint32(e.src[e.pos+2])<<16 | uint32(e.src[e.pos+1])<<8 | uint32(e.src[e.pos+0]) - - hash := (sequence * 2654435761) >> hashShift - ref := e.hashTable[hash] + uninitHash - e.hashTable[hash] = e.pos - uninitHash - - if ((e.pos-ref)>>16) != 0 || uint32(e.src[ref+3])<<24|uint32(e.src[ref+2])<<16|uint32(e.src[ref+1])<<8|uint32(e.src[ref+0]) != sequence { - if e.pos-e.anchor > limit { - limit <<= 1 - step += 1 + (step >> 2) - } - e.pos += step - continue - } - - if step > 1 { - e.hashTable[hash] = ref - uninitHash - e.pos -= step - 1 - step = 1 - continue - } - limit = incompressible - - ln := e.pos - e.anchor - back := e.pos - ref - - anchor := e.anchor - - e.pos += minMatch - ref += minMatch - e.anchor = e.pos - - for int(e.pos) < len(e.src)-5 && e.src[e.pos] == e.src[ref] { - e.pos++ - ref++ - } - - mlLen := e.pos - e.anchor - - e.writeLiterals(ln, mlLen, anchor) - e.dst[e.dpos] = uint8(back) - e.dst[e.dpos+1] = uint8(back >> 8) - e.dpos += 2 - - if mlLen > mlMask-1 { - mlLen -= mlMask - for mlLen > 254 { - mlLen -= 255 - - e.dst[e.dpos] = 255 - e.dpos++ - } - - e.dst[e.dpos] = byte(mlLen) - e.dpos++ - } - - e.anchor = e.pos - } -} +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +package lz4 + +import "encoding/binary" +import "errors" + +const ( + minMatch = 4 + hashLog = 17 + hashTableSize = 1 << hashLog + hashShift = (minMatch * 8) - hashLog + incompressible uint32 = 128 + uninitHash = 0x88888888 + + // MaxInputSize is the largest buffer than can be compressed in a single block + MaxInputSize = 0x7E000000 +) + +var ( + // ErrTooLarge indicates the input buffer was too large + ErrTooLarge = errors.New("input too large") +) + +type encoder struct { + src []byte + dst []byte + hashTable []uint32 + pos uint32 + anchor uint32 + dpos uint32 +} + +// CompressBound returns the maximum length of a lz4 block, given it's uncompressed length +func CompressBound(isize int) int { + if isize > MaxInputSize { + return 0 + } + return isize + ((isize) / 255) + 16 + 4 +} + +func (e *encoder) writeLiterals(length, mlLen, pos uint32) { + + ln := length + + var code byte + if ln > runMask-1 { + code = runMask + } else { + code = byte(ln) + } + + if mlLen > mlMask-1 { + e.dst[e.dpos] = (code << mlBits) + byte(mlMask) + } else { + e.dst[e.dpos] = (code << mlBits) + byte(mlLen) + } + e.dpos++ + + if code == runMask { + ln -= runMask + for ; ln > 254; ln -= 255 { + e.dst[e.dpos] = 255 + e.dpos++ + } + + e.dst[e.dpos] = byte(ln) + e.dpos++ + } + + for ii := uint32(0); ii < length; ii++ { + e.dst[e.dpos+ii] = e.src[pos+ii] + } + + e.dpos += length +} + +// Encode returns the encoded form of src. The returned array may be a +// sub-slice of dst if it was large enough to hold the entire output. +func Encode(dst, src []byte) ([]byte, error) { + + if len(src) >= MaxInputSize { + return nil, ErrTooLarge + } + + if n := CompressBound(len(src)); len(dst) < n { + dst = make([]byte, n) + } + + e := encoder{src: src, dst: dst, hashTable: make([]uint32, hashTableSize)} + + binary.LittleEndian.PutUint32(dst, uint32(len(src))) + e.dpos = 4 + + var ( + step uint32 = 1 + limit = incompressible + ) + + for { + if int(e.pos)+12 >= len(e.src) { + e.writeLiterals(uint32(len(e.src))-e.anchor, 0, e.anchor) + return e.dst[:e.dpos], nil + } + + sequence := uint32(e.src[e.pos+3])<<24 | uint32(e.src[e.pos+2])<<16 | uint32(e.src[e.pos+1])<<8 | uint32(e.src[e.pos+0]) + + hash := (sequence * 2654435761) >> hashShift + ref := e.hashTable[hash] + uninitHash + e.hashTable[hash] = e.pos - uninitHash + + if ((e.pos-ref)>>16) != 0 || uint32(e.src[ref+3])<<24|uint32(e.src[ref+2])<<16|uint32(e.src[ref+1])<<8|uint32(e.src[ref+0]) != sequence { + if e.pos-e.anchor > limit { + limit <<= 1 + step += 1 + (step >> 2) + } + e.pos += step + continue + } + + if step > 1 { + e.hashTable[hash] = ref - uninitHash + e.pos -= step - 1 + step = 1 + continue + } + limit = incompressible + + ln := e.pos - e.anchor + back := e.pos - ref + + anchor := e.anchor + + e.pos += minMatch + ref += minMatch + e.anchor = e.pos + + for int(e.pos) < len(e.src)-5 && e.src[e.pos] == e.src[ref] { + e.pos++ + ref++ + } + + mlLen := e.pos - e.anchor + + e.writeLiterals(ln, mlLen, anchor) + e.dst[e.dpos] = uint8(back) + e.dst[e.dpos+1] = uint8(back >> 8) + e.dpos += 2 + + if mlLen > mlMask-1 { + mlLen -= mlMask + for mlLen > 254 { + mlLen -= 255 + + e.dst[e.dpos] = 255 + e.dpos++ + } + + e.dst[e.dpos] = byte(mlLen) + e.dpos++ + } + + e.anchor = e.pos + } +} diff --git a/Godeps/_workspace/src/github.com/calmh/xdr/cmd/genxdr/main.go b/Godeps/_workspace/src/github.com/calmh/xdr/cmd/genxdr/main.go index e4b5153f..7a80b8f6 100644 --- a/Godeps/_workspace/src/github.com/calmh/xdr/cmd/genxdr/main.go +++ b/Godeps/_workspace/src/github.com/calmh/xdr/cmd/genxdr/main.go @@ -321,10 +321,10 @@ func generateDiagram(output io.Writer, s structInfo) { case "bool": fmt.Fprintf(output, "| %s |V|\n", center(name+" (V=0 or 1)", 59)) fmt.Fprintln(output, line) - case "uint16": + case "int16", "uint16": fmt.Fprintf(output, "| %s | %s |\n", center("0x0000", 29), center(name, 29)) fmt.Fprintln(output, line) - case "uint32": + case "int32", "uint32": fmt.Fprintf(output, "| %s |\n", center(name, 61)) fmt.Fprintln(output, line) case "int64", "uint64": @@ -374,6 +374,8 @@ func generateXdr(output io.Writer, s structInfo) { } switch tn { + case "int16", "int32": + fmt.Fprintf(output, "\tint %s%s;\n", fn, suf) case "uint16", "uint32": fmt.Fprintf(output, "\tunsigned int %s%s;\n", fn, suf) case "int64":