support.go raw

   1  // Copyright 2024 The Go Authors. All rights reserved.
   2  // Use of this source code is governed by a BSD-style
   3  // license that can be found in the LICENSE file.
   4  
   5  package gcimporter
   6  
   7  import (
   8  	"bufio"
   9  	"io"
  10  	"strconv"
  11  	"strings"
  12  )
  13  
  14  // Copy of $GOROOT/src/cmd/internal/archive.ReadHeader.
  15  func readArchiveHeader(b *bufio.Reader, name string) int {
  16  	// architecture-independent object file output
  17  	const HeaderSize = 60
  18  
  19  	var buf [HeaderSize]byte
  20  	if _, err := io.ReadFull(b, buf[:]); err != nil {
  21  		return -1
  22  	}
  23  	aname := strings.Trim(string(buf[0:16]), " ")
  24  	if !strings.HasPrefix(aname, name) {
  25  		return -1
  26  	}
  27  	asize := strings.Trim(string(buf[48:58]), " ")
  28  	i, _ := strconv.Atoi(asize)
  29  	return i
  30  }
  31