Merge pull request #7306 from thaJeztah/bump_x_deps

vendor: update golang.org/x/* deps
This commit is contained in:
Paweł Gronowski
2026-09-14 18:05:00 +02:00
committed by GitHub
61 changed files with 2770 additions and 2062 deletions
+8 -8
View File
@@ -4,7 +4,7 @@ module github.com/docker/cli
// There is no 'go.mod' file, as that would imply opting in for all the rules
// around SemVer, which this repo cannot abide by as it uses CalVer.
go 1.26
go 1.26.0
tool (
github.com/cpuguy83/go-md2man/v2 // for scripts/docs/generate-man.sh
@@ -61,10 +61,10 @@ require (
go.opentelemetry.io/otel/sdk/metric v1.46.0
go.opentelemetry.io/otel/trace v1.46.0
go.yaml.in/yaml/v3 v3.0.5
golang.org/x/sync v0.22.0
golang.org/x/sys v0.47.0
golang.org/x/term v0.45.0
golang.org/x/text v0.41.0
golang.org/x/sync v0.23.0
golang.org/x/sys v0.48.0
golang.org/x/term v0.46.0
golang.org/x/text v0.42.0
gotest.tools/v3 v3.5.2
tags.cncf.io/container-device-interface v1.1.1
)
@@ -101,9 +101,9 @@ require (
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.46.0 // indirect
go.opentelemetry.io/proto/otlp v1.11.0 // indirect
golang.org/x/mod v0.40.0 // indirect
golang.org/x/net v0.58.0 // indirect
golang.org/x/time v0.15.0 // indirect
golang.org/x/mod v0.41.0 // indirect
golang.org/x/net v0.59.0 // indirect
golang.org/x/time v0.16.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20260825221802-da73d73af1c5 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260825221802-da73d73af1c5 // indirect
google.golang.org/grpc v1.83.2 // indirect
+14 -14
View File
@@ -187,34 +187,34 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.40.0 h1:hUv+3cXcdRHz08UmSiOob7sadHig73uo5bkXxQ/tvUs=
golang.org/x/mod v0.40.0/go.mod h1:0/weTWkPWGBikyTWAX3dkjVztMmBA5hM0DH6BElSupE=
golang.org/x/mod v0.41.0 h1:qJmnOUb4YB+FsEuM3HcWucdZASCPGhsX6uljO6pog0c=
golang.org/x/mod v0.41.0/go.mod h1:Ek9pY8RKWXwsWvd3rQiHYtMqkjSUV+s1Rj7j4H5Ur6o=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To=
golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU=
golang.org/x/net v0.59.0 h1:5zfYln+w5XCxwrnMMJPufRgNoXEaGxl0wo5GqPXyues=
golang.org/x/net v0.59.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek=
golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sync v0.23.0 h1:KameEIfc1IkluZyXWLn39Wd4tURc6GbCiISGiZm2bQk=
golang.org/x/sync v0.23.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs=
golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0=
golang.org/x/term v0.45.0/go.mod h1:9aqxs0blBcrm/n0L9QW0aRVD+ktan8ssZromtqJC43w=
golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo=
golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og=
golang.org/x/term v0.46.0 h1:3+OXuTbaKDgwk8jTi3aSLHRlmWqHEUDUtxnbFigO4YE=
golang.org/x/term v0.46.0/go.mod h1:+K02xbkittuwc0Am4abfA3Fc+XRGXkvBXNO88NCXPoc=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8=
golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M=
golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=
golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=
golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI=
golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E=
golang.org/x/time v0.16.0 h1:vMb6ptszcQMkcwiRTAuNNU50gom6++Q/6gY2hDM6VDE=
golang.org/x/time v0.16.0/go.mod h1:rVKOqvZeKvrDKTQiAHJ7wmwP0RzleSphoEA9RcdLA0s=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+1 -1
View File
@@ -1678,7 +1678,7 @@ func (f *File) AddTool(path string) error {
return nil
}
// RemoveTool removes a tool directive with the given path.
// DropTool removes a tool directive with the given path.
// It does nothing if no such tool directive exists.
func (f *File) DropTool(path string) error {
for _, t := range f.Tool {
+1 -1
View File
@@ -84,7 +84,7 @@ func ParseWork(file string, data []byte, fix VersionFixer) (*WorkFile, error) {
}
// Cleanup cleans up the file f after any edit operations.
// To avoid quadratic behavior, modifications like [WorkFile.DropRequire]
// To avoid quadratic behavior, modifications like [WorkFile.DropUse]
// clear the entry but do not remove it from the slice.
// Cleanup cleans out all the cleared entries.
func (f *WorkFile) Cleanup() {
+13 -1
View File
@@ -4,7 +4,9 @@
package http2
import "strings"
import (
"strings"
)
// The HTTP protocols are defined in terms of ASCII, not Unicode. This file
// contains helper functions which may use Unicode-aware functions which would
@@ -43,6 +45,16 @@ func isASCIIPrint(s string) bool {
return true
}
// isASCII returns whether s is ASCII.
func isASCII(s string) bool {
for i := 0; i < len(s); i++ {
if s[i] > 0x7f {
return false
}
}
return true
}
// asciiToLower returns the lowercase version of s if s is ASCII and printable,
// and whether or not it was.
func asciiToLower(s string) (lower string, ok bool) {
+1 -4
View File
@@ -121,10 +121,7 @@ func (b *dataBuffer) Write(p []byte) (int, error) {
// If the last chunk is empty, allocate a new chunk. Try to allocate
// enough to fully copy p plus any additional bytes we expect to
// receive. However, this may allocate less than len(p).
want := int64(len(p))
if b.expected > want {
want = b.expected
}
want := max(int64(len(p)), b.expected)
chunk := b.lastChunkOrAlloc(want)
n := copy(chunk[b.w:], p)
p = p[n:]
+47
View File
@@ -25,6 +25,8 @@ import (
//
// https://golang.org/pkg/net/http/#ResponseWriter
// https://golang.org/pkg/net/http/#example_ResponseWriter_trailers
//
// Deprecated: Use [http.TrailerPrefix] instead.
const TrailerPrefix = "Trailer:"
// Push errors.
@@ -38,16 +40,22 @@ var (
// The configuration conf may be nil.
//
// ConfigureServer must be called before s begins serving.
//
// Deprecated: Set [http.Server.Protocols] instead.
func ConfigureServer(s *http.Server, conf *Server) error {
return configureServer(s, conf)
}
// Server is an HTTP/2 server.
//
// Deprecated: Use [http.Server] instead.
type Server struct {
// MaxHandlers limits the number of http.Handler ServeHTTP goroutines
// which may run at a time over all connections.
// Negative or zero no limit.
// TODO: implement
//
// Deprecated: This field has never had any effect.
MaxHandlers int
// MaxConcurrentStreams optionally specifies the number of
@@ -56,6 +64,9 @@ type Server struct {
// which may be active globally, which is MaxHandlers.
// If zero, MaxConcurrentStreams defaults to at least 100, per
// the HTTP/2 spec's recommendations.
//
// Deprecated: Use [http.Server.HTTP2] and
// [http.HTTP2Config.MaxConcurrentStreams] instead.
MaxConcurrentStreams uint32
// MaxDecoderHeaderTableSize optionally specifies the http2
@@ -63,44 +74,67 @@ type Server struct {
// informs the remote endpoint of the maximum size of the header compression
// table used to decode header blocks, in octets. If zero, the default value
// of 4096 is used.
//
// Deprecated: Use [http.Server.HTTP2] and
// [http.HTTP2Config.MaxDecoderHeaderTableSize] instead.
MaxDecoderHeaderTableSize uint32
// MaxEncoderHeaderTableSize optionally specifies an upper limit for the
// header compression table used for encoding request headers. Received
// SETTINGS_HEADER_TABLE_SIZE settings are capped at this limit. If zero,
// the default value of 4096 is used.
//
// Deprecated: Use [http.Server.HTTP2] and
// [http.HTTP2Config.MaxEncoderHeaderTableSize] instead.
MaxEncoderHeaderTableSize uint32
// MaxReadFrameSize optionally specifies the largest frame
// this server is willing to read. A valid value is between
// 16k and 16M, inclusive. If zero or otherwise invalid, a
// default value is used.
//
// Deprecated: Use [http.Server.HTTP2] and
// [http.HTTP2Config.MaxReadFrameSize] instead.
MaxReadFrameSize uint32
// PermitProhibitedCipherSuites, if true, permits the use of
// cipher suites prohibited by the HTTP/2 spec.
//
// Deprecated: Use [http.Server.HTTP2] and
// [http.HTTP2Config.PermitProhibitedCipherSuites] instead.
PermitProhibitedCipherSuites bool
// IdleTimeout specifies how long until idle clients should be
// closed with a GOAWAY frame. PING frames are not considered
// activity for the purposes of IdleTimeout.
// If zero or negative, there is no timeout.
//
// Deprecated: Use [http.Server.IdleTimeout] instead.
IdleTimeout time.Duration
// ReadIdleTimeout is the timeout after which a health check using a ping
// frame will be carried out if no frame is received on the connection.
// If zero, no health check is performed.
//
// Deprecated: Use [http.Server.HTTP2] and
// [http.HTTP2Config.SendPingTimeout] instead.
ReadIdleTimeout time.Duration
// PingTimeout is the timeout after which the connection will be closed
// if a response to a ping is not received.
// If zero, a default of 15 seconds is used.
//
// Deprecated: Use [http.Server.HTTP2] and
// [http.HTTP2Config.PingTimeout] instead.
PingTimeout time.Duration
// WriteByteTimeout is the timeout after which a connection will be
// closed if no data can be written to it. The timeout begins when data is
// available to write, and is extended whenever any bytes are written.
// If zero or negative, there is no timeout.
//
// Deprecated: Use [http.Server.HTTP2] and
// [http.HTTP2Config.WriteByteTimeout] instead.
WriteByteTimeout time.Duration
// MaxUploadBufferPerConnection is the size of the initial flow
@@ -108,12 +142,18 @@ type Server struct {
// allow this to be smaller than 65535 or larger than 2^32-1.
// If the value is outside this range, a default value will be
// used instead.
//
// Deprecated: Use [http.Server.HTTP2] and
// [http.HTTP2Config.MaxReceiveBufferPerConnection] instead.
MaxUploadBufferPerConnection int32
// MaxUploadBufferPerStream is the size of the initial flow control
// window for each stream. The HTTP/2 spec does not allow this to
// be larger than 2^32-1. If the value is zero or larger than the
// maximum, a default value will be used instead.
//
// Deprecated: Use [http.Server.HTTP2] and
// [http.HTTP2Config.MaxReceiveBufferPerStream] instead.
MaxUploadBufferPerStream int32
// NewWriteScheduler constructs a write scheduler for a connection.
@@ -126,6 +166,9 @@ type Server struct {
// It's intended to increment a metric for monitoring, such
// as an expvar or Prometheus metric.
// The errType consists of only ASCII word characters.
//
// Deprecated: Use [http.Server.HTTP2] and
// [http.HTTP2Config.CountError] instead.
CountError func(errType string)
// Internal state. This is a pointer (rather than embedded directly)
@@ -135,6 +178,8 @@ type Server struct {
}
// ServeConnOpts are options for the Server.ServeConn method.
//
// Deprecated: ServeConnOpts is deprecated.
type ServeConnOpts struct {
// Context is the base context to use.
// If nil, context.Background is used.
@@ -178,6 +223,8 @@ type ServeConnOpts struct {
// implemented in terms of providing a suitably-behaving net.Conn.
//
// The opts parameter is optional. If nil, default values are used.
//
// Deprecated: Use [http.Server.Serve] or [http.Server.ServeTLS] instead.
func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) {
if opts == nil {
opts = &ServeConnOpts{}
+2
View File
@@ -184,6 +184,8 @@ func (t *Transport) initConnPool() {
// ClientConn is the state of a single HTTP/2 client connection to an
// HTTP/2 server.
//
// Deprecated: Use [http.ClientConn] instead.
type ClientConn struct {
t *Transport
tconn net.Conn // usually *tls.Conn, except specialized impls
+74 -5
View File
@@ -24,6 +24,8 @@ import (
// It returns an error if t1 has already been HTTP/2-enabled.
//
// Use ConfigureTransports instead to configure the HTTP/2 Transport.
//
// Deprecated: Set [http.Transport.Protocols] instead.
func ConfigureTransport(t1 *http.Transport) error {
return configureTransport(t1)
}
@@ -31,6 +33,8 @@ func ConfigureTransport(t1 *http.Transport) error {
// ConfigureTransports configures a net/http HTTP/1 Transport to use HTTP/2.
// It returns a new HTTP/2 Transport for further configuration.
// It returns an error if t1 has already been HTTP/2-enabled.
//
// Deprecated: Set [http.Transport.Protocols] instead.
func ConfigureTransports(t1 *http.Transport) (*Transport, error) {
return configureTransports(t1)
}
@@ -39,6 +43,8 @@ func ConfigureTransports(t1 *http.Transport) (*Transport, error) {
//
// A Transport internally caches connections to servers. It is safe
// for concurrent use by multiple goroutines.
//
// Deprecated: Use [http.Transport] instead.
type Transport struct {
// DialTLSContext specifies an optional dial function with context for
// creating TLS connections for requests.
@@ -47,6 +53,8 @@ type Transport struct {
//
// If the returned net.Conn has a ConnectionState method like tls.Conn,
// it will be used to set http.Response.TLS.
//
// Deprecated: Use [http.Transport.DialTLSContext] instead.
DialTLSContext func(ctx context.Context, network, addr string, cfg *tls.Config) (net.Conn, error)
// DialTLS specifies an optional dial function for creating
@@ -54,17 +62,21 @@ type Transport struct {
//
// If DialTLSContext and DialTLS is nil, tls.Dial is used.
//
// Deprecated: Use DialTLSContext instead, which allows the transport
// to cancel dials as soon as they are no longer needed.
// If both are set, DialTLSContext takes priority.
// Deprecated: Use [http.Transport.DialTLSContext] instead.
DialTLS func(network, addr string, cfg *tls.Config) (net.Conn, error)
// TLSClientConfig specifies the TLS configuration to use with
// tls.Client. If nil, the default configuration is used.
//
// Deprecated: Use [http.Transport.TLSClientConfig] instead.
TLSClientConfig *tls.Config
// ConnPool optionally specifies an alternate connection pool to use.
// If nil, the default is used.
//
// Deprecated: To create a custom connection pool, implement
// [http.RoundTripper]. Use [http.Transport.NewClientConn]
// to create connections for the pool.
ConnPool ClientConnPool
// DisableCompression, if true, prevents the Transport from
@@ -75,10 +87,14 @@ type Transport struct {
// decoded in the Response.Body. However, if the user
// explicitly requested gzip it is not automatically
// uncompressed.
//
// Deprecated: Use [http.Transport.DisableCompression] instead.
DisableCompression bool
// AllowHTTP, if true, permits HTTP/2 requests using the insecure,
// plain-text "http" scheme. Note that this does not enable h2c support.
//
// Deprecated: Use [http.Transport.Protocols] instead.
AllowHTTP bool
// MaxHeaderListSize is the http2 SETTINGS_MAX_HEADER_LIST_SIZE to
@@ -88,6 +104,8 @@ type Transport struct {
// want to advertise an unlimited value to the peer, Transport
// interprets the highest possible value here (0xffffffff or 1<<32-1)
// to mean no limit.
//
// Deprecated: Use [http.Transport.MaxResponseHeaderBytes] instead.
MaxHeaderListSize uint32
// MaxReadFrameSize is the http2 SETTINGS_MAX_FRAME_SIZE to send in the
@@ -97,6 +115,9 @@ type Transport struct {
// according to the spec:
// https://datatracker.ietf.org/doc/html/rfc7540#section-6.5.2.
// Values are bounded in the range 16k to 16M.
//
// Deprecated: Use [http.Transport.HTTP2] and
// [http.HTTP2Config.MaxReadFrameSize] instead.
MaxReadFrameSize uint32
// MaxDecoderHeaderTableSize optionally specifies the http2
@@ -104,12 +125,18 @@ type Transport struct {
// informs the remote endpoint of the maximum size of the header compression
// table used to decode header blocks, in octets. If zero, the default value
// of 4096 is used.
//
// Deprecated: Use [http.Transport.HTTP2] and
// [http.HTTP2Config.MaxDecoderHeaderTableSize] instead.
MaxDecoderHeaderTableSize uint32
// MaxEncoderHeaderTableSize optionally specifies an upper limit for the
// header compression table used for encoding request headers. Received
// SETTINGS_HEADER_TABLE_SIZE settings are capped at this limit. If zero,
// the default value of 4096 is used.
//
// Deprecated: Use [http.Transport.HTTP2] and
// [http.HTTP2Config.MaxEncoderHeaderTableSize] instead.
MaxEncoderHeaderTableSize uint32
// StrictMaxConcurrentStreams controls whether the server's
@@ -120,12 +147,17 @@ type Transport struct {
// server's SETTINGS_MAX_CONCURRENT_STREAMS is interpreted as
// a global limit and callers of RoundTrip block when needed,
// waiting for their turn.
//
// Deprecated: Use [http.Transport.HTTP2] and
// [http.HTTP2Config.StrictMaxConcurrentRequests] instead.
StrictMaxConcurrentStreams bool
// IdleConnTimeout is the maximum amount of time an idle
// (keep-alive) connection will remain idle before closing
// itself.
// Zero means no limit.
//
// Deprecated: Use [http.Transport.IdleConnTimeout] instead.
IdleConnTimeout time.Duration
// ReadIdleTimeout is the timeout after which a health check using ping
@@ -134,22 +166,34 @@ type Transport struct {
// there is no other traffic on the connection, the health check will
// be performed every ReadIdleTimeout interval.
// If zero, no health check is performed.
//
// Deprecated: Use [http.Transport.HTTP2] and
// [http.HTTP2Config.SendPingTimeout] instead.
ReadIdleTimeout time.Duration
// PingTimeout is the timeout after which the connection will be closed
// if a response to Ping is not received.
// Defaults to 15s.
//
// Deprecated: Use [http.Transport.HTTP2] and
// [http.HTTP2Config.PingTimeout] instead.
PingTimeout time.Duration
// WriteByteTimeout is the timeout after which the connection will be
// closed no data can be written to it. The timeout begins when data is
// available to write, and is extended whenever any bytes are written.
//
// Deprecated: Use [http.Transport.HTTP2] and
// [http.HTTP2Config.WriteByteTimeout] instead.
WriteByteTimeout time.Duration
// CountError, if non-nil, is called on HTTP/2 transport errors.
// It's intended to increment a metric for monitoring, such
// as an expvar or Prometheus metric.
// The errType consists of only ASCII word characters.
//
// Deprecated: Use [http.Transport.HTTP2] and
// [http.HTTP2Config.CountError] instead.
CountError func(errType string)
// Internal state, differs between wrapped and non-wrapped implementations.
@@ -165,6 +209,10 @@ var (
)
// ClientConnPool manages a pool of HTTP/2 client connections.
//
// Deprecated: To create a custom connection pool, implement
// [http.RoundTripper]. Use [http.Transport.NewClientConn]
// to create connections for the pool.
type ClientConnPool interface {
// GetClientConn returns a specific HTTP/2 connection (usually
// a TLS-TCP connection) to an HTTP/2 server. On success, the
@@ -177,6 +225,8 @@ type ClientConnPool interface {
}
// ClientConnState describes the state of a ClientConn.
//
// Deprecated: Use [http.ClientConn] instead.
type ClientConnState struct {
// Closed is whether the connection is closed.
Closed bool
@@ -210,6 +260,8 @@ type ClientConnState struct {
}
// RoundTripOpt are options for the Transport.RoundTripOpt method.
//
// Deprecated: There are no options to set.
type RoundTripOpt struct {
// OnlyCachedConn controls whether RoundTripOpt may
// create a new TCP connection. If set true and
@@ -222,11 +274,14 @@ type RoundTripOpt struct {
allowHTTP bool // allow http:// URLs
}
// Deprecated: Use [http.Transport.RoundTrip] instead.
func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) {
return t.RoundTripOpt(req, RoundTripOpt{})
}
// RoundTripOpt is like RoundTrip, but takes options.
//
// Deprecated: Use [http.Transport.RoundTrip] instead.
func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Response, error) {
return t.roundTripOpt(req, opt)
}
@@ -234,10 +289,15 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res
// CloseIdleConnections closes any connections which were previously
// connected from previous requests but are now sitting idle.
// It does not interrupt any connections currently in use.
//
// Deprecated: Use [http.Transport.CloseIdleConnections] instead.
func (t *Transport) CloseIdleConnections() {
t.closeIdleConnections()
}
// NewClientConn is deprecated.
//
// Deprecated: Use [http.Transport.NewClientConn] instead.
func (t *Transport) NewClientConn(c net.Conn) (*ClientConn, error) {
return t.newUserClientConn(c)
}
@@ -256,8 +316,15 @@ func authorityAddr(scheme string, authority string) (addr string) {
port = "80"
}
}
if a, err := idna.ToASCII(host); err == nil {
host = a
// Skip IDNA processing on hosts which are already ASCII.
// This is consistent with net/http and the WHATWG URL Specification.
// (We currently don't follow all of WHATWG, but we're aligned on
// permitting all-ASCII hostnames which fail IDNA validation.
// There are existing, valid domain names which TR #46 processing rejects.)
if !isASCII(host) {
if a, err := idna.Lookup.ToASCII(host); err == nil && a != "" {
host = a
}
}
// IPv6 address literal, without a port:
if strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]") {
@@ -414,6 +481,8 @@ func (t *Transport) dialTLSWithContext(ctx context.Context, network, addr string
// GoAwayError is returned by the Transport when the server closes the
// TCP connection after sending a GOAWAY frame.
//
// Deprecated: GoAwayError is deprecated.
type GoAwayError struct {
LastStreamID uint32
ErrCode ErrCode
+2
View File
@@ -216,6 +216,8 @@ func (t *Transport) newUserClientConn(c net.Conn) (*ClientConn, error) {
// ClientConn is the state of a single HTTP/2 client connection to an
// HTTP/2 server.
//
// Deprecated: Use [http.ClientConn] instead.
type ClientConn struct {
cc *http.ClientConn
tconn net.Conn
+7
View File
@@ -0,0 +1,7 @@
These two packages are identical:
- net/http/internal/httpcommon
- golang.org/x/net/internal/httpcommon
The two are kept in sync manually.
Any change to one should be made in the other.
+31 -3
View File
@@ -391,6 +391,7 @@ type ServerRequestParam struct {
// ServerRequestResult is the result of NewServerRequest.
type ServerRequestResult struct {
// Various http.Request fields.
Host string
URL *url.URL
RequestURI string
Trailer map[string][]string
@@ -433,20 +434,46 @@ func NewServerRequest(rp ServerRequestParam) ServerRequestResult {
}
delete(rp.Header, "Trailer")
authority := rp.Authority
if host := rp.Header["Host"]; len(host) == 1 {
// HTTP/2 and HTTP/3 permit the Host header to be present,
// but it must match the :authority pseudo-header.
if authority == "" {
authority = host[0]
} else if host[0] != authority {
return ServerRequestResult{
InvalidReason: "authority_host_mismatch",
}
}
delete(rp.Header, "Host")
} else if len(host) > 1 {
// HTTP/1.1 rejects any request containing more than one Host header.
// HTTP/2 and HTTP/3 don't use the Host header, but reject multiple anyway.
return ServerRequestResult{
InvalidReason: "multiple_host_headers",
}
}
// "':authority' MUST NOT include the deprecated userinfo subcomponent
// for "http" or "https" schemed URIs."
// https://www.rfc-editor.org/rfc/rfc9113.html#section-8.3.1-2.3.8
if strings.IndexByte(rp.Authority, '@') != -1 && (rp.Scheme == "http" || rp.Scheme == "https") {
if strings.IndexByte(authority, '@') != -1 && (rp.Scheme == "http" || rp.Scheme == "https") {
return ServerRequestResult{
InvalidReason: "userinfo_in_authority",
}
}
if authority != "" && !httpguts.ValidHostHeader(authority) {
return ServerRequestResult{
InvalidReason: "invalid_authority",
}
}
var url_ *url.URL
var requestURI string
if rp.Method == "CONNECT" && rp.Protocol == "" {
url_ = &url.URL{Host: rp.Authority}
requestURI = rp.Authority // mimic HTTP/1 server behavior
url_ = &url.URL{Host: authority}
requestURI = authority // mimic HTTP/1 server behavior
} else {
// "[The :path] pseudo-header field MUST NOT be empty [...]"
// https://www.rfc-editor.org/rfc/rfc9113.html#section-8.3.1-2.4.2
@@ -467,6 +494,7 @@ func NewServerRequest(rp ServerRequestParam) ServerRequestResult {
}
return ServerRequestResult{
Host: authority,
URL: url_,
NeedsContinue: needsContinue,
RequestURI: requestURI,
+1 -4
View File
@@ -70,10 +70,7 @@ func log2(i int64) int {
}
func getBucket(i int64) (index int) {
index = log2(i) - 1
if index < 0 {
index = 0
}
index = max(log2(i)-1, 0)
if index >= bucketCount {
index = bucketCount - 1
}
+7 -1
View File
@@ -22,7 +22,13 @@ import (
// fields can be get and set using the following methods:
// - Uint16/SetUint16: flags
// - Uint32/SetUint32: ifindex, metric, mtu
type Ifreq struct{ raw ifreq }
type Ifreq struct {
// Aligns the union for the accessors below, which cast it in place;
// the generated ifreq is all byte arrays, so its alignment is one.
_ [0]int64
raw ifreq
}
// NewIfreq creates an Ifreq with the input network interface name after
// validating the name does not exceed IFNAMSIZ-1 (trailing NULL required)
+7
View File
@@ -332,3 +332,10 @@ func IoctlLoopSetStatus64(fd int, value *LoopInfo64) error {
func IoctlLoopConfigure(fd int, value *LoopConfig) error {
return ioctlPtr(fd, LOOP_CONFIGURE, unsafe.Pointer(value))
}
// IoctlPidfdInfo fetches information about a pidfd.
// The Mask field of the info argument indicates which
// values to fetch.
func IoctlPidfdInfo(fd int, info *PidfdInfo) error {
return ioctlPtr(fd, PIDFD_GET_INFO, unsafe.Pointer(info))
}
+1 -8
View File
@@ -290,14 +290,7 @@ struct ltchars {
#include <mtd/mtd-user.h>
#include <net/route.h>
#if defined(__sparc__)
// On sparc{,64}, the kernel defines struct termios2 itself which clashes with the
// definition in glibc. As only the error constants are needed here, include the
// generic termibits.h (which is included by termbits.h on sparc).
#include <asm-generic/termbits.h>
#else
#include <asm/termbits.h>
#endif
#ifndef PTRACE_GETREGS
#define PTRACE_GETREGS 0xc
@@ -544,7 +537,7 @@ ccflags="$@"
$2 ~ /^LO_(KEY|NAME)_SIZE$/ ||
$2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ ||
$2 == "LOOP_CONFIGURE" ||
$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ ||
$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|MLOCK|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ ||
$2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ ||
$2 ~ /^NFC_.*_(MAX)?SIZE$/ ||
$2 ~ /^PTP_/ ||
+1 -1
View File
@@ -76,7 +76,7 @@ func BytePtrToString(p *byte) string {
// Find NUL terminator.
n := 0
for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {
ptr = unsafe.Pointer(uintptr(ptr) + 1)
ptr = unsafe.Add(ptr, 1)
}
return string(unsafe.Slice(p, n))
+1 -1
View File
@@ -188,7 +188,7 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
}
sa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL
sa.raw.Family = AF_UNIX
for i := 0; i < n; i++ {
for i := range n {
sa.raw.Path[i] = int8(name[i])
}
return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil
+1 -1
View File
@@ -2363,7 +2363,7 @@ func (fh *FileHandle) Bytes() []byte {
if n == 0 {
return nil
}
return unsafe.Slice((*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type))+4)), n)
return unsafe.Slice((*byte)(unsafe.Add(unsafe.Pointer(&fh.fileHandle.Type), 4)), n)
}
// NameToHandleAt wraps the name_to_handle_at system call; it obtains
+2
View File
@@ -2048,6 +2048,7 @@ const (
MINIX3_SUPER_MAGIC = 0x4d5a
MINIX_SUPER_MAGIC = 0x137f
MINIX_SUPER_MAGIC2 = 0x138f
MLOCK_ONFAULT = 0x1
MNT_DETACH = 0x2
MNT_EXPIRE = 0x4
MNT_FORCE = 0x1
@@ -3862,6 +3863,7 @@ const (
TIOCPKT_NOSTOP = 0x10
TIOCPKT_START = 0x8
TIOCPKT_STOP = 0x4
TIOCSER_TEMT = 0x1
TIPC_ADDR_ID = 0x3
TIPC_ADDR_MCAST = 0x1
TIPC_ADDR_NAME = 0x2
-1
View File
@@ -483,7 +483,6 @@ const (
TIOCSERGWILD = 0x5454
TIOCSERSETMULTI = 0x545b
TIOCSERSWILD = 0x5455
TIOCSER_TEMT = 0x1
TIOCSETD = 0x5423
TIOCSIG = 0x40045436
TIOCSISO7816 = 0xc0285443
-1
View File
@@ -484,7 +484,6 @@ const (
TIOCSERGWILD = 0x5454
TIOCSERSETMULTI = 0x545b
TIOCSERSWILD = 0x5455
TIOCSER_TEMT = 0x1
TIOCSETD = 0x5423
TIOCSIG = 0x40045436
TIOCSISO7816 = 0xc0285443
-1
View File
@@ -489,7 +489,6 @@ const (
TIOCSERGWILD = 0x5454
TIOCSERSETMULTI = 0x545b
TIOCSERSWILD = 0x5455
TIOCSER_TEMT = 0x1
TIOCSETD = 0x5423
TIOCSIG = 0x40045436
TIOCSISO7816 = 0xc0285443
-1
View File
@@ -483,7 +483,6 @@ const (
TIOCSERGWILD = 0x5454
TIOCSERSETMULTI = 0x545b
TIOCSERSWILD = 0x5455
TIOCSER_TEMT = 0x1
TIOCSETD = 0x5423
TIOCSIG = 0x40045436
TIOCSISO7816 = 0xc0285443
-1
View File
@@ -476,7 +476,6 @@ const (
TIOCSERGWILD = 0x5454
TIOCSERSETMULTI = 0x545b
TIOCSERSWILD = 0x5455
TIOCSER_TEMT = 0x1
TIOCSETD = 0x5423
TIOCSIG = 0x40045436
TIOCSISO7816 = 0xc0285443
-1
View File
@@ -481,7 +481,6 @@ const (
TIOCSERGWILD = 0x5489
TIOCSERSETMULTI = 0x5490
TIOCSERSWILD = 0x548a
TIOCSER_TEMT = 0x1
TIOCSETD = 0x7401
TIOCSETN = 0x740a
TIOCSETP = 0x7409
-1
View File
@@ -481,7 +481,6 @@ const (
TIOCSERGWILD = 0x5489
TIOCSERSETMULTI = 0x5490
TIOCSERSWILD = 0x548a
TIOCSER_TEMT = 0x1
TIOCSETD = 0x7401
TIOCSETN = 0x740a
TIOCSETP = 0x7409
-1
View File
@@ -481,7 +481,6 @@ const (
TIOCSERGWILD = 0x5489
TIOCSERSETMULTI = 0x5490
TIOCSERSWILD = 0x548a
TIOCSER_TEMT = 0x1
TIOCSETD = 0x7401
TIOCSETN = 0x740a
TIOCSETP = 0x7409
-1
View File
@@ -481,7 +481,6 @@ const (
TIOCSERGWILD = 0x5489
TIOCSERSETMULTI = 0x5490
TIOCSERSWILD = 0x548a
TIOCSER_TEMT = 0x1
TIOCSETD = 0x7401
TIOCSETN = 0x740a
TIOCSETP = 0x7409
-1
View File
@@ -535,7 +535,6 @@ const (
TIOCSERGWILD = 0x5454
TIOCSERSETMULTI = 0x545b
TIOCSERSWILD = 0x5455
TIOCSER_TEMT = 0x1
TIOCSETC = 0x80067411
TIOCSETD = 0x5423
TIOCSETN = 0x8006740a
-1
View File
@@ -539,7 +539,6 @@ const (
TIOCSERGWILD = 0x5454
TIOCSERSETMULTI = 0x545b
TIOCSERSWILD = 0x5455
TIOCSER_TEMT = 0x1
TIOCSETC = 0x80067411
TIOCSETD = 0x5423
TIOCSETN = 0x8006740a
-1
View File
@@ -539,7 +539,6 @@ const (
TIOCSERGWILD = 0x5454
TIOCSERSETMULTI = 0x545b
TIOCSERSWILD = 0x5455
TIOCSER_TEMT = 0x1
TIOCSETC = 0x80067411
TIOCSETD = 0x5423
TIOCSETN = 0x8006740a
-1
View File
@@ -486,7 +486,6 @@ const (
TIOCSERGWILD = 0x5454
TIOCSERSETMULTI = 0x545b
TIOCSERSWILD = 0x5455
TIOCSER_TEMT = 0x1
TIOCSETD = 0x5423
TIOCSIG = 0x40045436
TIOCSISO7816 = 0xc0285443
-1
View File
@@ -545,7 +545,6 @@ const (
TIOCSERGWILD = 0x5454
TIOCSERSETMULTI = 0x545b
TIOCSERSWILD = 0x5455
TIOCSER_TEMT = 0x1
TIOCSETD = 0x5423
TIOCSIG = 0x40045436
TIOCSISO7816 = 0xc0285443
+20 -15
View File
@@ -14,21 +14,21 @@ const (
ASI_LEON_DFLUSH = 0x11
ASI_LEON_IFLUSH = 0x10
ASI_LEON_MMUFLUSH = 0x18
B1000000 = 0x1008
B1000000 = 0x100c
B115200 = 0x1002
B1152000 = 0x1009
B1500000 = 0x100a
B2000000 = 0x100b
B1152000 = 0x100d
B1500000 = 0x100e
B153600 = 0x1006
B2000000 = 0x100f
B230400 = 0x1003
B2500000 = 0x100c
B3000000 = 0x100d
B3500000 = 0x100e
B4000000 = 0x100f
B307200 = 0x1007
B460800 = 0x1004
B500000 = 0x1005
B500000 = 0x100a
B57600 = 0x1001
B576000 = 0x1006
B921600 = 0x1007
B576000 = 0x100b
B614400 = 0x1008
B76800 = 0x1005
B921600 = 0x1009
BLKALIGNOFF = 0x2000127a
BLKBSZGET = 0x40081270
BLKBSZSET = 0x80081271
@@ -91,7 +91,7 @@ const (
FFDLY = 0x8000
FICLONE = 0x80049409
FICLONERANGE = 0x8020940d
FLUSHO = 0x1000
FLUSHO = 0x2000
FS_IOC_ENABLE_VERITY = 0x80806685
FS_IOC_GETFLAGS = 0x40086601
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
@@ -563,6 +563,9 @@ const (
TIOCM_CD = 0x40
TIOCM_CTS = 0x20
TIOCM_DSR = 0x100
TIOCM_LOOP = 0x8000
TIOCM_OUT1 = 0x2000
TIOCM_OUT2 = 0x4000
TIOCM_RI = 0x80
TIOCM_RNG = 0x80
TIOCM_SR = 0x10
@@ -641,10 +644,11 @@ const (
UBI_IOCVOLRMBLK = 0x20004f08
UBI_IOCVOLUP = 0x80084f00
VDISCARD = 0xd
VDSUSP = 0xb
VEOF = 0x4
VEOL = 0xb
VEOL2 = 0x10
VMIN = 0x6
VEOL = 0x5
VEOL2 = 0x6
VMIN = 0x4
VREPRINT = 0xc
VSTART = 0x8
VSTOP = 0x9
@@ -664,6 +668,7 @@ const (
WDIOC_KEEPALIVE = 0x40045705
WDIOC_SETOPTIONS = 0x40045704
WORDSIZE = 0x40
WRAP = 0x20000
XCASE = 0x4
XTABS = 0x1800
_HIDIOCGRAWNAME = 0x40804804
+79 -7
View File
@@ -4264,19 +4264,29 @@ type HwTstampConfig struct {
}
const (
HWTSTAMP_FILTER_NONE = 0x0
HWTSTAMP_FILTER_ALL = 0x1
HWTSTAMP_FILTER_SOME = 0x2
HWTSTAMP_FILTER_PTP_V1_L4_EVENT = 0x3
HWTSTAMP_FILTER_PTP_V2_L4_EVENT = 0x6
HWTSTAMP_FILTER_PTP_V2_L2_EVENT = 0x9
HWTSTAMP_FILTER_PTP_V2_EVENT = 0xc
HWTSTAMP_FILTER_NONE = 0x0
HWTSTAMP_FILTER_ALL = 0x1
HWTSTAMP_FILTER_SOME = 0x2
HWTSTAMP_FILTER_PTP_V1_L4_EVENT = 0x3
HWTSTAMP_FILTER_PTP_V1_L4_SYNC = 0x4
HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ = 0x5
HWTSTAMP_FILTER_PTP_V2_L4_EVENT = 0x6
HWTSTAMP_FILTER_PTP_V2_L4_SYNC = 0x7
HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ = 0x8
HWTSTAMP_FILTER_PTP_V2_L2_EVENT = 0x9
HWTSTAMP_FILTER_PTP_V2_L2_SYNC = 0xa
HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ = 0xb
HWTSTAMP_FILTER_PTP_V2_EVENT = 0xc
HWTSTAMP_FILTER_PTP_V2_SYNC = 0xd
HWTSTAMP_FILTER_PTP_V2_DELAY_REQ = 0xe
HWTSTAMP_FILTER_NTP_ALL = 0xf
)
const (
HWTSTAMP_TX_OFF = 0x0
HWTSTAMP_TX_ON = 0x1
HWTSTAMP_TX_ONESTEP_SYNC = 0x2
HWTSTAMP_TX_ONESTEP_P2P = 0x3
)
type (
@@ -4541,6 +4551,48 @@ const (
LANDLOCK_RULE_PATH_BENEATH = 0x1
)
const (
PIDFD_SIGNAL_THREAD = 0x1
PIDFD_SIGNAL_THREAD_GROUP = 0x2
PIDFD_SIGNAL_PROCESS_GROUP = 0x4
PIDFD_SELF_THREAD = -0x2710
PIDFD_SELF_THREAD_GROUP = -0x2711
PIDFD_SELF = -0x2710
PIDFD_SELF_PROCESS = -0x2711
PIDFD_INFO_PID = 0x1
PIDFD_INFO_CREDS = 0x2
PIDFD_INFO_CGROUPID = 0x4
PIDFD_INFO_EXIT = 0x8
PIDFD_INFO_COREDUMP = 0x10
PIDFD_COREDUMPED = 0x1
PIDFD_COREDUMP_SKIP = 0x2
PIDFD_COREDUMP_USER = 0x4
PIDFD_COREDUMP_ROOT = 0x8
PIDFD_INFO_SIZE_VER0 = 0x40
PIDFD_GET_INFO = 0xc048ff0b
)
const SizeofPidfdInfo = 0x48
type PidfdInfo struct {
Mask uint64
Cgroupid uint64
Pid uint32
Tgid uint32
Ppid uint32
Ruid uint32
Rgid uint32
Euid uint32
Egid uint32
Suid uint32
Sgid uint32
Fsuid uint32
Fsgid uint32
Exit_code int32
Coredump_mask uint32
_ uint32
}
const (
IPC_CREAT = 0x200
IPC_EXCL = 0x400
@@ -6473,3 +6525,23 @@ type GPIOV2LineEvent struct {
Line_seqno uint32
_ [6]uint32
}
const (
IPMI_MAX_ADDR_SIZE = 0x20
IPMI_SYSTEM_INTERFACE_ADDR_TYPE = 0xc
IPMI_BMC_CHANNEL = 0xf
IPMI_RESPONSE_RECV_TYPE = 0x1
)
type IPMISystemInterfaceAddr struct {
Type int32
Channel int16
Lun uint8
_ [1]byte
}
type IPMIMsg struct {
Netfn uint8
Cmd uint8
Len uint16
Data *uint8
}
+31 -1
View File
@@ -680,7 +680,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x800
PIDFD_NONBLOCK = 0x800
PIDFD_THREAD = 0x80
PIDFD_GET_CGROUP_NAMESPACE = 0xff01
PIDFD_GET_IPC_NAMESPACE = 0xff02
PIDFD_GET_MNT_NAMESPACE = 0xff03
PIDFD_GET_NET_NAMESPACE = 0xff04
PIDFD_GET_PID_NAMESPACE = 0xff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0xff06
PIDFD_GET_TIME_NAMESPACE = 0xff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0xff08
PIDFD_GET_USER_NAMESPACE = 0xff09
PIDFD_GET_UTS_NAMESPACE = 0xff0a
)
type SysvIpcPerm struct {
@@ -715,3 +726,22 @@ type SysvShmDesc struct {
const (
GPIO_GET_CHIPINFO_IOCTL = 0x8044b401
)
const (
IPMICTL_SEND_COMMAND = 0x8014690d
IPMICTL_RECEIVE_MSG = 0xc018690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int32
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int32
Msg IPMIMsg
}
+31 -1
View File
@@ -697,7 +697,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x800
PIDFD_NONBLOCK = 0x800
PIDFD_THREAD = 0x80
PIDFD_GET_CGROUP_NAMESPACE = 0xff01
PIDFD_GET_IPC_NAMESPACE = 0xff02
PIDFD_GET_MNT_NAMESPACE = 0xff03
PIDFD_GET_NET_NAMESPACE = 0xff04
PIDFD_GET_PID_NAMESPACE = 0xff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0xff06
PIDFD_GET_TIME_NAMESPACE = 0xff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0xff08
PIDFD_GET_USER_NAMESPACE = 0xff09
PIDFD_GET_UTS_NAMESPACE = 0xff0a
)
type SysvIpcPerm struct {
@@ -729,3 +740,22 @@ type SysvShmDesc struct {
const (
GPIO_GET_CHIPINFO_IOCTL = 0x8044b401
)
const (
IPMICTL_SEND_COMMAND = 0x8028690d
IPMICTL_RECEIVE_MSG = 0xc030690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int64
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int64
Msg IPMIMsg
}
+31 -1
View File
@@ -674,7 +674,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x800
PIDFD_NONBLOCK = 0x800
PIDFD_THREAD = 0x80
PIDFD_GET_CGROUP_NAMESPACE = 0xff01
PIDFD_GET_IPC_NAMESPACE = 0xff02
PIDFD_GET_MNT_NAMESPACE = 0xff03
PIDFD_GET_NET_NAMESPACE = 0xff04
PIDFD_GET_PID_NAMESPACE = 0xff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0xff06
PIDFD_GET_TIME_NAMESPACE = 0xff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0xff08
PIDFD_GET_USER_NAMESPACE = 0xff09
PIDFD_GET_UTS_NAMESPACE = 0xff0a
)
type SysvIpcPerm struct {
@@ -709,3 +720,22 @@ type SysvShmDesc struct {
const (
GPIO_GET_CHIPINFO_IOCTL = 0x8044b401
)
const (
IPMICTL_SEND_COMMAND = 0x8014690d
IPMICTL_RECEIVE_MSG = 0xc018690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int32
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int32
Msg IPMIMsg
}
+31 -1
View File
@@ -676,7 +676,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x800
PIDFD_NONBLOCK = 0x800
PIDFD_THREAD = 0x80
PIDFD_GET_CGROUP_NAMESPACE = 0xff01
PIDFD_GET_IPC_NAMESPACE = 0xff02
PIDFD_GET_MNT_NAMESPACE = 0xff03
PIDFD_GET_NET_NAMESPACE = 0xff04
PIDFD_GET_PID_NAMESPACE = 0xff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0xff06
PIDFD_GET_TIME_NAMESPACE = 0xff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0xff08
PIDFD_GET_USER_NAMESPACE = 0xff09
PIDFD_GET_UTS_NAMESPACE = 0xff0a
)
type SysvIpcPerm struct {
@@ -708,3 +719,22 @@ type SysvShmDesc struct {
const (
GPIO_GET_CHIPINFO_IOCTL = 0x8044b401
)
const (
IPMICTL_SEND_COMMAND = 0x8028690d
IPMICTL_RECEIVE_MSG = 0xc030690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int64
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int64
Msg IPMIMsg
}
+31 -1
View File
@@ -677,7 +677,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x800
PIDFD_NONBLOCK = 0x800
PIDFD_THREAD = 0x80
PIDFD_GET_CGROUP_NAMESPACE = 0xff01
PIDFD_GET_IPC_NAMESPACE = 0xff02
PIDFD_GET_MNT_NAMESPACE = 0xff03
PIDFD_GET_NET_NAMESPACE = 0xff04
PIDFD_GET_PID_NAMESPACE = 0xff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0xff06
PIDFD_GET_TIME_NAMESPACE = 0xff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0xff08
PIDFD_GET_USER_NAMESPACE = 0xff09
PIDFD_GET_UTS_NAMESPACE = 0xff0a
)
type SysvIpcPerm struct {
@@ -709,3 +720,22 @@ type SysvShmDesc struct {
const (
GPIO_GET_CHIPINFO_IOCTL = 0x8044b401
)
const (
IPMICTL_SEND_COMMAND = 0x8028690d
IPMICTL_RECEIVE_MSG = 0xc030690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int64
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int64
Msg IPMIMsg
}
+31 -1
View File
@@ -680,7 +680,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x80
PIDFD_NONBLOCK = 0x80
PIDFD_THREAD = 0x400
PIDFD_GET_CGROUP_NAMESPACE = 0x2000ff01
PIDFD_GET_IPC_NAMESPACE = 0x2000ff02
PIDFD_GET_MNT_NAMESPACE = 0x2000ff03
PIDFD_GET_NET_NAMESPACE = 0x2000ff04
PIDFD_GET_PID_NAMESPACE = 0x2000ff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0x2000ff06
PIDFD_GET_TIME_NAMESPACE = 0x2000ff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0x2000ff08
PIDFD_GET_USER_NAMESPACE = 0x2000ff09
PIDFD_GET_UTS_NAMESPACE = 0x2000ff0a
)
type SysvIpcPerm struct {
@@ -714,3 +725,22 @@ type SysvShmDesc struct {
const (
GPIO_GET_CHIPINFO_IOCTL = 0x4044b401
)
const (
IPMICTL_SEND_COMMAND = 0x4014690d
IPMICTL_RECEIVE_MSG = 0xc018690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int32
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int32
Msg IPMIMsg
}
+31 -1
View File
@@ -679,7 +679,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x80
PIDFD_NONBLOCK = 0x80
PIDFD_THREAD = 0x400
PIDFD_GET_CGROUP_NAMESPACE = 0x2000ff01
PIDFD_GET_IPC_NAMESPACE = 0x2000ff02
PIDFD_GET_MNT_NAMESPACE = 0x2000ff03
PIDFD_GET_NET_NAMESPACE = 0x2000ff04
PIDFD_GET_PID_NAMESPACE = 0x2000ff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0x2000ff06
PIDFD_GET_TIME_NAMESPACE = 0x2000ff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0x2000ff08
PIDFD_GET_USER_NAMESPACE = 0x2000ff09
PIDFD_GET_UTS_NAMESPACE = 0x2000ff0a
)
type SysvIpcPerm struct {
@@ -711,3 +722,22 @@ type SysvShmDesc struct {
const (
GPIO_GET_CHIPINFO_IOCTL = 0x4044b401
)
const (
IPMICTL_SEND_COMMAND = 0x4028690d
IPMICTL_RECEIVE_MSG = 0xc030690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int64
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int64
Msg IPMIMsg
}
+31 -1
View File
@@ -679,7 +679,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x80
PIDFD_NONBLOCK = 0x80
PIDFD_THREAD = 0x400
PIDFD_GET_CGROUP_NAMESPACE = 0x2000ff01
PIDFD_GET_IPC_NAMESPACE = 0x2000ff02
PIDFD_GET_MNT_NAMESPACE = 0x2000ff03
PIDFD_GET_NET_NAMESPACE = 0x2000ff04
PIDFD_GET_PID_NAMESPACE = 0x2000ff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0x2000ff06
PIDFD_GET_TIME_NAMESPACE = 0x2000ff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0x2000ff08
PIDFD_GET_USER_NAMESPACE = 0x2000ff09
PIDFD_GET_UTS_NAMESPACE = 0x2000ff0a
)
type SysvIpcPerm struct {
@@ -711,3 +722,22 @@ type SysvShmDesc struct {
const (
GPIO_GET_CHIPINFO_IOCTL = 0x4044b401
)
const (
IPMICTL_SEND_COMMAND = 0x4028690d
IPMICTL_RECEIVE_MSG = 0xc030690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int64
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int64
Msg IPMIMsg
}
+31 -1
View File
@@ -680,7 +680,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x80
PIDFD_NONBLOCK = 0x80
PIDFD_THREAD = 0x400
PIDFD_GET_CGROUP_NAMESPACE = 0x2000ff01
PIDFD_GET_IPC_NAMESPACE = 0x2000ff02
PIDFD_GET_MNT_NAMESPACE = 0x2000ff03
PIDFD_GET_NET_NAMESPACE = 0x2000ff04
PIDFD_GET_PID_NAMESPACE = 0x2000ff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0x2000ff06
PIDFD_GET_TIME_NAMESPACE = 0x2000ff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0x2000ff08
PIDFD_GET_USER_NAMESPACE = 0x2000ff09
PIDFD_GET_UTS_NAMESPACE = 0x2000ff0a
)
type SysvIpcPerm struct {
@@ -714,3 +725,22 @@ type SysvShmDesc struct {
const (
GPIO_GET_CHIPINFO_IOCTL = 0x4044b401
)
const (
IPMICTL_SEND_COMMAND = 0x4014690d
IPMICTL_RECEIVE_MSG = 0xc018690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int32
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int32
Msg IPMIMsg
}
+31 -1
View File
@@ -686,7 +686,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x800
PIDFD_NONBLOCK = 0x800
PIDFD_THREAD = 0x80
PIDFD_GET_CGROUP_NAMESPACE = 0x2000ff01
PIDFD_GET_IPC_NAMESPACE = 0x2000ff02
PIDFD_GET_MNT_NAMESPACE = 0x2000ff03
PIDFD_GET_NET_NAMESPACE = 0x2000ff04
PIDFD_GET_PID_NAMESPACE = 0x2000ff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0x2000ff06
PIDFD_GET_TIME_NAMESPACE = 0x2000ff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0x2000ff08
PIDFD_GET_USER_NAMESPACE = 0x2000ff09
PIDFD_GET_UTS_NAMESPACE = 0x2000ff0a
)
type SysvIpcPerm struct {
@@ -722,3 +733,22 @@ type SysvShmDesc struct {
const (
GPIO_GET_CHIPINFO_IOCTL = 0x4044b401
)
const (
IPMICTL_SEND_COMMAND = 0x4014690d
IPMICTL_RECEIVE_MSG = 0xc018690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int32
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int32
Msg IPMIMsg
}
+31 -1
View File
@@ -686,7 +686,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x800
PIDFD_NONBLOCK = 0x800
PIDFD_THREAD = 0x80
PIDFD_GET_CGROUP_NAMESPACE = 0x2000ff01
PIDFD_GET_IPC_NAMESPACE = 0x2000ff02
PIDFD_GET_MNT_NAMESPACE = 0x2000ff03
PIDFD_GET_NET_NAMESPACE = 0x2000ff04
PIDFD_GET_PID_NAMESPACE = 0x2000ff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0x2000ff06
PIDFD_GET_TIME_NAMESPACE = 0x2000ff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0x2000ff08
PIDFD_GET_USER_NAMESPACE = 0x2000ff09
PIDFD_GET_UTS_NAMESPACE = 0x2000ff0a
)
type SysvIpcPerm struct {
@@ -717,3 +728,22 @@ type SysvShmDesc struct {
const (
GPIO_GET_CHIPINFO_IOCTL = 0x4044b401
)
const (
IPMICTL_SEND_COMMAND = 0x4028690d
IPMICTL_RECEIVE_MSG = 0xc030690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int64
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int64
Msg IPMIMsg
}
+31 -1
View File
@@ -686,7 +686,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x800
PIDFD_NONBLOCK = 0x800
PIDFD_THREAD = 0x80
PIDFD_GET_CGROUP_NAMESPACE = 0x2000ff01
PIDFD_GET_IPC_NAMESPACE = 0x2000ff02
PIDFD_GET_MNT_NAMESPACE = 0x2000ff03
PIDFD_GET_NET_NAMESPACE = 0x2000ff04
PIDFD_GET_PID_NAMESPACE = 0x2000ff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0x2000ff06
PIDFD_GET_TIME_NAMESPACE = 0x2000ff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0x2000ff08
PIDFD_GET_USER_NAMESPACE = 0x2000ff09
PIDFD_GET_UTS_NAMESPACE = 0x2000ff0a
)
type SysvIpcPerm struct {
@@ -717,3 +728,22 @@ type SysvShmDesc struct {
const (
GPIO_GET_CHIPINFO_IOCTL = 0x4044b401
)
const (
IPMICTL_SEND_COMMAND = 0x4028690d
IPMICTL_RECEIVE_MSG = 0xc030690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int64
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int64
Msg IPMIMsg
}
+31 -1
View File
@@ -704,7 +704,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x800
PIDFD_NONBLOCK = 0x800
PIDFD_THREAD = 0x80
PIDFD_GET_CGROUP_NAMESPACE = 0xff01
PIDFD_GET_IPC_NAMESPACE = 0xff02
PIDFD_GET_MNT_NAMESPACE = 0xff03
PIDFD_GET_NET_NAMESPACE = 0xff04
PIDFD_GET_PID_NAMESPACE = 0xff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0xff06
PIDFD_GET_TIME_NAMESPACE = 0xff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0xff08
PIDFD_GET_USER_NAMESPACE = 0xff09
PIDFD_GET_UTS_NAMESPACE = 0xff0a
)
type SysvIpcPerm struct {
@@ -796,3 +807,22 @@ const (
const (
GPIO_GET_CHIPINFO_IOCTL = 0x8044b401
)
const (
IPMICTL_SEND_COMMAND = 0x8028690d
IPMICTL_RECEIVE_MSG = 0xc030690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int64
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int64
Msg IPMIMsg
}
+31 -1
View File
@@ -700,7 +700,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x800
PIDFD_NONBLOCK = 0x800
PIDFD_THREAD = 0x80
PIDFD_GET_CGROUP_NAMESPACE = 0xff01
PIDFD_GET_IPC_NAMESPACE = 0xff02
PIDFD_GET_MNT_NAMESPACE = 0xff03
PIDFD_GET_NET_NAMESPACE = 0xff04
PIDFD_GET_PID_NAMESPACE = 0xff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0xff06
PIDFD_GET_TIME_NAMESPACE = 0xff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0xff08
PIDFD_GET_USER_NAMESPACE = 0xff09
PIDFD_GET_UTS_NAMESPACE = 0xff0a
)
type SysvIpcPerm struct {
@@ -731,3 +742,22 @@ type SysvShmDesc struct {
const (
GPIO_GET_CHIPINFO_IOCTL = 0x8044b401
)
const (
IPMICTL_SEND_COMMAND = 0x8028690d
IPMICTL_RECEIVE_MSG = 0xc030690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int64
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int64
Msg IPMIMsg
}
+31 -1
View File
@@ -681,7 +681,18 @@ const (
)
const (
PIDFD_NONBLOCK = 0x4000
PIDFD_NONBLOCK = 0x4000
PIDFD_THREAD = 0x800
PIDFD_GET_CGROUP_NAMESPACE = 0x2000ff01
PIDFD_GET_IPC_NAMESPACE = 0x2000ff02
PIDFD_GET_MNT_NAMESPACE = 0x2000ff03
PIDFD_GET_NET_NAMESPACE = 0x2000ff04
PIDFD_GET_PID_NAMESPACE = 0x2000ff05
PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE = 0x2000ff06
PIDFD_GET_TIME_NAMESPACE = 0x2000ff07
PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE = 0x2000ff08
PIDFD_GET_USER_NAMESPACE = 0x2000ff09
PIDFD_GET_UTS_NAMESPACE = 0x2000ff0a
)
type SysvIpcPerm struct {
@@ -712,3 +723,22 @@ type SysvShmDesc struct {
const (
GPIO_GET_CHIPINFO_IOCTL = 0x4044b401
)
const (
IPMICTL_SEND_COMMAND = 0x4028690d
IPMICTL_RECEIVE_MSG = 0xc030690c
)
type IPMIReq struct {
Addr *uint8
Len uint32
Msgid int64
Msg IPMIMsg
}
type IPMIRecv struct {
Recv_type int32
Addr *uint8
Addr_len uint32
Msgid int64
Msg IPMIMsg
}
+1
View File
@@ -1065,6 +1065,7 @@ const (
SO_BROADCAST = 32
SO_LINGER = 128
SO_RCVBUF = 0x1002
SO_SNDTIMEO = 0x1005
SO_RCVTIMEO = 0x1006
SO_SNDBUF = 0x1001
SO_UPDATE_ACCEPT_CONTEXT = 0x700b
+17 -7
View File
@@ -106,6 +106,9 @@ type Terminal struct {
// a read. It aliases into inBuf.
remainder []byte
inBuf [256]byte
// readErr is an error returned by a read that also returned data. It is
// reported after all of that data has been processed.
readErr error
// History records and retrieves lines of input read by [ReadLine] which
// a user can retrieve and navigate using the up and down arrow keys.
@@ -788,7 +791,11 @@ func (t *Terminal) ReadPassword(prompt string) (line string, err error) {
return
}
// ReadLine returns a line of input from the terminal.
// ReadLine returns a line of input from the terminal, excluding the
// trailing newline. It may return partial data along with an error.
// An [io.EOF] error indicates the end of the stream. For other errors,
// such as [ErrPasteIndicator] in bracketed paste mode, a subsequent
// call may return more data.
func (t *Terminal) ReadLine() (line string, err error) {
t.lock.Lock()
defer t.lock.Unlock()
@@ -863,21 +870,24 @@ func (t *Terminal) readLine() (line string, err error) {
}
return
}
if t.readErr != nil {
err = t.readErr
t.readErr = nil
return
}
// t.remainder is a slice at the beginning of t.inBuf
// containing a partial key sequence
readBuf := t.inBuf[len(t.remainder):]
var n int
t.lock.Unlock()
n, err = t.c.Read(readBuf)
n, readErr := t.c.Read(readBuf)
t.lock.Lock()
if err != nil {
return
}
t.remainder = t.inBuf[:n+len(t.remainder)]
if readErr != nil {
t.readErr = readErr
}
}
}
+2 -3
View File
@@ -6,7 +6,6 @@ package bidi
import (
"fmt"
"log"
)
// This implementation is a port based on the reference implementation found at:
@@ -248,7 +247,7 @@ func (p *paragraph) determineParagraphEmbeddingLevel(start, end int) level {
} else if t.in(FSI, LRI, RLI) {
i = p.matchingPDI[i] // skip over to the matching PDI
if i > end {
log.Panic("assert (i <= end)")
panic("assert (i <= end)")
}
}
}
@@ -729,7 +728,7 @@ loop:
continue loop
}
}
log.Panicf("invalid bidi code %v present in assertOnly at position %d", t, s.indexes[i])
panic(fmt.Errorf("invalid bidi code %v present in assertOnly at position %d", t, s.indexes[i]))
}
}
+27 -15
View File
@@ -449,6 +449,16 @@ func (rb *reorderBuffer) combineHangul(s, i, k int) {
// ACxx plus 11Ax to LVT
rb.assignRune(s, l+v-jamoTBase)
default:
// Not a Hangul composition. The segment may still
// contain regular canonical compositions, such as
// combining marks following a Hangul syllable, so
// fall back to the composition table.
if b[i].combinesBackward() {
if combined := combine(l, v); combined != 0 {
rb.assignRune(s, combined)
continue
}
}
b[k] = b[i]
k++
}
@@ -484,25 +494,27 @@ func (rb *reorderBuffer) compose() {
return
}
ii := b[i]
// Track the last starter unconditionally: b[i] must be blocked by
// any starter between it and s, even one that b[i] itself cannot
// combine with, and even if the runes in between never enter the
// combinesBackward branch below.
cccB := b[k-1].ccc
cccC := ii.ccc
blocked := false // b[i] blocked by starter or greater or equal CCC?
if cccB == 0 {
s = k - 1
} else {
blocked = s != k-1 && cccB >= cccC
}
// We can only use combineForward as a filter if we later
// get the info for the combined character. This is more
// expensive than using the filter. Using combinesBackward()
// is safe.
if ii.combinesBackward() {
cccB := b[k-1].ccc
cccC := ii.ccc
blocked := false // b[i] blocked by starter or greater or equal CCC?
if cccB == 0 {
s = k - 1
} else {
blocked = s != k-1 && cccB >= cccC
}
if !blocked {
combined := combine(rb.runeAt(s), rb.runeAt(i))
if combined != 0 {
rb.assignRune(s, combined)
continue
}
if ii.combinesBackward() && !blocked {
combined := combine(rb.runeAt(s), rb.runeAt(i))
if combined != 0 {
rb.assignRune(s, combined)
continue
}
}
b[k] = b[i]
+12 -12
View File
@@ -191,30 +191,30 @@ func (p Properties) TrailCCC() uint8 {
return ccc[p.tccc]
}
// Recomposition
// Each entry of recompMapPacked holds the two runes of the key and the
// composed rune of the value packed into a big-endian uint64 as three
// 21-bit fields, which is wide enough for any rune.
// Note that the recomposition map for NFC and NFKC are identical.
const recompShift = 21
func buildRecompMap() {
recompMap = make(map[uint32]rune, len(recompMapPacked)/8)
recompMap = make(map[uint64]rune, len(recompMapPacked)/8)
var buf [8]byte
for i := 0; i < len(recompMapPacked); i += 8 {
copy(buf[:], recompMapPacked[i:i+8])
key := binary.BigEndian.Uint32(buf[:4])
val := binary.BigEndian.Uint32(buf[4:])
recompMap[key] = rune(val)
e := binary.BigEndian.Uint64(buf[:])
recompMap[e>>recompShift] = rune(e & (1<<recompShift - 1))
}
}
// Recomposition
// We use 32-bit keys instead of 64-bit for the two codepoint keys.
// This clips off the bits of three entries, but we know this will not
// result in a collision. In the unlikely event that changes to
// UnicodeData.txt introduce collisions, the compiler will catch it.
// Note that the recomposition map for NFC and NFKC are identical.
// combine returns the combined rune or 0 if it doesn't exist.
//
// The caller is responsible for calling
// recompMapOnce.Do(buildRecompMap) sometime before this is called.
func combine(a, b rune) rune {
key := uint32(uint16(a))<<16 + uint32(uint16(b))
key := uint64(a)<<recompShift | uint64(b)
if recompMap == nil {
panic("caller error") // see func comment
}
+4 -1
View File
@@ -505,7 +505,10 @@ func decomposeSegment(rb *reorderBuffer, sp int, atEOF bool) int {
// Force one character to be consumed.
info := rb.f.info(rb.src, sp)
if info.isInvalid() {
return 0
// Consume the invalid character.
// Perhaps this should return iShortSrc instead?
// May not matter, this path does not appear to be reachable in practice.
return sp + 1
}
if s := rb.ss.next(info); s == ssStarter {
// TODO: this could be removed if we don't support merging.
+942 -942
View File
File diff suppressed because it is too large Load Diff
+962 -962
View File
File diff suppressed because it is too large Load Diff
+3 -2
View File
@@ -33,7 +33,7 @@ func (f Form) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error)
return nDst + n, nSrc + n, err
}
if err == nil && n < len(src) && !atEOF {
if err == nil && n < len(src) {
err = transform.ErrShortSrc
}
return n, n, err
@@ -67,6 +67,7 @@ func (f Form) transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error)
nSrc = end
// Next quickSpan.
var err error
end = rb.nsrc
eof := atEOF
if n := nSrc + len(dst) - nDst; n < end {
@@ -79,7 +80,7 @@ func (f Form) transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error)
nSrc += n
nDst += n
if ok {
if err == nil && n < rb.nsrc && !atEOF {
if err == nil && nSrc < rb.nsrc {
err = transform.ErrShortSrc
}
return nDst, nSrc, err
+14 -14
View File
@@ -390,14 +390,14 @@ go.opentelemetry.io/proto/otlp/trace/v1
# go.yaml.in/yaml/v3 v3.0.5
## explicit; go 1.16
go.yaml.in/yaml/v3
# golang.org/x/mod v0.40.0
## explicit; go 1.25.0
# golang.org/x/mod v0.41.0
## explicit; go 1.26.0
golang.org/x/mod/internal/lazyregexp
golang.org/x/mod/modfile
golang.org/x/mod/module
golang.org/x/mod/semver
# golang.org/x/net v0.58.0
## explicit; go 1.25.0
# golang.org/x/net v0.59.0
## explicit; go 1.26.0
golang.org/x/net/http/httpguts
golang.org/x/net/http2
golang.org/x/net/http2/hpack
@@ -406,20 +406,20 @@ golang.org/x/net/internal/httpcommon
golang.org/x/net/internal/httpsfv
golang.org/x/net/internal/timeseries
golang.org/x/net/trace
# golang.org/x/sync v0.22.0
## explicit; go 1.25.0
# golang.org/x/sync v0.23.0
## explicit; go 1.26.0
golang.org/x/sync/errgroup
# golang.org/x/sys v0.47.0
## explicit; go 1.25.0
# golang.org/x/sys v0.48.0
## explicit; go 1.26.0
golang.org/x/sys/plan9
golang.org/x/sys/unix
golang.org/x/sys/windows
golang.org/x/sys/windows/registry
# golang.org/x/term v0.45.0
## explicit; go 1.25.0
# golang.org/x/term v0.46.0
## explicit; go 1.26.0
golang.org/x/term
# golang.org/x/text v0.41.0
## explicit; go 1.25.0
# golang.org/x/text v0.42.0
## explicit; go 1.26.0
golang.org/x/text/feature/plural
golang.org/x/text/internal
golang.org/x/text/internal/catmsg
@@ -437,8 +437,8 @@ golang.org/x/text/transform
golang.org/x/text/unicode/bidi
golang.org/x/text/unicode/norm
golang.org/x/text/width
# golang.org/x/time v0.15.0
## explicit; go 1.25.0
# golang.org/x/time v0.16.0
## explicit; go 1.26.0
golang.org/x/time/rate
# google.golang.org/genproto/googleapis/api v0.0.0-20260825221802-da73d73af1c5
## explicit; go 1.25.0