├── .dockerignore
├── .gitignore
├── Dockerfile
├── LICENSE
├── README.md
├── cmd
└── habrahabr-bot
│ └── main.go
├── go.mod
├── go.sum
├── internal
├── bot
│ ├── bot.go
│ ├── commands.go
│ ├── constants.go
│ ├── functions.go
│ ├── mailout.go
│ └── structures.go
├── config
│ └── config.go
├── logging
│ └── logging.go
└── userdb
│ ├── functions.go
│ └── userdb.go
├── stuff
├── 1.jpg
├── 2.png
├── logo.jpg
└── Показывает процесс пересылки.gif
└── vendor
├── github.com
├── PuerkitoBio
│ └── goquery
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── array.go
│ │ ├── doc.go
│ │ ├── expand.go
│ │ ├── filter.go
│ │ ├── go.mod
│ │ ├── go.sum
│ │ ├── iteration.go
│ │ ├── manipulation.go
│ │ ├── property.go
│ │ ├── query.go
│ │ ├── traversal.go
│ │ ├── type.go
│ │ └── utilities.go
├── anaskhan96
│ └── soup
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── license
│ │ └── soup.go
├── andybalholm
│ └── cascadia
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── go.mod
│ │ ├── parser.go
│ │ └── selector.go
├── boltdb
│ └── bolt
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── appveyor.yml
│ │ ├── bolt_386.go
│ │ ├── bolt_amd64.go
│ │ ├── bolt_arm.go
│ │ ├── bolt_arm64.go
│ │ ├── bolt_linux.go
│ │ ├── bolt_openbsd.go
│ │ ├── bolt_ppc.go
│ │ ├── bolt_ppc64.go
│ │ ├── bolt_ppc64le.go
│ │ ├── bolt_s390x.go
│ │ ├── bolt_unix.go
│ │ ├── bolt_unix_solaris.go
│ │ ├── bolt_windows.go
│ │ ├── boltsync_unix.go
│ │ ├── bucket.go
│ │ ├── cursor.go
│ │ ├── db.go
│ │ ├── doc.go
│ │ ├── errors.go
│ │ ├── freelist.go
│ │ ├── node.go
│ │ ├── page.go
│ │ └── tx.go
├── jasonlvhit
│ └── gocron
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── gocron.go
├── mmcdole
│ ├── gofeed
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── atom
│ │ │ ├── feed.go
│ │ │ └── parser.go
│ │ ├── detector.go
│ │ ├── extensions
│ │ │ ├── dublincore.go
│ │ │ ├── extensions.go
│ │ │ └── itunes.go
│ │ ├── feed.go
│ │ ├── internal
│ │ │ └── shared
│ │ │ │ ├── charsetconv.go
│ │ │ │ ├── dateparser.go
│ │ │ │ ├── extparser.go
│ │ │ │ ├── parseutils.go
│ │ │ │ └── xmlsanitizer.go
│ │ ├── parser.go
│ │ ├── rss
│ │ │ ├── feed.go
│ │ │ └── parser.go
│ │ └── translator.go
│ └── goxpp
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── xpp.go
└── technoweenie
│ └── multipartstreamer
│ ├── LICENSE
│ ├── README.md
│ └── multipartstreamer.go
├── golang.org
└── x
│ ├── net
│ ├── AUTHORS
│ ├── CONTRIBUTORS
│ ├── LICENSE
│ ├── PATENTS
│ └── html
│ │ ├── atom
│ │ ├── atom.go
│ │ ├── gen.go
│ │ └── table.go
│ │ ├── charset
│ │ └── charset.go
│ │ ├── const.go
│ │ ├── doc.go
│ │ ├── doctype.go
│ │ ├── entity.go
│ │ ├── escape.go
│ │ ├── foreign.go
│ │ ├── node.go
│ │ ├── parse.go
│ │ ├── render.go
│ │ └── token.go
│ ├── sys
│ ├── AUTHORS
│ ├── CONTRIBUTORS
│ ├── LICENSE
│ ├── PATENTS
│ └── unix
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── affinity_linux.go
│ │ ├── aliases.go
│ │ ├── asm_aix_ppc64.s
│ │ ├── asm_darwin_386.s
│ │ ├── asm_darwin_amd64.s
│ │ ├── asm_darwin_arm.s
│ │ ├── asm_darwin_arm64.s
│ │ ├── asm_dragonfly_amd64.s
│ │ ├── asm_freebsd_386.s
│ │ ├── asm_freebsd_amd64.s
│ │ ├── asm_freebsd_arm.s
│ │ ├── asm_freebsd_arm64.s
│ │ ├── asm_linux_386.s
│ │ ├── asm_linux_amd64.s
│ │ ├── asm_linux_arm.s
│ │ ├── asm_linux_arm64.s
│ │ ├── asm_linux_mips64x.s
│ │ ├── asm_linux_mipsx.s
│ │ ├── asm_linux_ppc64x.s
│ │ ├── asm_linux_s390x.s
│ │ ├── asm_netbsd_386.s
│ │ ├── asm_netbsd_amd64.s
│ │ ├── asm_netbsd_arm.s
│ │ ├── asm_netbsd_arm64.s
│ │ ├── asm_openbsd_386.s
│ │ ├── asm_openbsd_amd64.s
│ │ ├── asm_openbsd_arm.s
│ │ ├── asm_openbsd_arm64.s
│ │ ├── asm_solaris_amd64.s
│ │ ├── bluetooth_linux.go
│ │ ├── cap_freebsd.go
│ │ ├── constants.go
│ │ ├── dev_aix_ppc.go
│ │ ├── dev_aix_ppc64.go
│ │ ├── dev_darwin.go
│ │ ├── dev_dragonfly.go
│ │ ├── dev_freebsd.go
│ │ ├── dev_linux.go
│ │ ├── dev_netbsd.go
│ │ ├── dev_openbsd.go
│ │ ├── dirent.go
│ │ ├── endian_big.go
│ │ ├── endian_little.go
│ │ ├── env_unix.go
│ │ ├── errors_freebsd_386.go
│ │ ├── errors_freebsd_amd64.go
│ │ ├── errors_freebsd_arm.go
│ │ ├── fcntl.go
│ │ ├── fcntl_darwin.go
│ │ ├── fcntl_linux_32bit.go
│ │ ├── gccgo.go
│ │ ├── gccgo_c.c
│ │ ├── gccgo_linux_amd64.go
│ │ ├── ioctl.go
│ │ ├── mkall.sh
│ │ ├── mkasm_darwin.go
│ │ ├── mkerrors.sh
│ │ ├── mkpost.go
│ │ ├── mksyscall.go
│ │ ├── mksyscall_aix_ppc.go
│ │ ├── mksyscall_aix_ppc64.go
│ │ ├── mksyscall_solaris.go
│ │ ├── mksysctl_openbsd.go
│ │ ├── mksysnum.go
│ │ ├── pagesize_unix.go
│ │ ├── pledge_openbsd.go
│ │ ├── race.go
│ │ ├── race0.go
│ │ ├── sockcmsg_linux.go
│ │ ├── sockcmsg_unix.go
│ │ ├── str.go
│ │ ├── syscall.go
│ │ ├── syscall_aix.go
│ │ ├── syscall_aix_ppc.go
│ │ ├── syscall_aix_ppc64.go
│ │ ├── syscall_bsd.go
│ │ ├── syscall_darwin.go
│ │ ├── syscall_darwin_386.go
│ │ ├── syscall_darwin_amd64.go
│ │ ├── syscall_darwin_arm.go
│ │ ├── syscall_darwin_arm64.go
│ │ ├── syscall_darwin_libSystem.go
│ │ ├── syscall_dragonfly.go
│ │ ├── syscall_dragonfly_amd64.go
│ │ ├── syscall_freebsd.go
│ │ ├── syscall_freebsd_386.go
│ │ ├── syscall_freebsd_amd64.go
│ │ ├── syscall_freebsd_arm.go
│ │ ├── syscall_freebsd_arm64.go
│ │ ├── syscall_linux.go
│ │ ├── syscall_linux_386.go
│ │ ├── syscall_linux_amd64.go
│ │ ├── syscall_linux_amd64_gc.go
│ │ ├── syscall_linux_arm.go
│ │ ├── syscall_linux_arm64.go
│ │ ├── syscall_linux_gc.go
│ │ ├── syscall_linux_gc_386.go
│ │ ├── syscall_linux_gccgo_386.go
│ │ ├── syscall_linux_gccgo_arm.go
│ │ ├── syscall_linux_mips64x.go
│ │ ├── syscall_linux_mipsx.go
│ │ ├── syscall_linux_ppc64x.go
│ │ ├── syscall_linux_riscv64.go
│ │ ├── syscall_linux_s390x.go
│ │ ├── syscall_linux_sparc64.go
│ │ ├── syscall_netbsd.go
│ │ ├── syscall_netbsd_386.go
│ │ ├── syscall_netbsd_amd64.go
│ │ ├── syscall_netbsd_arm.go
│ │ ├── syscall_netbsd_arm64.go
│ │ ├── syscall_openbsd.go
│ │ ├── syscall_openbsd_386.go
│ │ ├── syscall_openbsd_amd64.go
│ │ ├── syscall_openbsd_arm.go
│ │ ├── syscall_openbsd_arm64.go
│ │ ├── syscall_solaris.go
│ │ ├── syscall_solaris_amd64.go
│ │ ├── syscall_unix.go
│ │ ├── syscall_unix_gc.go
│ │ ├── syscall_unix_gc_ppc64x.go
│ │ ├── timestruct.go
│ │ ├── types_aix.go
│ │ ├── types_darwin.go
│ │ ├── types_dragonfly.go
│ │ ├── types_freebsd.go
│ │ ├── types_netbsd.go
│ │ ├── types_openbsd.go
│ │ ├── types_solaris.go
│ │ ├── unveil_openbsd.go
│ │ ├── xattr_bsd.go
│ │ ├── zerrors_aix_ppc.go
│ │ ├── zerrors_aix_ppc64.go
│ │ ├── zerrors_darwin_386.go
│ │ ├── zerrors_darwin_amd64.go
│ │ ├── zerrors_darwin_arm.go
│ │ ├── zerrors_darwin_arm64.go
│ │ ├── zerrors_dragonfly_amd64.go
│ │ ├── zerrors_freebsd_386.go
│ │ ├── zerrors_freebsd_amd64.go
│ │ ├── zerrors_freebsd_arm.go
│ │ ├── zerrors_freebsd_arm64.go
│ │ ├── zerrors_linux_386.go
│ │ ├── zerrors_linux_amd64.go
│ │ ├── zerrors_linux_arm.go
│ │ ├── zerrors_linux_arm64.go
│ │ ├── zerrors_linux_mips.go
│ │ ├── zerrors_linux_mips64.go
│ │ ├── zerrors_linux_mips64le.go
│ │ ├── zerrors_linux_mipsle.go
│ │ ├── zerrors_linux_ppc64.go
│ │ ├── zerrors_linux_ppc64le.go
│ │ ├── zerrors_linux_riscv64.go
│ │ ├── zerrors_linux_s390x.go
│ │ ├── zerrors_linux_sparc64.go
│ │ ├── zerrors_netbsd_386.go
│ │ ├── zerrors_netbsd_amd64.go
│ │ ├── zerrors_netbsd_arm.go
│ │ ├── zerrors_netbsd_arm64.go
│ │ ├── zerrors_openbsd_386.go
│ │ ├── zerrors_openbsd_amd64.go
│ │ ├── zerrors_openbsd_arm.go
│ │ ├── zerrors_openbsd_arm64.go
│ │ ├── zerrors_solaris_amd64.go
│ │ ├── zptrace386_linux.go
│ │ ├── zptracearm_linux.go
│ │ ├── zptracemips_linux.go
│ │ ├── zptracemipsle_linux.go
│ │ ├── zsyscall_aix_ppc.go
│ │ ├── zsyscall_aix_ppc64.go
│ │ ├── zsyscall_aix_ppc64_gc.go
│ │ ├── zsyscall_aix_ppc64_gccgo.go
│ │ ├── zsyscall_darwin_386.1_11.go
│ │ ├── zsyscall_darwin_386.go
│ │ ├── zsyscall_darwin_386.s
│ │ ├── zsyscall_darwin_amd64.1_11.go
│ │ ├── zsyscall_darwin_amd64.go
│ │ ├── zsyscall_darwin_amd64.s
│ │ ├── zsyscall_darwin_arm.1_11.go
│ │ ├── zsyscall_darwin_arm.go
│ │ ├── zsyscall_darwin_arm.s
│ │ ├── zsyscall_darwin_arm64.1_11.go
│ │ ├── zsyscall_darwin_arm64.go
│ │ ├── zsyscall_darwin_arm64.s
│ │ ├── zsyscall_dragonfly_amd64.go
│ │ ├── zsyscall_freebsd_386.go
│ │ ├── zsyscall_freebsd_amd64.go
│ │ ├── zsyscall_freebsd_arm.go
│ │ ├── zsyscall_freebsd_arm64.go
│ │ ├── zsyscall_linux_386.go
│ │ ├── zsyscall_linux_amd64.go
│ │ ├── zsyscall_linux_arm.go
│ │ ├── zsyscall_linux_arm64.go
│ │ ├── zsyscall_linux_mips.go
│ │ ├── zsyscall_linux_mips64.go
│ │ ├── zsyscall_linux_mips64le.go
│ │ ├── zsyscall_linux_mipsle.go
│ │ ├── zsyscall_linux_ppc64.go
│ │ ├── zsyscall_linux_ppc64le.go
│ │ ├── zsyscall_linux_riscv64.go
│ │ ├── zsyscall_linux_s390x.go
│ │ ├── zsyscall_linux_sparc64.go
│ │ ├── zsyscall_netbsd_386.go
│ │ ├── zsyscall_netbsd_amd64.go
│ │ ├── zsyscall_netbsd_arm.go
│ │ ├── zsyscall_netbsd_arm64.go
│ │ ├── zsyscall_openbsd_386.go
│ │ ├── zsyscall_openbsd_amd64.go
│ │ ├── zsyscall_openbsd_arm.go
│ │ ├── zsyscall_openbsd_arm64.go
│ │ ├── zsyscall_solaris_amd64.go
│ │ ├── zsysctl_openbsd_386.go
│ │ ├── zsysctl_openbsd_amd64.go
│ │ ├── zsysctl_openbsd_arm.go
│ │ ├── zsysctl_openbsd_arm64.go
│ │ ├── zsysnum_darwin_386.go
│ │ ├── zsysnum_darwin_amd64.go
│ │ ├── zsysnum_darwin_arm.go
│ │ ├── zsysnum_darwin_arm64.go
│ │ ├── zsysnum_dragonfly_amd64.go
│ │ ├── zsysnum_freebsd_386.go
│ │ ├── zsysnum_freebsd_amd64.go
│ │ ├── zsysnum_freebsd_arm.go
│ │ ├── zsysnum_freebsd_arm64.go
│ │ ├── zsysnum_linux_386.go
│ │ ├── zsysnum_linux_amd64.go
│ │ ├── zsysnum_linux_arm.go
│ │ ├── zsysnum_linux_arm64.go
│ │ ├── zsysnum_linux_mips.go
│ │ ├── zsysnum_linux_mips64.go
│ │ ├── zsysnum_linux_mips64le.go
│ │ ├── zsysnum_linux_mipsle.go
│ │ ├── zsysnum_linux_ppc64.go
│ │ ├── zsysnum_linux_ppc64le.go
│ │ ├── zsysnum_linux_riscv64.go
│ │ ├── zsysnum_linux_s390x.go
│ │ ├── zsysnum_linux_sparc64.go
│ │ ├── zsysnum_netbsd_386.go
│ │ ├── zsysnum_netbsd_amd64.go
│ │ ├── zsysnum_netbsd_arm.go
│ │ ├── zsysnum_netbsd_arm64.go
│ │ ├── zsysnum_openbsd_386.go
│ │ ├── zsysnum_openbsd_amd64.go
│ │ ├── zsysnum_openbsd_arm.go
│ │ ├── zsysnum_openbsd_arm64.go
│ │ ├── ztypes_aix_ppc.go
│ │ ├── ztypes_aix_ppc64.go
│ │ ├── ztypes_darwin_386.go
│ │ ├── ztypes_darwin_amd64.go
│ │ ├── ztypes_darwin_arm.go
│ │ ├── ztypes_darwin_arm64.go
│ │ ├── ztypes_dragonfly_amd64.go
│ │ ├── ztypes_freebsd_386.go
│ │ ├── ztypes_freebsd_amd64.go
│ │ ├── ztypes_freebsd_arm.go
│ │ ├── ztypes_freebsd_arm64.go
│ │ ├── ztypes_linux_386.go
│ │ ├── ztypes_linux_amd64.go
│ │ ├── ztypes_linux_arm.go
│ │ ├── ztypes_linux_arm64.go
│ │ ├── ztypes_linux_mips.go
│ │ ├── ztypes_linux_mips64.go
│ │ ├── ztypes_linux_mips64le.go
│ │ ├── ztypes_linux_mipsle.go
│ │ ├── ztypes_linux_ppc64.go
│ │ ├── ztypes_linux_ppc64le.go
│ │ ├── ztypes_linux_riscv64.go
│ │ ├── ztypes_linux_s390x.go
│ │ ├── ztypes_linux_sparc64.go
│ │ ├── ztypes_netbsd_386.go
│ │ ├── ztypes_netbsd_amd64.go
│ │ ├── ztypes_netbsd_arm.go
│ │ ├── ztypes_netbsd_arm64.go
│ │ ├── ztypes_openbsd_386.go
│ │ ├── ztypes_openbsd_amd64.go
│ │ ├── ztypes_openbsd_arm.go
│ │ ├── ztypes_openbsd_arm64.go
│ │ └── ztypes_solaris_amd64.go
│ └── text
│ ├── AUTHORS
│ ├── CONTRIBUTORS
│ ├── LICENSE
│ ├── PATENTS
│ ├── encoding
│ ├── charmap
│ │ ├── charmap.go
│ │ ├── maketables.go
│ │ └── tables.go
│ ├── encoding.go
│ ├── htmlindex
│ │ ├── gen.go
│ │ ├── htmlindex.go
│ │ ├── map.go
│ │ └── tables.go
│ ├── internal
│ │ ├── identifier
│ │ │ ├── gen.go
│ │ │ ├── identifier.go
│ │ │ └── mib.go
│ │ └── internal.go
│ ├── japanese
│ │ ├── all.go
│ │ ├── eucjp.go
│ │ ├── iso2022jp.go
│ │ ├── maketables.go
│ │ ├── shiftjis.go
│ │ └── tables.go
│ ├── korean
│ │ ├── euckr.go
│ │ ├── maketables.go
│ │ └── tables.go
│ ├── simplifiedchinese
│ │ ├── all.go
│ │ ├── gbk.go
│ │ ├── hzgb2312.go
│ │ ├── maketables.go
│ │ └── tables.go
│ ├── traditionalchinese
│ │ ├── big5.go
│ │ ├── maketables.go
│ │ └── tables.go
│ └── unicode
│ │ ├── override.go
│ │ └── unicode.go
│ ├── internal
│ ├── tag
│ │ └── tag.go
│ └── utf8internal
│ │ └── utf8internal.go
│ ├── language
│ ├── Makefile
│ ├── common.go
│ ├── coverage.go
│ ├── doc.go
│ ├── gen.go
│ ├── gen_common.go
│ ├── gen_index.go
│ ├── go1_1.go
│ ├── go1_2.go
│ ├── index.go
│ ├── language.go
│ ├── lookup.go
│ ├── match.go
│ ├── parse.go
│ ├── tables.go
│ └── tags.go
│ ├── runes
│ ├── cond.go
│ └── runes.go
│ └── transform
│ └── transform.go
├── gopkg.in
└── telegram-bot-api.v4
│ ├── .gitignore
│ ├── .travis.yml
│ ├── LICENSE.txt
│ ├── README.md
│ ├── bot.go
│ ├── configs.go
│ ├── helpers.go
│ ├── log.go
│ ├── passport.go
│ └── types.go
└── modules.txt
/.dockerignore:
--------------------------------------------------------------------------------
1 | data/
2 | stuff/
3 | Dockerfile
4 | *.bat
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .vscode
2 | app/habrahabr-bot
3 | data
4 | *.bat
5 | *.py
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | # Build backend
2 | FROM golang:1.12 as builder
3 |
4 | ENV CGO_ENABLED=0
5 |
6 | WORKDIR /temp
7 |
8 | COPY . .
9 |
10 | RUN cd /temp && \
11 | go test -mod=vendor ./... && \
12 | go build -o habr-bot -mod=vendor ./cmd/habrahabr-bot/main.go
13 |
14 |
15 | FROM alpine
16 |
17 | RUN apk update && apk upgrade && \
18 | apk add --no-cache ca-certificates tzdata
19 |
20 | # Change timezone
21 | ENV TZ Europe/Moscow
22 |
23 | WORKDIR /app
24 |
25 | COPY --from=builder /temp/habr-bot .
26 |
27 | ENTRYPOINT [ "./habr-bot" ]
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2018 ShoshinNikita
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Habrahabr-бот на Go
2 |
3 | Неофициальный бот для рассылки статей с сайтов [habr.com](https://habr.com/) в Telegram. Бота можно найти [здесь](https://t.me/unofficial_habr_bot). Статью, описывающую процесс создания бота – [здесь](https://habr.com/post/350858/)
4 |
5 | ## Информация о работе
6 |
7 | Бот использует [RSS-ленту](https://habr.com/rss/all) сайта [habr.com](https://habr.ru/) для получения списка статей. Данные пользователей (id, теги) хранятся в BoltDB.
8 |
9 | ## Конфигурационная информация
10 |
11 | Конфигурационная информация передаётся при запуске программы с помощью флагов
12 |
13 | | Флаг | Описание | Значение по-умолчанию |
14 | | ------- | ----------------------------------------------------- | --------------------- |
15 | | -bToken | токен бота | |
16 | | -delay | задержка между обновлением статей через RSS feed (нс) | 1200000000000 нс |
17 | | -rate | задержка между отправкой статей (мс) | 500 мс |
18 |
19 | ### Содержание файлов
20 |
21 | - Файл users.db – boltDB база данных, хранящая данные пользователей
22 |
23 | Структура:
24 |
25 | - users
26 | - id
27 | - Tags
28 | - Mailout
29 |
30 | - Файл lastArticles.json хранит ссылки все последние статьи
31 |
32 | ```json
33 | {
34 | "habr": []
35 | }
36 | ```
37 |
38 | - Файл ids.json – массив корректных id
39 |
40 | ```json
41 | [12, 123, 1234]
42 | ```
43 |
44 | ## Лицензия
45 |
46 | [MIT License](LICENSE)
47 |
--------------------------------------------------------------------------------
/cmd/habrahabr-bot/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "log"
5 | "os"
6 | "os/signal"
7 | "syscall"
8 | "time"
9 |
10 | "github.com/ShoshinNikita/habrahabr-bot-go/internal/bot"
11 | "github.com/ShoshinNikita/habrahabr-bot-go/internal/config"
12 | "github.com/ShoshinNikita/habrahabr-bot-go/internal/logging"
13 | "github.com/ShoshinNikita/habrahabr-bot-go/internal/userdb"
14 | )
15 |
16 | func main() {
17 | // Получение конфигурационной информации
18 | err := config.GetConfigInfo()
19 | if err != nil {
20 | log.Fatal(err)
21 | }
22 |
23 | // Инициализация advanced-log
24 | logging.LogInfo("Старт программы")
25 |
26 | // Инициализация базы данных c пользователями
27 | err = userdb.Open("data/users.db")
28 | if err != nil {
29 | logging.LogFatalError("main", "попытка открыть базу данных с пользователями", err)
30 | }
31 |
32 | // Получение корректных id
33 | err = bot.ParseCorrectIDS("data/ids.json")
34 | if err != nil {
35 | logging.LogFatalError("main", "попытка распарсить список id", err)
36 | }
37 |
38 | // Инициализация бота
39 | logging.LogInfo("Инициализация бота")
40 | habrBot, err := bot.NewBot()
41 | if err != nil {
42 | logging.LogFatalError("main", "попытка залогиниться в бота", err)
43 | }
44 |
45 | // Запуск бота
46 | logging.LogInfo("Запуск бота")
47 | stopChan := make(chan struct{})
48 | go habrBot.StartPooling(stopChan)
49 |
50 | // Перехватываем сигналы
51 | sigChan := make(chan os.Signal, 1)
52 | // SIGTERM для Сервера (htop kill 15), SIGINT для Windows (Ctrl+C)
53 | signal.Notify(sigChan, syscall.SIGTERM, syscall.SIGINT)
54 | // Ждём сигнала
55 | <-sigChan
56 | // Останавливаем бота
57 | close(stopChan)
58 | // Ждём пока все функции завершатся.
59 | // Из-за того, что бот больше не принимает новые сообщений, функции не будут вызываться
60 | time.Sleep(2 * time.Second)
61 | // Закрытие базы данных
62 | userdb.Close()
63 | logging.LogInfo("Остановка работы")
64 | time.Sleep(500 * time.Millisecond)
65 | }
66 |
--------------------------------------------------------------------------------
/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/ShoshinNikita/habrahabr-bot-go
2 |
3 | go 1.12
4 |
5 | require (
6 | github.com/PuerkitoBio/goquery v1.5.0 // indirect
7 | github.com/anaskhan96/soup v1.1.1
8 | github.com/boltdb/bolt v1.3.1
9 | github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible // indirect
10 | github.com/jasonlvhit/gocron v0.0.0-20190402024347-5bcdd9fcfa9b
11 | github.com/mmcdole/gofeed v1.0.0-beta2
12 | github.com/mmcdole/goxpp v0.0.0-20181012175147-0068e33feabf // indirect
13 | github.com/stretchr/testify v1.3.0 // indirect
14 | github.com/technoweenie/multipartstreamer v1.0.1 // indirect
15 | golang.org/x/net v0.0.0-20190509222800-a4d6f7feada5 // indirect
16 | golang.org/x/sys v0.0.0-20190509141414-a5b02f93d862 // indirect
17 | gopkg.in/telegram-bot-api.v4 v4.6.4
18 | )
19 |
--------------------------------------------------------------------------------
/go.sum:
--------------------------------------------------------------------------------
1 | github.com/PuerkitoBio/goquery v1.5.0 h1:uGvmFXOA73IKluu/F84Xd1tt/z07GYm8X49XKHP7EJk=
2 | github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg=
3 | github.com/anaskhan96/soup v1.1.1 h1:Duux/0htS2Va7XLJ9qIakCSey790hg9OFRm2FwlMTy0=
4 | github.com/anaskhan96/soup v1.1.1/go.mod h1:pT5vs4HXDwA5y4KQCsKvnkpQd3D+joP7IqpiGskfWW0=
5 | github.com/andybalholm/cascadia v1.0.0 h1:hOCXnnZ5A+3eVDX8pvgl4kofXv2ELss0bKcqRySc45o=
6 | github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
7 | github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4=
8 | github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
9 | github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
10 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
11 | github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible h1:2cauKuaELYAEARXRkq2LrJ0yDDv1rW7+wrTEdVL3uaU=
12 | github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM=
13 | github.com/jasonlvhit/gocron v0.0.0-20190402024347-5bcdd9fcfa9b h1:71OQnFj9tBPdcOL2FrEFvbf8Kv40/0deWDG9W6j+J+M=
14 | github.com/jasonlvhit/gocron v0.0.0-20190402024347-5bcdd9fcfa9b/go.mod h1:rwi/esz/h+4oWLhbWWK7f6dtmgLzxeZhnwGr7MCsTNk=
15 | github.com/mmcdole/gofeed v1.0.0-beta2 h1:CjQ0ADhAwNSb08zknAkGOEYqr8zfZKfrzgk9BxpWP2E=
16 | github.com/mmcdole/gofeed v1.0.0-beta2/go.mod h1:/BF9JneEL2/flujm8XHoxUcghdTV6vvb3xx/vKyChFU=
17 | github.com/mmcdole/goxpp v0.0.0-20181012175147-0068e33feabf h1:sWGE2v+hO0Nd4yFU/S/mDBM5plIU8v/Qhfz41hkDIAI=
18 | github.com/mmcdole/goxpp v0.0.0-20181012175147-0068e33feabf/go.mod h1:pasqhqstspkosTneA62Nc+2p9SOBBYAPbnmRRWPQ0V8=
19 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
20 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
21 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
22 | github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
23 | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
24 | github.com/technoweenie/multipartstreamer v1.0.1 h1:XRztA5MXiR1TIRHxH2uNxXxaIkKQDeX7m2XsSOlQEnM=
25 | github.com/technoweenie/multipartstreamer v1.0.1/go.mod h1:jNVxdtShOxzAsukZwTSw6MDx5eUJoiEBsSvzDU9uzog=
26 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
27 | golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
28 | golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
29 | golang.org/x/net v0.0.0-20190509222800-a4d6f7feada5 h1:6M3SDHlHHDCx2PcQw3S4KsR170vGqDhJDOmpVd4Hjak=
30 | golang.org/x/net v0.0.0-20190509222800-a4d6f7feada5/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
31 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
32 | golang.org/x/sys v0.0.0-20190509141414-a5b02f93d862 h1:rM0ROo5vb9AdYJi1110yjWGMej9ITfKddS89P3Fkhug=
33 | golang.org/x/sys v0.0.0-20190509141414-a5b02f93d862/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
34 | golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
35 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
36 | gopkg.in/telegram-bot-api.v4 v4.6.4 h1:hpHWhzn4jTCsAJZZ2loNKfy2QWyPDRJVl3aTFXeMW8g=
37 | gopkg.in/telegram-bot-api.v4 v4.6.4/go.mod h1:5DpGO5dbumb40px+dXcwCpcjmeHNYLpk0bp3XRNvWDM=
38 |
--------------------------------------------------------------------------------
/internal/bot/constants.go:
--------------------------------------------------------------------------------
1 | package bot
2 |
3 | // Константы для определения сайта
4 | const habrArticleRegexPattern = `(https://)?(habrahabr\.ru|habr\.com|habr\.ru)/(ru|en|)/(post|company/[\w-_ ]+/blog)/\d{1,7}/?`
5 |
6 | const habrUserRegexPattern = `^(https://)?(habrahabr\.ru|habr\.com|habr\.ru)/users/[\w\s-]+/?$`
7 |
8 | // Текст для статьи. Нужно отформатировать функцией formatString(...)
9 | const messageText = `{title}
10 |
11 | Открыть статью
12 |
13 | Открыть комментарии`
14 |
15 | const (
16 | allRuHabrArticlesURL = "https://habr.com/ru/rss/all/"
17 | allEnHabrArticlesURL = "https://habr.com/en/rss/all/"
18 |
19 | bestRuHabrArticlesURL = "https://habr.com/ru/rss/best/"
20 | bestEnHabrArticlesURL = "https://habr.com/en/rss/best/"
21 | )
22 |
23 | const helpText = `📝 КОМАНДЫ:
24 | * /help – показать помощь
25 | * /tags – показать 📃 список тегов, на которые пользователь подписан
26 | * /add_tags – добавить теги (пример: /add_tags IT Алгоритмы)
27 | * /del_tags – удалить теги (пример: /del_tags IT Алгоритмы)
28 | * /del_all_tags – ❌ удалить ВСЕ теги
29 | * /copy_tags – ✂️ скопировать теги из профиля на habrahabr'e (пример: /copy_tags https://habrahabr.ru/users/kirtis/)
30 | * /best – получить лучшие статьи за день (по-умолчанию присылается 5, но можно через пробел указать другое количество)
31 | * /stop – 🔕 приостановить рассылку (для продолжения рассылки - /start)
32 |
33 | Дополнительная информация`
34 |
35 | /*
36 | Команды для BotFather:
37 |
38 | help - показать помощь
39 | tags - показать список тегов
40 | add_tags - добавить теги
41 | del_tags - удалить теги
42 | del_all_tags - удалить ВСЕ теги
43 | copy_tags - скопировать теги из профиля на habrahabr'e
44 | stop - приостановить рассылку
45 | best - получить лучшие статьи за день
46 | */
47 |
--------------------------------------------------------------------------------
/internal/bot/functions.go:
--------------------------------------------------------------------------------
1 | package bot
2 |
3 | import (
4 | "errors"
5 | "strings"
6 | "time"
7 |
8 | "github.com/mmcdole/gofeed"
9 | "gopkg.in/telegram-bot-api.v4"
10 |
11 | "github.com/ShoshinNikita/habrahabr-bot-go/internal/logging"
12 | )
13 |
14 | // toSet уничтожает одинаковые элементы из массива
15 | // Также убирает пустую строку
16 | func toSet(slice []string) []string {
17 | m := make(map[string]bool)
18 | for _, s := range slice {
19 | m[s] = true
20 | }
21 | delete(m, "")
22 |
23 | result := make([]string, 0)
24 | for k := range m {
25 | result = append(result, k)
26 | }
27 | return result
28 | }
29 |
30 | // FormatString форматирует строку, подставляя вместо {name} value из args, где key == name.
31 | func formatString(s string, args map[string]string) string {
32 | for key, value := range args {
33 | pattern := "{" + key + "}"
34 | s = strings.Replace(s, pattern, value, -1)
35 | }
36 |
37 | return s
38 | }
39 |
40 | // getRSS возвращает gofeed.Feed
41 | // Если количество неудачных попыток получить RSS-ленту превысило лимит, то возвращается ошибка
42 | func getRSS(source string) (*gofeed.Feed, error) {
43 | parser := gofeed.NewParser()
44 | var err error
45 | var feed *gofeed.Feed
46 |
47 | // количество попыток получить RSS-ленту
48 | const limit = 10
49 | i := 0
50 | for ; i < limit; i++ {
51 | feed, err = parser.ParseURL(source)
52 | if err == nil {
53 | break
54 | }
55 | time.Sleep(time.Millisecond * 500)
56 | }
57 |
58 | if i == limit {
59 | return feed, errors.New("Превышен лимит попыток получения RSS-ленты")
60 | }
61 | return feed, nil
62 | }
63 |
64 | // getCurrentTime возвращает текущее время
65 | func getCurrentTime() string {
66 | return time.Now().Format("02.01.2006 15:04:05")
67 | }
68 |
69 | // logErrorAndNotify логгирует ошибку и отправляет пользователю информацию об ощибке
70 | func (bot *Bot) logErrorAndNotify(data logging.ErrorData) {
71 | go logging.LogError(data)
72 |
73 | // Отправление сообщения об ошибке
74 | text := "Что-то пошло не так. Время: " + getCurrentTime() + "\nОб ошибках писать @Tirsias"
75 | message := tgbotapi.NewMessage(data.UserID, text)
76 | bot.messages <- message
77 | }
78 |
79 | // SendErrorToUser отправляет пользователю сообщение об ошибке (некорректный формат данных, отправленный пользователем)
80 | func (bot *Bot) sendErrorToUser(text string, userID int64) {
81 | message := tgbotapi.NewMessage(userID, "Ошибка: "+text)
82 | bot.messages <- message
83 | }
84 |
--------------------------------------------------------------------------------
/internal/bot/structures.go:
--------------------------------------------------------------------------------
1 | package bot
2 |
3 | // article содержит информацию о статье
4 | type article struct {
5 | title string
6 | link string
7 | tags []string
8 | message string
9 | }
10 |
--------------------------------------------------------------------------------
/internal/config/config.go:
--------------------------------------------------------------------------------
1 | package config
2 |
3 | import (
4 | "errors"
5 | "flag"
6 | )
7 |
8 | // ConfigurationData содержит конфигурационную информацию
9 | type ConfigurationData struct {
10 | BotToken string // token бота
11 | Delay uint64 // в секундах
12 | Rate uint64 // в милисекундах
13 | }
14 |
15 | // Data содержит конфигурационные данные
16 | var Data ConfigurationData
17 |
18 | // GetConfigInfo парсит флаги и заполняет Data
19 | func GetConfigInfo() error {
20 | var nanoseconds uint64
21 | flag.StringVar(&Data.BotToken, "bToken", "", "token of a bot")
22 | flag.Uint64Var(&nanoseconds, "delay", 1200000000000, "delay of getting articles (nanoseconds)")
23 | flag.Uint64Var(&Data.Rate, "rate", 500, "delay between sending of messages (milliseconds)")
24 |
25 | flag.Parse()
26 |
27 | // Получаем задержку в секундах
28 | Data.Delay = nanoseconds / 1e9
29 |
30 | if Data.BotToken == "" {
31 | return errors.New("botToken is missed")
32 | }
33 |
34 | return nil
35 | }
36 |
--------------------------------------------------------------------------------
/internal/logging/logging.go:
--------------------------------------------------------------------------------
1 | package logging
2 |
3 | import (
4 | "fmt"
5 | "log"
6 | "os"
7 | "strings"
8 | )
9 |
10 | // ErrorData содержит информацию об ошибке и о пользователе, вызвавшем ошибку
11 | type ErrorData struct {
12 | Error error
13 | Username string
14 | UserID int64
15 | Command string
16 | AddInfo string // AdditionalInfo
17 | }
18 |
19 | // RequestData содержит информацию о запросе
20 | type RequestData struct {
21 | Username string
22 | ID int64
23 | Command string
24 | }
25 |
26 | func LogInfo(format string, v ...interface{}) {
27 | if !strings.HasSuffix(format, "\n") {
28 | format += "\n"
29 | }
30 | format = "[INFO] " + format
31 |
32 | log.Printf(format, v...)
33 | }
34 |
35 | // LogRequest логгирует запрос от пользователя
36 | func LogRequest(data RequestData) {
37 | log.Printf("[REQ] User: %s ID: %d Cmd: %s\n", data.Username, data.ID, data.Command)
38 | }
39 |
40 | // LogError логгирует ошибку (программы)
41 | func LogError(data ErrorData) {
42 | text := fmt.Sprintf("[ERR] User: %s ID: %d Cmd: %s Err: %s", data.Username, data.UserID,
43 | data.Command, data.Error)
44 | if data.AddInfo != "" {
45 | text += " AddInfo: " + data.AddInfo
46 | }
47 |
48 | log.Println(text)
49 | }
50 |
51 | // LogMinorError логгирует мелкие ошибки, которые произошли во время работы программы
52 | func LogMinorError(funcName, message string, err error) {
53 | log.Printf("[ERR] Func: %s Err: %s AddInfo: %s\n", funcName, err, message)
54 | }
55 |
56 | // LogFatalError логгирует фатальную ошибку, после чего завершает программу с кодом 1
57 | func LogFatalError(funcName, message string, err error) {
58 | log.Printf("[FATAL ERR] Func: %s Err: %s Msg: %s", funcName, err, message)
59 | os.Exit(1)
60 | }
61 |
--------------------------------------------------------------------------------
/internal/userdb/functions.go:
--------------------------------------------------------------------------------
1 | package userdb
2 |
3 | import (
4 | "errors"
5 | "strconv"
6 | "strings"
7 | )
8 |
9 | func toSlice(data []byte) ([]string, error) {
10 | findElement := func(slice []string, key string) int {
11 | for i, elem := range slice {
12 | if elem == key {
13 | return i
14 | }
15 | }
16 | return -1
17 | }
18 |
19 | if data == nil {
20 | return []string{}, errors.New("Field doesn't exist")
21 | }
22 |
23 | sData := string(data)
24 | result := strings.Split(sData, " ")
25 | if index := findElement(result, ""); index != -1 {
26 | result[index], result[len(result)-1] = result[len(result)-1], result[index]
27 | result = result[:len(result)-1]
28 | }
29 | return result, nil
30 | }
31 |
32 | func toBool(data []byte) (bool, error) {
33 | if data == nil {
34 | return false, errors.New("Field doesn't exist")
35 | }
36 |
37 | return strconv.ParseBool(string(data))
38 | }
39 |
40 | func toInt64(data []byte) (int64, error) {
41 | if data == nil {
42 | return 0, errors.New("Field doesn't exist")
43 | }
44 |
45 | return strconv.ParseInt(string(data), 10, 64)
46 | }
47 |
48 | func addTags(oldTags, newTags []string) []string {
49 | oldTagsMap := make(map[string]int)
50 | for _, tag := range oldTags {
51 | oldTagsMap[tag] = 1
52 | }
53 |
54 | for _, tag := range newTags {
55 | oldTagsMap[tag] = 1
56 | }
57 | // удаление пустой строки
58 | delete(oldTagsMap, "")
59 |
60 | result := make([]string, 0)
61 | for tag := range oldTagsMap {
62 | result = append(result, tag)
63 | }
64 |
65 | return result
66 | }
67 |
68 | func delTags(oldTags, tagsForDel []string) []string {
69 | // Создаём map
70 | oldTagsMap := make(map[string]int)
71 | for _, tag := range oldTags {
72 | oldTagsMap[tag] = 1
73 | }
74 |
75 | for _, tag := range tagsForDel {
76 | delete(oldTagsMap, tag)
77 | }
78 | delete(oldTagsMap, "")
79 |
80 | result := make([]string, 0)
81 | for tag := range oldTagsMap {
82 | result = append(result, tag)
83 | }
84 |
85 | return result
86 | }
87 |
--------------------------------------------------------------------------------
/stuff/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ShoshinNikita/habrahabr-bot-go/351a7ce5195e7ff00faabf28919ee505f02ede72/stuff/1.jpg
--------------------------------------------------------------------------------
/stuff/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ShoshinNikita/habrahabr-bot-go/351a7ce5195e7ff00faabf28919ee505f02ede72/stuff/2.png
--------------------------------------------------------------------------------
/stuff/logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ShoshinNikita/habrahabr-bot-go/351a7ce5195e7ff00faabf28919ee505f02ede72/stuff/logo.jpg
--------------------------------------------------------------------------------
/stuff/Показывает процесс пересылки.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ShoshinNikita/habrahabr-bot-go/351a7ce5195e7ff00faabf28919ee505f02ede72/stuff/Показывает процесс пересылки.gif
--------------------------------------------------------------------------------
/vendor/github.com/PuerkitoBio/goquery/.gitattributes:
--------------------------------------------------------------------------------
1 | testdata/* linguist-vendored
2 |
--------------------------------------------------------------------------------
/vendor/github.com/PuerkitoBio/goquery/.gitignore:
--------------------------------------------------------------------------------
1 | # editor temporary files
2 | *.sublime-*
3 | .DS_Store
4 | *.swp
5 | #*.*#
6 | tags
7 |
8 | # direnv config
9 | .env*
10 |
11 | # test binaries
12 | *.test
13 |
14 | # coverage and profilte outputs
15 | *.out
16 |
17 |
--------------------------------------------------------------------------------
/vendor/github.com/PuerkitoBio/goquery/.travis.yml:
--------------------------------------------------------------------------------
1 | language: go
2 |
3 | go:
4 | - 1.1
5 | - 1.2.x
6 | - 1.3.x
7 | - 1.4.x
8 | - 1.5.x
9 | - 1.6.x
10 | - 1.7.x
11 | - 1.8.x
12 | - 1.9.x
13 | - "1.10.x"
14 | - 1.11.x
15 | - tip
16 |
17 |
--------------------------------------------------------------------------------
/vendor/github.com/PuerkitoBio/goquery/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2012-2016, Martin Angers & Contributors
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
5 |
6 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7 |
8 | * 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.
9 |
10 | * Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
11 |
12 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE 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.
13 |
--------------------------------------------------------------------------------
/vendor/github.com/PuerkitoBio/goquery/expand.go:
--------------------------------------------------------------------------------
1 | package goquery
2 |
3 | import "golang.org/x/net/html"
4 |
5 | // Add adds the selector string's matching nodes to those in the current
6 | // selection and returns a new Selection object.
7 | // The selector string is run in the context of the document of the current
8 | // Selection object.
9 | func (s *Selection) Add(selector string) *Selection {
10 | return s.AddNodes(findWithMatcher([]*html.Node{s.document.rootNode}, compileMatcher(selector))...)
11 | }
12 |
13 | // AddMatcher adds the matcher's matching nodes to those in the current
14 | // selection and returns a new Selection object.
15 | // The matcher is run in the context of the document of the current
16 | // Selection object.
17 | func (s *Selection) AddMatcher(m Matcher) *Selection {
18 | return s.AddNodes(findWithMatcher([]*html.Node{s.document.rootNode}, m)...)
19 | }
20 |
21 | // AddSelection adds the specified Selection object's nodes to those in the
22 | // current selection and returns a new Selection object.
23 | func (s *Selection) AddSelection(sel *Selection) *Selection {
24 | if sel == nil {
25 | return s.AddNodes()
26 | }
27 | return s.AddNodes(sel.Nodes...)
28 | }
29 |
30 | // Union is an alias for AddSelection.
31 | func (s *Selection) Union(sel *Selection) *Selection {
32 | return s.AddSelection(sel)
33 | }
34 |
35 | // AddNodes adds the specified nodes to those in the
36 | // current selection and returns a new Selection object.
37 | func (s *Selection) AddNodes(nodes ...*html.Node) *Selection {
38 | return pushStack(s, appendWithoutDuplicates(s.Nodes, nodes, nil))
39 | }
40 |
41 | // AndSelf adds the previous set of elements on the stack to the current set.
42 | // It returns a new Selection object containing the current Selection combined
43 | // with the previous one.
44 | // Deprecated: This function has been deprecated and is now an alias for AddBack().
45 | func (s *Selection) AndSelf() *Selection {
46 | return s.AddBack()
47 | }
48 |
49 | // AddBack adds the previous set of elements on the stack to the current set.
50 | // It returns a new Selection object containing the current Selection combined
51 | // with the previous one.
52 | func (s *Selection) AddBack() *Selection {
53 | return s.AddSelection(s.prevSel)
54 | }
55 |
56 | // AddBackFiltered reduces the previous set of elements on the stack to those that
57 | // match the selector string, and adds them to the current set.
58 | // It returns a new Selection object containing the current Selection combined
59 | // with the filtered previous one
60 | func (s *Selection) AddBackFiltered(selector string) *Selection {
61 | return s.AddSelection(s.prevSel.Filter(selector))
62 | }
63 |
64 | // AddBackMatcher reduces the previous set of elements on the stack to those that match
65 | // the mateher, and adds them to the curernt set.
66 | // It returns a new Selection object containing the current Selection combined
67 | // with the filtered previous one
68 | func (s *Selection) AddBackMatcher(m Matcher) *Selection {
69 | return s.AddSelection(s.prevSel.FilterMatcher(m))
70 | }
71 |
--------------------------------------------------------------------------------
/vendor/github.com/PuerkitoBio/goquery/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/PuerkitoBio/goquery
2 |
3 | require (
4 | github.com/andybalholm/cascadia v1.0.0
5 | golang.org/x/net v0.0.0-20181114220301-adae6a3d119a
6 | )
7 |
--------------------------------------------------------------------------------
/vendor/github.com/PuerkitoBio/goquery/go.sum:
--------------------------------------------------------------------------------
1 | github.com/andybalholm/cascadia v1.0.0 h1:hOCXnnZ5A+3eVDX8pvgl4kofXv2ELss0bKcqRySc45o=
2 | github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
3 | golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
4 | golang.org/x/net v0.0.0-20181114220301-adae6a3d119a h1:gOpx8G595UYyvj8UK4+OFyY4rx037g3fmfhe5SasG3U=
5 | golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
6 |
--------------------------------------------------------------------------------
/vendor/github.com/PuerkitoBio/goquery/iteration.go:
--------------------------------------------------------------------------------
1 | package goquery
2 |
3 | // Each iterates over a Selection object, executing a function for each
4 | // matched element. It returns the current Selection object. The function
5 | // f is called for each element in the selection with the index of the
6 | // element in that selection starting at 0, and a *Selection that contains
7 | // only that element.
8 | func (s *Selection) Each(f func(int, *Selection)) *Selection {
9 | for i, n := range s.Nodes {
10 | f(i, newSingleSelection(n, s.document))
11 | }
12 | return s
13 | }
14 |
15 | // EachWithBreak iterates over a Selection object, executing a function for each
16 | // matched element. It is identical to Each except that it is possible to break
17 | // out of the loop by returning false in the callback function. It returns the
18 | // current Selection object.
19 | func (s *Selection) EachWithBreak(f func(int, *Selection) bool) *Selection {
20 | for i, n := range s.Nodes {
21 | if !f(i, newSingleSelection(n, s.document)) {
22 | return s
23 | }
24 | }
25 | return s
26 | }
27 |
28 | // Map passes each element in the current matched set through a function,
29 | // producing a slice of string holding the returned values. The function
30 | // f is called for each element in the selection with the index of the
31 | // element in that selection starting at 0, and a *Selection that contains
32 | // only that element.
33 | func (s *Selection) Map(f func(int, *Selection) string) (result []string) {
34 | for i, n := range s.Nodes {
35 | result = append(result, f(i, newSingleSelection(n, s.document)))
36 | }
37 |
38 | return result
39 | }
40 |
--------------------------------------------------------------------------------
/vendor/github.com/PuerkitoBio/goquery/query.go:
--------------------------------------------------------------------------------
1 | package goquery
2 |
3 | import "golang.org/x/net/html"
4 |
5 | // Is checks the current matched set of elements against a selector and
6 | // returns true if at least one of these elements matches.
7 | func (s *Selection) Is(selector string) bool {
8 | return s.IsMatcher(compileMatcher(selector))
9 | }
10 |
11 | // IsMatcher checks the current matched set of elements against a matcher and
12 | // returns true if at least one of these elements matches.
13 | func (s *Selection) IsMatcher(m Matcher) bool {
14 | if len(s.Nodes) > 0 {
15 | if len(s.Nodes) == 1 {
16 | return m.Match(s.Nodes[0])
17 | }
18 | return len(m.Filter(s.Nodes)) > 0
19 | }
20 |
21 | return false
22 | }
23 |
24 | // IsFunction checks the current matched set of elements against a predicate and
25 | // returns true if at least one of these elements matches.
26 | func (s *Selection) IsFunction(f func(int, *Selection) bool) bool {
27 | return s.FilterFunction(f).Length() > 0
28 | }
29 |
30 | // IsSelection checks the current matched set of elements against a Selection object
31 | // and returns true if at least one of these elements matches.
32 | func (s *Selection) IsSelection(sel *Selection) bool {
33 | return s.FilterSelection(sel).Length() > 0
34 | }
35 |
36 | // IsNodes checks the current matched set of elements against the specified nodes
37 | // and returns true if at least one of these elements matches.
38 | func (s *Selection) IsNodes(nodes ...*html.Node) bool {
39 | return s.FilterNodes(nodes...).Length() > 0
40 | }
41 |
42 | // Contains returns true if the specified Node is within,
43 | // at any depth, one of the nodes in the Selection object.
44 | // It is NOT inclusive, to behave like jQuery's implementation, and
45 | // unlike Javascript's .contains, so if the contained
46 | // node is itself in the selection, it returns false.
47 | func (s *Selection) Contains(n *html.Node) bool {
48 | return sliceContains(s.Nodes, n)
49 | }
50 |
--------------------------------------------------------------------------------
/vendor/github.com/anaskhan96/soup/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 |
--------------------------------------------------------------------------------
/vendor/github.com/anaskhan96/soup/.travis.yml:
--------------------------------------------------------------------------------
1 | language: go
2 |
3 | go:
4 | - 1.6.x
5 | - 1.7.x
6 | - 1.8.x
7 |
8 | script:
9 | - go test
10 |
--------------------------------------------------------------------------------
/vendor/github.com/anaskhan96/soup/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## v1.1
2 |
3 | ### Added
4 |
5 | - Cookies can be added to the HTTP request, either via the `Cookies` map or the `Cookie()` function
6 | - Function `GetWithClient()` provides the ability to send the request with a custom HTTP client
7 | - Function `FindStrict()` finds the first instance of the mentioned tag with the exact matching values of the provided attribute (previously `Find()`)
8 | - Function `FindAllStrict()` finds all the instances of the mentioned tag with the exact matching values of the attributes (previously `FindAll()`)
9 |
10 | ## Changed
11 |
12 | - Function `Find()` now finds the first instance of the mentioned tag with any matching values of the provided attribute.
13 | - Function `FindAll()` now finds all the instances of the mentioned tag with any matching values of the provided attribute.
14 |
15 | ---
--------------------------------------------------------------------------------
/vendor/github.com/anaskhan96/soup/license:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Anas Khan
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/vendor/github.com/andybalholm/cascadia/.travis.yml:
--------------------------------------------------------------------------------
1 | language: go
2 |
3 | go:
4 | - 1.3
5 | - 1.4
6 |
7 | install:
8 | - go get github.com/andybalholm/cascadia
9 |
10 | script:
11 | - go test -v
12 |
13 | notifications:
14 | email: false
15 |
--------------------------------------------------------------------------------
/vendor/github.com/andybalholm/cascadia/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2011 Andy Balholm. All rights reserved.
2 |
3 | Redistribution and use in source and binary forms, with or without
4 | modification, are permitted provided that the following conditions are
5 | met:
6 |
7 | * Redistributions of source code must retain the above copyright
8 | notice, this list of conditions and the following disclaimer.
9 | * Redistributions in binary form must reproduce the above
10 | copyright notice, this list of conditions and the following disclaimer
11 | in the documentation and/or other materials provided with the
12 | distribution.
13 |
14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
--------------------------------------------------------------------------------
/vendor/github.com/andybalholm/cascadia/README.md:
--------------------------------------------------------------------------------
1 | # cascadia
2 |
3 | [](https://travis-ci.org/andybalholm/cascadia)
4 |
5 | The Cascadia package implements CSS selectors for use with the parse trees produced by the html package.
6 |
7 | To test CSS selectors without writing Go code, check out [cascadia](https://github.com/suntong/cascadia) the command line tool, a thin wrapper around this package.
8 |
--------------------------------------------------------------------------------
/vendor/github.com/andybalholm/cascadia/go.mod:
--------------------------------------------------------------------------------
1 | module "github.com/andybalholm/cascadia"
2 |
3 | require "golang.org/x/net" v0.0.0-20180218175443-cbe0f9307d01
4 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/.gitignore:
--------------------------------------------------------------------------------
1 | *.prof
2 | *.test
3 | *.swp
4 | /bin/
5 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2013 Ben Johnson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/Makefile:
--------------------------------------------------------------------------------
1 | BRANCH=`git rev-parse --abbrev-ref HEAD`
2 | COMMIT=`git rev-parse --short HEAD`
3 | GOLDFLAGS="-X main.branch $(BRANCH) -X main.commit $(COMMIT)"
4 |
5 | default: build
6 |
7 | race:
8 | @go test -v -race -test.run="TestSimulate_(100op|1000op)"
9 |
10 | # go get github.com/kisielk/errcheck
11 | errcheck:
12 | @errcheck -ignorepkg=bytes -ignore=os:Remove github.com/boltdb/bolt
13 |
14 | test:
15 | @go test -v -cover .
16 | @go test -v ./cmd/bolt
17 |
18 | .PHONY: fmt test
19 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/appveyor.yml:
--------------------------------------------------------------------------------
1 | version: "{build}"
2 |
3 | os: Windows Server 2012 R2
4 |
5 | clone_folder: c:\gopath\src\github.com\boltdb\bolt
6 |
7 | environment:
8 | GOPATH: c:\gopath
9 |
10 | install:
11 | - echo %PATH%
12 | - echo %GOPATH%
13 | - go version
14 | - go env
15 | - go get -v -t ./...
16 |
17 | build_script:
18 | - go test -v ./...
19 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/bolt_386.go:
--------------------------------------------------------------------------------
1 | package bolt
2 |
3 | // maxMapSize represents the largest mmap size supported by Bolt.
4 | const maxMapSize = 0x7FFFFFFF // 2GB
5 |
6 | // maxAllocSize is the size used when creating array pointers.
7 | const maxAllocSize = 0xFFFFFFF
8 |
9 | // Are unaligned load/stores broken on this arch?
10 | var brokenUnaligned = false
11 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/bolt_amd64.go:
--------------------------------------------------------------------------------
1 | package bolt
2 |
3 | // maxMapSize represents the largest mmap size supported by Bolt.
4 | const maxMapSize = 0xFFFFFFFFFFFF // 256TB
5 |
6 | // maxAllocSize is the size used when creating array pointers.
7 | const maxAllocSize = 0x7FFFFFFF
8 |
9 | // Are unaligned load/stores broken on this arch?
10 | var brokenUnaligned = false
11 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/bolt_arm.go:
--------------------------------------------------------------------------------
1 | package bolt
2 |
3 | import "unsafe"
4 |
5 | // maxMapSize represents the largest mmap size supported by Bolt.
6 | const maxMapSize = 0x7FFFFFFF // 2GB
7 |
8 | // maxAllocSize is the size used when creating array pointers.
9 | const maxAllocSize = 0xFFFFFFF
10 |
11 | // Are unaligned load/stores broken on this arch?
12 | var brokenUnaligned bool
13 |
14 | func init() {
15 | // Simple check to see whether this arch handles unaligned load/stores
16 | // correctly.
17 |
18 | // ARM9 and older devices require load/stores to be from/to aligned
19 | // addresses. If not, the lower 2 bits are cleared and that address is
20 | // read in a jumbled up order.
21 |
22 | // See http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka15414.html
23 |
24 | raw := [6]byte{0xfe, 0xef, 0x11, 0x22, 0x22, 0x11}
25 | val := *(*uint32)(unsafe.Pointer(uintptr(unsafe.Pointer(&raw)) + 2))
26 |
27 | brokenUnaligned = val != 0x11222211
28 | }
29 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/bolt_arm64.go:
--------------------------------------------------------------------------------
1 | // +build arm64
2 |
3 | package bolt
4 |
5 | // maxMapSize represents the largest mmap size supported by Bolt.
6 | const maxMapSize = 0xFFFFFFFFFFFF // 256TB
7 |
8 | // maxAllocSize is the size used when creating array pointers.
9 | const maxAllocSize = 0x7FFFFFFF
10 |
11 | // Are unaligned load/stores broken on this arch?
12 | var brokenUnaligned = false
13 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/bolt_linux.go:
--------------------------------------------------------------------------------
1 | package bolt
2 |
3 | import (
4 | "syscall"
5 | )
6 |
7 | // fdatasync flushes written data to a file descriptor.
8 | func fdatasync(db *DB) error {
9 | return syscall.Fdatasync(int(db.file.Fd()))
10 | }
11 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/bolt_openbsd.go:
--------------------------------------------------------------------------------
1 | package bolt
2 |
3 | import (
4 | "syscall"
5 | "unsafe"
6 | )
7 |
8 | const (
9 | msAsync = 1 << iota // perform asynchronous writes
10 | msSync // perform synchronous writes
11 | msInvalidate // invalidate cached data
12 | )
13 |
14 | func msync(db *DB) error {
15 | _, _, errno := syscall.Syscall(syscall.SYS_MSYNC, uintptr(unsafe.Pointer(db.data)), uintptr(db.datasz), msInvalidate)
16 | if errno != 0 {
17 | return errno
18 | }
19 | return nil
20 | }
21 |
22 | func fdatasync(db *DB) error {
23 | if db.data != nil {
24 | return msync(db)
25 | }
26 | return db.file.Sync()
27 | }
28 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/bolt_ppc.go:
--------------------------------------------------------------------------------
1 | // +build ppc
2 |
3 | package bolt
4 |
5 | // maxMapSize represents the largest mmap size supported by Bolt.
6 | const maxMapSize = 0x7FFFFFFF // 2GB
7 |
8 | // maxAllocSize is the size used when creating array pointers.
9 | const maxAllocSize = 0xFFFFFFF
10 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/bolt_ppc64.go:
--------------------------------------------------------------------------------
1 | // +build ppc64
2 |
3 | package bolt
4 |
5 | // maxMapSize represents the largest mmap size supported by Bolt.
6 | const maxMapSize = 0xFFFFFFFFFFFF // 256TB
7 |
8 | // maxAllocSize is the size used when creating array pointers.
9 | const maxAllocSize = 0x7FFFFFFF
10 |
11 | // Are unaligned load/stores broken on this arch?
12 | var brokenUnaligned = false
13 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/bolt_ppc64le.go:
--------------------------------------------------------------------------------
1 | // +build ppc64le
2 |
3 | package bolt
4 |
5 | // maxMapSize represents the largest mmap size supported by Bolt.
6 | const maxMapSize = 0xFFFFFFFFFFFF // 256TB
7 |
8 | // maxAllocSize is the size used when creating array pointers.
9 | const maxAllocSize = 0x7FFFFFFF
10 |
11 | // Are unaligned load/stores broken on this arch?
12 | var brokenUnaligned = false
13 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/bolt_s390x.go:
--------------------------------------------------------------------------------
1 | // +build s390x
2 |
3 | package bolt
4 |
5 | // maxMapSize represents the largest mmap size supported by Bolt.
6 | const maxMapSize = 0xFFFFFFFFFFFF // 256TB
7 |
8 | // maxAllocSize is the size used when creating array pointers.
9 | const maxAllocSize = 0x7FFFFFFF
10 |
11 | // Are unaligned load/stores broken on this arch?
12 | var brokenUnaligned = false
13 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/bolt_unix.go:
--------------------------------------------------------------------------------
1 | // +build !windows,!plan9,!solaris
2 |
3 | package bolt
4 |
5 | import (
6 | "fmt"
7 | "os"
8 | "syscall"
9 | "time"
10 | "unsafe"
11 | )
12 |
13 | // flock acquires an advisory lock on a file descriptor.
14 | func flock(db *DB, mode os.FileMode, exclusive bool, timeout time.Duration) error {
15 | var t time.Time
16 | for {
17 | // If we're beyond our timeout then return an error.
18 | // This can only occur after we've attempted a flock once.
19 | if t.IsZero() {
20 | t = time.Now()
21 | } else if timeout > 0 && time.Since(t) > timeout {
22 | return ErrTimeout
23 | }
24 | flag := syscall.LOCK_SH
25 | if exclusive {
26 | flag = syscall.LOCK_EX
27 | }
28 |
29 | // Otherwise attempt to obtain an exclusive lock.
30 | err := syscall.Flock(int(db.file.Fd()), flag|syscall.LOCK_NB)
31 | if err == nil {
32 | return nil
33 | } else if err != syscall.EWOULDBLOCK {
34 | return err
35 | }
36 |
37 | // Wait for a bit and try again.
38 | time.Sleep(50 * time.Millisecond)
39 | }
40 | }
41 |
42 | // funlock releases an advisory lock on a file descriptor.
43 | func funlock(db *DB) error {
44 | return syscall.Flock(int(db.file.Fd()), syscall.LOCK_UN)
45 | }
46 |
47 | // mmap memory maps a DB's data file.
48 | func mmap(db *DB, sz int) error {
49 | // Map the data file to memory.
50 | b, err := syscall.Mmap(int(db.file.Fd()), 0, sz, syscall.PROT_READ, syscall.MAP_SHARED|db.MmapFlags)
51 | if err != nil {
52 | return err
53 | }
54 |
55 | // Advise the kernel that the mmap is accessed randomly.
56 | if err := madvise(b, syscall.MADV_RANDOM); err != nil {
57 | return fmt.Errorf("madvise: %s", err)
58 | }
59 |
60 | // Save the original byte slice and convert to a byte array pointer.
61 | db.dataref = b
62 | db.data = (*[maxMapSize]byte)(unsafe.Pointer(&b[0]))
63 | db.datasz = sz
64 | return nil
65 | }
66 |
67 | // munmap unmaps a DB's data file from memory.
68 | func munmap(db *DB) error {
69 | // Ignore the unmap if we have no mapped data.
70 | if db.dataref == nil {
71 | return nil
72 | }
73 |
74 | // Unmap using the original byte slice.
75 | err := syscall.Munmap(db.dataref)
76 | db.dataref = nil
77 | db.data = nil
78 | db.datasz = 0
79 | return err
80 | }
81 |
82 | // NOTE: This function is copied from stdlib because it is not available on darwin.
83 | func madvise(b []byte, advice int) (err error) {
84 | _, _, e1 := syscall.Syscall(syscall.SYS_MADVISE, uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), uintptr(advice))
85 | if e1 != 0 {
86 | err = e1
87 | }
88 | return
89 | }
90 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/bolt_unix_solaris.go:
--------------------------------------------------------------------------------
1 | package bolt
2 |
3 | import (
4 | "fmt"
5 | "os"
6 | "syscall"
7 | "time"
8 | "unsafe"
9 |
10 | "golang.org/x/sys/unix"
11 | )
12 |
13 | // flock acquires an advisory lock on a file descriptor.
14 | func flock(db *DB, mode os.FileMode, exclusive bool, timeout time.Duration) error {
15 | var t time.Time
16 | for {
17 | // If we're beyond our timeout then return an error.
18 | // This can only occur after we've attempted a flock once.
19 | if t.IsZero() {
20 | t = time.Now()
21 | } else if timeout > 0 && time.Since(t) > timeout {
22 | return ErrTimeout
23 | }
24 | var lock syscall.Flock_t
25 | lock.Start = 0
26 | lock.Len = 0
27 | lock.Pid = 0
28 | lock.Whence = 0
29 | lock.Pid = 0
30 | if exclusive {
31 | lock.Type = syscall.F_WRLCK
32 | } else {
33 | lock.Type = syscall.F_RDLCK
34 | }
35 | err := syscall.FcntlFlock(db.file.Fd(), syscall.F_SETLK, &lock)
36 | if err == nil {
37 | return nil
38 | } else if err != syscall.EAGAIN {
39 | return err
40 | }
41 |
42 | // Wait for a bit and try again.
43 | time.Sleep(50 * time.Millisecond)
44 | }
45 | }
46 |
47 | // funlock releases an advisory lock on a file descriptor.
48 | func funlock(db *DB) error {
49 | var lock syscall.Flock_t
50 | lock.Start = 0
51 | lock.Len = 0
52 | lock.Type = syscall.F_UNLCK
53 | lock.Whence = 0
54 | return syscall.FcntlFlock(uintptr(db.file.Fd()), syscall.F_SETLK, &lock)
55 | }
56 |
57 | // mmap memory maps a DB's data file.
58 | func mmap(db *DB, sz int) error {
59 | // Map the data file to memory.
60 | b, err := unix.Mmap(int(db.file.Fd()), 0, sz, syscall.PROT_READ, syscall.MAP_SHARED|db.MmapFlags)
61 | if err != nil {
62 | return err
63 | }
64 |
65 | // Advise the kernel that the mmap is accessed randomly.
66 | if err := unix.Madvise(b, syscall.MADV_RANDOM); err != nil {
67 | return fmt.Errorf("madvise: %s", err)
68 | }
69 |
70 | // Save the original byte slice and convert to a byte array pointer.
71 | db.dataref = b
72 | db.data = (*[maxMapSize]byte)(unsafe.Pointer(&b[0]))
73 | db.datasz = sz
74 | return nil
75 | }
76 |
77 | // munmap unmaps a DB's data file from memory.
78 | func munmap(db *DB) error {
79 | // Ignore the unmap if we have no mapped data.
80 | if db.dataref == nil {
81 | return nil
82 | }
83 |
84 | // Unmap using the original byte slice.
85 | err := unix.Munmap(db.dataref)
86 | db.dataref = nil
87 | db.data = nil
88 | db.datasz = 0
89 | return err
90 | }
91 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/boltsync_unix.go:
--------------------------------------------------------------------------------
1 | // +build !windows,!plan9,!linux,!openbsd
2 |
3 | package bolt
4 |
5 | // fdatasync flushes written data to a file descriptor.
6 | func fdatasync(db *DB) error {
7 | return db.file.Sync()
8 | }
9 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/doc.go:
--------------------------------------------------------------------------------
1 | /*
2 | Package bolt implements a low-level key/value store in pure Go. It supports
3 | fully serializable transactions, ACID semantics, and lock-free MVCC with
4 | multiple readers and a single writer. Bolt can be used for projects that
5 | want a simple data store without the need to add large dependencies such as
6 | Postgres or MySQL.
7 |
8 | Bolt is a single-level, zero-copy, B+tree data store. This means that Bolt is
9 | optimized for fast read access and does not require recovery in the event of a
10 | system crash. Transactions which have not finished committing will simply be
11 | rolled back in the event of a crash.
12 |
13 | The design of Bolt is based on Howard Chu's LMDB database project.
14 |
15 | Bolt currently works on Windows, Mac OS X, and Linux.
16 |
17 |
18 | Basics
19 |
20 | There are only a few types in Bolt: DB, Bucket, Tx, and Cursor. The DB is
21 | a collection of buckets and is represented by a single file on disk. A bucket is
22 | a collection of unique keys that are associated with values.
23 |
24 | Transactions provide either read-only or read-write access to the database.
25 | Read-only transactions can retrieve key/value pairs and can use Cursors to
26 | iterate over the dataset sequentially. Read-write transactions can create and
27 | delete buckets and can insert and remove keys. Only one read-write transaction
28 | is allowed at a time.
29 |
30 |
31 | Caveats
32 |
33 | The database uses a read-only, memory-mapped data file to ensure that
34 | applications cannot corrupt the database, however, this means that keys and
35 | values returned from Bolt cannot be changed. Writing to a read-only byte slice
36 | will cause Go to panic.
37 |
38 | Keys and values retrieved from the database are only valid for the life of
39 | the transaction. When used outside the transaction, these byte slices can
40 | point to different data or can point to invalid memory which will cause a panic.
41 |
42 |
43 | */
44 | package bolt
45 |
--------------------------------------------------------------------------------
/vendor/github.com/boltdb/bolt/errors.go:
--------------------------------------------------------------------------------
1 | package bolt
2 |
3 | import "errors"
4 |
5 | // These errors can be returned when opening or calling methods on a DB.
6 | var (
7 | // ErrDatabaseNotOpen is returned when a DB instance is accessed before it
8 | // is opened or after it is closed.
9 | ErrDatabaseNotOpen = errors.New("database not open")
10 |
11 | // ErrDatabaseOpen is returned when opening a database that is
12 | // already open.
13 | ErrDatabaseOpen = errors.New("database already open")
14 |
15 | // ErrInvalid is returned when both meta pages on a database are invalid.
16 | // This typically occurs when a file is not a bolt database.
17 | ErrInvalid = errors.New("invalid database")
18 |
19 | // ErrVersionMismatch is returned when the data file was created with a
20 | // different version of Bolt.
21 | ErrVersionMismatch = errors.New("version mismatch")
22 |
23 | // ErrChecksum is returned when either meta page checksum does not match.
24 | ErrChecksum = errors.New("checksum error")
25 |
26 | // ErrTimeout is returned when a database cannot obtain an exclusive lock
27 | // on the data file after the timeout passed to Open().
28 | ErrTimeout = errors.New("timeout")
29 | )
30 |
31 | // These errors can occur when beginning or committing a Tx.
32 | var (
33 | // ErrTxNotWritable is returned when performing a write operation on a
34 | // read-only transaction.
35 | ErrTxNotWritable = errors.New("tx not writable")
36 |
37 | // ErrTxClosed is returned when committing or rolling back a transaction
38 | // that has already been committed or rolled back.
39 | ErrTxClosed = errors.New("tx closed")
40 |
41 | // ErrDatabaseReadOnly is returned when a mutating transaction is started on a
42 | // read-only database.
43 | ErrDatabaseReadOnly = errors.New("database is in read-only mode")
44 | )
45 |
46 | // These errors can occur when putting or deleting a value or a bucket.
47 | var (
48 | // ErrBucketNotFound is returned when trying to access a bucket that has
49 | // not been created yet.
50 | ErrBucketNotFound = errors.New("bucket not found")
51 |
52 | // ErrBucketExists is returned when creating a bucket that already exists.
53 | ErrBucketExists = errors.New("bucket already exists")
54 |
55 | // ErrBucketNameRequired is returned when creating a bucket with a blank name.
56 | ErrBucketNameRequired = errors.New("bucket name required")
57 |
58 | // ErrKeyRequired is returned when inserting a zero-length key.
59 | ErrKeyRequired = errors.New("key required")
60 |
61 | // ErrKeyTooLarge is returned when inserting a key that is larger than MaxKeySize.
62 | ErrKeyTooLarge = errors.New("key too large")
63 |
64 | // ErrValueTooLarge is returned when inserting a value that is larger than MaxValueSize.
65 | ErrValueTooLarge = errors.New("value too large")
66 |
67 | // ErrIncompatibleValue is returned when trying create or delete a bucket
68 | // on an existing non-bucket key or when trying to create or delete a
69 | // non-bucket key on an existing bucket key.
70 | ErrIncompatibleValue = errors.New("incompatible value")
71 | )
72 |
--------------------------------------------------------------------------------
/vendor/github.com/jasonlvhit/gocron/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled Object files, Static and Dynamic libs (Shared Objects)
2 | *.o
3 | *.a
4 | *.so
5 |
6 | # Folders
7 | _obj
8 | _test
9 |
10 | # Architecture specific extensions/prefixes
11 | *.[568vq]
12 | [568vq].out
13 |
14 | *.cgo1.go
15 | *.cgo2.c
16 | _cgo_defun.c
17 | _cgo_gotypes.go
18 | _cgo_export.*
19 |
20 | _testmain.go
21 |
22 | *.exe
23 | *.test
24 |
25 | # IDE project files
26 | .idea
27 |
--------------------------------------------------------------------------------
/vendor/github.com/jasonlvhit/gocron/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2014, 辣椒面
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 |
7 | * Redistributions of source code must retain the above copyright notice, this
8 | list of conditions and the following disclaimer.
9 |
10 | * Redistributions in binary form must reproduce the above copyright notice,
11 | this list of conditions and the following disclaimer in the documentation
12 | and/or other materials provided with the distribution.
13 |
14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
18 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
20 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
21 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
22 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 |
25 |
--------------------------------------------------------------------------------
/vendor/github.com/jasonlvhit/gocron/README.md:
--------------------------------------------------------------------------------
1 | This package is currently looking for new maintainers (cause @jasonlvhit is in [ICU](https://github.com/996icu/996.ICU)). Please message @jasonlvhit if you are interested.
2 |
3 | ## goCron: A Golang Job Scheduling Package.
4 |
5 | [](http://godoc.org/github.com/jasonlvhit/gocron)
6 | [](https://waffle.io/jasonlvhit/gocron)
7 |
8 | goCron is a Golang job scheduling package which lets you run Go functions periodically at pre-determined interval using a simple, human-friendly syntax.
9 |
10 | goCron is a Golang implementation of Ruby module [clockwork](https://github.com/tomykaira/clockwork) and Python job scheduling package [schedule](https://github.com/dbader/schedule), and personally, this package is my first Golang program, just for fun and practice.
11 |
12 | See also this two great articles:
13 |
14 | - [Rethinking Cron](http://adam.herokuapp.com/past/2010/4/13/rethinking_cron/)
15 | - [Replace Cron with Clockwork](http://adam.herokuapp.com/past/2010/6/30/replace_cron_with_clockwork/)
16 |
17 | Back to this package, you could just use this simple API as below, to run a cron scheduler.
18 |
19 | ```go
20 | package main
21 |
22 | import (
23 | "fmt"
24 | "github.com/jasonlvhit/gocron"
25 | )
26 |
27 | func task() {
28 | fmt.Println("I am runnning task.")
29 | }
30 |
31 | func taskWithParams(a int, b string) {
32 | fmt.Println(a, b)
33 | }
34 |
35 | func main() {
36 | // Do jobs with params
37 | gocron.Every(1).Second().Do(taskWithParams, 1, "hello")
38 |
39 | // Do jobs without params
40 | gocron.Every(1).Second().Do(task)
41 | gocron.Every(2).Seconds().Do(task)
42 | gocron.Every(1).Minute().Do(task)
43 | gocron.Every(2).Minutes().Do(task)
44 | gocron.Every(1).Hour().Do(task)
45 | gocron.Every(2).Hours().Do(task)
46 | gocron.Every(1).Day().Do(task)
47 | gocron.Every(2).Days().Do(task)
48 |
49 | // Do jobs on specific weekday
50 | gocron.Every(1).Monday().Do(task)
51 | gocron.Every(1).Thursday().Do(task)
52 |
53 | // function At() take a string like 'hour:min'
54 | gocron.Every(1).Day().At("10:30").Do(task)
55 | gocron.Every(1).Monday().At("18:30").Do(task)
56 |
57 | // remove, clear and next_run
58 | _, time := gocron.NextRun()
59 | fmt.Println(time)
60 |
61 | gocron.Remove(task)
62 | gocron.Clear()
63 |
64 | // function Start start all the pending jobs
65 | <- gocron.Start()
66 |
67 | // also , you can create a your new scheduler,
68 | // to run two scheduler concurrently
69 | s := gocron.NewScheduler()
70 | s.Every(3).Seconds().Do(task)
71 | <- s.Start()
72 |
73 | }
74 | ```
75 |
76 | and full test cases and [document](http://godoc.org/github.com/jasonlvhit/gocron) will be coming soon.
77 |
78 | Once again, thanks to the great works of Ruby clockwork and Python schedule package. BSD license is used, see the file License for detail.
79 |
80 | Have fun!
81 |
--------------------------------------------------------------------------------
/vendor/github.com/mmcdole/gofeed/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled Object files, Static and Dynamic libs (Shared Objects)
2 | *.o
3 | *.a
4 | *.so
5 |
6 | # Folders
7 | _obj
8 | _test
9 |
10 | # Architecture specific extensions/prefixes
11 | *.[568vq]
12 | [568vq].out
13 |
14 | *.cgo1.go
15 | *.cgo2.c
16 | _cgo_defun.c
17 | _cgo_gotypes.go
18 | _cgo_export.*
19 |
20 | _testmain.go
21 |
22 | *.exe
23 | *.test
24 | *.prof
25 |
26 | .DS_STORE
27 |
--------------------------------------------------------------------------------
/vendor/github.com/mmcdole/gofeed/.travis.yml:
--------------------------------------------------------------------------------
1 | language: go
2 | go:
3 | - tip
4 | - 1.6
5 | - 1.5
6 | - 1.4
7 | install:
8 | - go get -t -v ./...
9 | - go get github.com/go-playground/overalls
10 | - go get github.com/mattn/goveralls
11 | - go get golang.org/x/tools/cmd/cover
12 | script:
13 | - go test -v ./...
14 | - $GOPATH/bin/overalls -project=github.com/mmcdole/gofeed -covermode=count -ignore=.git,vendor -debug
15 | after_success:
16 | - $GOPATH/bin/goveralls -coverprofile=overalls.coverprofile -service=travis-ci
17 |
--------------------------------------------------------------------------------
/vendor/github.com/mmcdole/gofeed/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 mmcdole
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/vendor/github.com/mmcdole/gofeed/detector.go:
--------------------------------------------------------------------------------
1 | package gofeed
2 |
3 | import (
4 | "io"
5 | "strings"
6 |
7 | "github.com/mmcdole/gofeed/internal/shared"
8 | "github.com/mmcdole/goxpp"
9 | )
10 |
11 | // FeedType represents one of the possible feed
12 | // types that we can detect.
13 | type FeedType int
14 |
15 | const (
16 | // FeedTypeUnknown represents a feed that could not have its
17 | // type determiend.
18 | FeedTypeUnknown FeedType = iota
19 | // FeedTypeAtom repesents an Atom feed
20 | FeedTypeAtom
21 | // FeedTypeRSS represents an RSS feed
22 | FeedTypeRSS
23 | )
24 |
25 | // DetectFeedType attempts to determine the type of feed
26 | // by looking for specific xml elements unique to the
27 | // various feed types.
28 | func DetectFeedType(feed io.Reader) FeedType {
29 | p := xpp.NewXMLPullParser(feed, false, shared.NewReaderLabel)
30 |
31 | _, err := shared.FindRoot(p)
32 | if err != nil {
33 | return FeedTypeUnknown
34 | }
35 |
36 | name := strings.ToLower(p.Name)
37 | switch name {
38 | case "rdf":
39 | return FeedTypeRSS
40 | case "rss":
41 | return FeedTypeRSS
42 | case "feed":
43 | return FeedTypeAtom
44 | default:
45 | return FeedTypeUnknown
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/vendor/github.com/mmcdole/gofeed/extensions/dublincore.go:
--------------------------------------------------------------------------------
1 | package ext
2 |
3 | // DublinCoreExtension represents a feed extension
4 | // for the Dublin Core specification.
5 | type DublinCoreExtension struct {
6 | Title []string `json:"title,omitempty"`
7 | Creator []string `json:"creator,omitempty"`
8 | Author []string `json:"author,omitempty"`
9 | Subject []string `json:"subject,omitempty"`
10 | Description []string `json:"description,omitempty"`
11 | Publisher []string `json:"publisher,omitempty"`
12 | Contributor []string `json:"contributor,omitempty"`
13 | Date []string `json:"date,omitempty"`
14 | Type []string `json:"type,omitempty"`
15 | Format []string `json:"format,omitempty"`
16 | Identifier []string `json:"identifier,omitempty"`
17 | Source []string `json:"source,omitempty"`
18 | Language []string `json:"language,omitempty"`
19 | Relation []string `json:"relation,omitempty"`
20 | Coverage []string `json:"coverage,omitempty"`
21 | Rights []string `json:"rights,omitempty"`
22 | }
23 |
24 | // NewDublinCoreExtension creates a new DublinCoreExtension
25 | // given the generic extension map for the "dc" prefix.
26 | func NewDublinCoreExtension(extensions map[string][]Extension) *DublinCoreExtension {
27 | dc := &DublinCoreExtension{}
28 | dc.Title = parseTextArrayExtension("title", extensions)
29 | dc.Creator = parseTextArrayExtension("creator", extensions)
30 | dc.Author = parseTextArrayExtension("author", extensions)
31 | dc.Subject = parseTextArrayExtension("subject", extensions)
32 | dc.Description = parseTextArrayExtension("description", extensions)
33 | dc.Publisher = parseTextArrayExtension("publisher", extensions)
34 | dc.Contributor = parseTextArrayExtension("contributor", extensions)
35 | dc.Date = parseTextArrayExtension("date", extensions)
36 | dc.Type = parseTextArrayExtension("type", extensions)
37 | dc.Format = parseTextArrayExtension("format", extensions)
38 | dc.Identifier = parseTextArrayExtension("identifier", extensions)
39 | dc.Source = parseTextArrayExtension("source", extensions)
40 | dc.Language = parseTextArrayExtension("language", extensions)
41 | dc.Relation = parseTextArrayExtension("relation", extensions)
42 | dc.Coverage = parseTextArrayExtension("coverage", extensions)
43 | dc.Rights = parseTextArrayExtension("rights", extensions)
44 | return dc
45 | }
46 |
--------------------------------------------------------------------------------
/vendor/github.com/mmcdole/gofeed/extensions/extensions.go:
--------------------------------------------------------------------------------
1 | package ext
2 |
3 | // Extensions is the generic extension map for Feeds and Items.
4 | // The first map is for the element namespace prefix (e.g., itunes).
5 | // The second map is for the element name (e.g., author).
6 | type Extensions map[string]map[string][]Extension
7 |
8 | // Extension represents a single XML element that was in a non
9 | // default namespace in a Feed or Item/Entry.
10 | type Extension struct {
11 | Name string `json:"name"`
12 | Value string `json:"value"`
13 | Attrs map[string]string `json:"attrs"`
14 | Children map[string][]Extension `json:"children"`
15 | }
16 |
17 | func parseTextExtension(name string, extensions map[string][]Extension) (value string) {
18 | if extensions == nil {
19 | return
20 | }
21 |
22 | matches, ok := extensions[name]
23 | if !ok || len(matches) == 0 {
24 | return
25 | }
26 |
27 | match := matches[0]
28 | return match.Value
29 | }
30 |
31 | func parseTextArrayExtension(name string, extensions map[string][]Extension) (values []string) {
32 | if extensions == nil {
33 | return
34 | }
35 |
36 | matches, ok := extensions[name]
37 | if !ok || len(matches) == 0 {
38 | return
39 | }
40 |
41 | values = []string{}
42 | for _, m := range matches {
43 | values = append(values, m.Value)
44 | }
45 | return
46 | }
47 |
--------------------------------------------------------------------------------
/vendor/github.com/mmcdole/gofeed/internal/shared/charsetconv.go:
--------------------------------------------------------------------------------
1 | package shared
2 |
3 | import (
4 | "io"
5 |
6 | "golang.org/x/net/html/charset"
7 | )
8 |
9 | func NewReaderLabel(label string, input io.Reader) (io.Reader, error) {
10 | conv, err := charset.NewReaderLabel(label, input)
11 |
12 | if err != nil {
13 | return nil, err
14 | }
15 |
16 | // Wrap the charset decoder reader with a XML sanitizer
17 | //clean := NewXMLSanitizerReader(conv)
18 | return conv, nil
19 | }
20 |
--------------------------------------------------------------------------------
/vendor/github.com/mmcdole/gofeed/internal/shared/xmlsanitizer.go:
--------------------------------------------------------------------------------
1 | package shared
2 |
3 | import (
4 | "io"
5 |
6 | "golang.org/x/text/transform"
7 | )
8 |
9 | // NewXMLSanitizerReader creates an io.Reader that
10 | // wraps another io.Reader and removes illegal xml
11 | // characters from the io stream.
12 | func NewXMLSanitizerReader(xml io.Reader) io.Reader {
13 | isIllegal := func(r rune) bool {
14 | return !(r == 0x09 ||
15 | r == 0x0A ||
16 | r == 0x0D ||
17 | r >= 0x20 && r <= 0xDF77 ||
18 | r >= 0xE000 && r <= 0xFFFD ||
19 | r >= 0x10000 && r <= 0x10FFFF)
20 | }
21 | t := transform.Chain(transform.RemoveFunc(isIllegal))
22 | return transform.NewReader(xml, t)
23 | }
24 |
--------------------------------------------------------------------------------
/vendor/github.com/mmcdole/goxpp/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled Object files, Static and Dynamic libs (Shared Objects)
2 | *.o
3 | *.a
4 | *.so
5 |
6 | # Folders
7 | _obj
8 | _test
9 |
10 | # Architecture specific extensions/prefixes
11 | *.[568vq]
12 | [568vq].out
13 |
14 | *.cgo1.go
15 | *.cgo2.c
16 | _cgo_defun.c
17 | _cgo_gotypes.go
18 | _cgo_export.*
19 |
20 | _testmain.go
21 |
22 | *.exe
23 | *.test
24 | *.prof
25 |
--------------------------------------------------------------------------------
/vendor/github.com/mmcdole/goxpp/.travis.yml:
--------------------------------------------------------------------------------
1 | language: go
2 | go:
3 | - tip
4 | - 1.6
5 | - 1.5
6 | - 1.4
7 | install:
8 | - go get github.com/stretchr/testify/assert
9 | - go get golang.org/x/tools/cmd/cover
10 | - go get github.com/mattn/goveralls
11 | script:
12 | - go test -v -covermode=count -coverprofile=coverage.out
13 | - $HOME/gopath/bin/goveralls -coverprofile=coverage.out -service=travis-ci -repotoken=$COVERALLS_TOKEN
14 |
15 | env:
16 | global:
17 | secure: IZqRp8DmY6LLP+9PTjttLFuCeA/IqW4qQWGnNqyc8nwKoqbHTVY/MZav9WrocGBZZGdI/zLghnE3wp2bywPyBoBPJv9oq7NUZ47DGpdkaLazgP9O68dtshOZ/zDZU7kSbGDF6mePVYjPjkBkWFyt13np89n/bB0L0zdsQE3bKukJ0lSnN32aOjphL+nFEfxM5ghnOuZ7ZDyXTjehQNkNZG73T2ttic8pxi1M+xxl1FXODNgTz0D6qs2ZdKSjJeE9n5iOJqNxIRfW1iIXPn8L2UQBV1+8aohxGy22flwz1ZCO2MZJLqdR1apGZdqVrYhKjxOnyyRWfEX3mpl6/EiW1gLqPgpzjKPuu/wiwfUJOBdFbrn5WGoR6f16XJ6bmxo4NGUEtBXeZz932HWl8XXD+CAGfLNw1NAabH1HpNAYBd4CFpiIi5RtU5sRtumzXwjvgHxlRhwIRb6jWqWezBbRL10MrnhnUyyXu1AWV7LrSvPDbXZ/5NL4/fbW/Piop1vhuNhHauLvZxWa1yv9q1CN8Uad8KEiJcjRj6lac7CCTspoEaPEVlL01tJZDllga1XQCJcRJVPSzt0qEzG2XqhwjWaRkbMLqLXJ9/0YsY/QU9BA0mtPwo+2e2J8ZRmqqXNatysNk9l5sH5TBk3lP+n4jFtI0nGndCxwqPHFGsjhPsE=
18 |
--------------------------------------------------------------------------------
/vendor/github.com/mmcdole/goxpp/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 mmcdole
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/vendor/github.com/mmcdole/goxpp/README.md:
--------------------------------------------------------------------------------
1 | # goxpp
2 |
3 | [](https://travis-ci.org/mmcdole/goxpp) [](https://coveralls.io/github/mmcdole/goxpp?branch=master) [](http://doge.mit-license.org)
4 | [](https://godoc.org/github.com/mmcdole/goxpp)
5 |
6 | The `goxpp` library is an XML parser library that is loosely based on the [Java XMLPullParser](http://www.xmlpull.org/v1/download/unpacked/doc/quick_intro.html). This library allows you to easily parse arbitary XML content using a pull parser. You can think of `goxpp` as a lightweight wrapper around Go's XML `Decoder` that provides a set of functions that make it easier to parse XML content than using the raw decoder itself.
7 |
8 | This project is licensed under the [MIT License](https://raw.githubusercontent.com/mmcdole/goxpp/master/LICENSE)
9 |
10 |
--------------------------------------------------------------------------------
/vendor/github.com/technoweenie/multipartstreamer/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013-* rick olson
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
--------------------------------------------------------------------------------
/vendor/github.com/technoweenie/multipartstreamer/README.md:
--------------------------------------------------------------------------------
1 | # multipartstreamer
2 |
3 | Package multipartstreamer helps you encode large files in MIME multipart format
4 | without reading the entire content into memory. It uses io.MultiReader to
5 | combine an inner multipart.Reader with a file handle.
6 |
7 | ```go
8 | package main
9 |
10 | import (
11 | "github.com/technoweenie/multipartstreamer.go"
12 | "net/http"
13 | )
14 |
15 | func main() {
16 | ms := multipartstreamer.New()
17 |
18 | ms.WriteFields(map[string]string{
19 | "key": "some-key",
20 | "AWSAccessKeyId": "ABCDEF",
21 | "acl": "some-acl",
22 | })
23 |
24 | // Add any io.Reader to the multipart.Reader.
25 | ms.WriteReader("file", "filename", some_ioReader, size)
26 |
27 | // Shortcut for adding local file.
28 | ms.WriteFile("file", "path/to/file")
29 |
30 | req, _ := http.NewRequest("POST", "someurl", nil)
31 | ms.SetupRequest(req)
32 |
33 | res, _ := http.DefaultClient.Do(req)
34 | }
35 | ```
36 |
37 | One limitation: You can only write a single file.
38 |
39 | ## TODO
40 |
41 | * Multiple files?
42 |
43 | ## Credits
44 |
45 | Heavily inspired by James
46 |
47 | https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/Zjg5l4nKcQ0
48 |
--------------------------------------------------------------------------------
/vendor/github.com/technoweenie/multipartstreamer/multipartstreamer.go:
--------------------------------------------------------------------------------
1 | /*
2 | Package multipartstreamer helps you encode large files in MIME multipart format
3 | without reading the entire content into memory. It uses io.MultiReader to
4 | combine an inner multipart.Reader with a file handle.
5 | */
6 | package multipartstreamer
7 |
8 | import (
9 | "bytes"
10 | "fmt"
11 | "io"
12 | "io/ioutil"
13 | "mime/multipart"
14 | "net/http"
15 | "os"
16 | "path/filepath"
17 | )
18 |
19 | type MultipartStreamer struct {
20 | ContentType string
21 | bodyBuffer *bytes.Buffer
22 | bodyWriter *multipart.Writer
23 | closeBuffer *bytes.Buffer
24 | reader io.Reader
25 | contentLength int64
26 | }
27 |
28 | // New initializes a new MultipartStreamer.
29 | func New() (m *MultipartStreamer) {
30 | m = &MultipartStreamer{bodyBuffer: new(bytes.Buffer)}
31 |
32 | m.bodyWriter = multipart.NewWriter(m.bodyBuffer)
33 | boundary := m.bodyWriter.Boundary()
34 | m.ContentType = "multipart/form-data; boundary=" + boundary
35 |
36 | closeBoundary := fmt.Sprintf("\r\n--%s--\r\n", boundary)
37 | m.closeBuffer = bytes.NewBufferString(closeBoundary)
38 |
39 | return
40 | }
41 |
42 | // WriteFields writes multiple form fields to the multipart.Writer.
43 | func (m *MultipartStreamer) WriteFields(fields map[string]string) error {
44 | var err error
45 |
46 | for key, value := range fields {
47 | err = m.bodyWriter.WriteField(key, value)
48 | if err != nil {
49 | return err
50 | }
51 | }
52 |
53 | return nil
54 | }
55 |
56 | // WriteReader adds an io.Reader to get the content of a file. The reader is
57 | // not accessed until the multipart.Reader is copied to some output writer.
58 | func (m *MultipartStreamer) WriteReader(key, filename string, size int64, reader io.Reader) (err error) {
59 | m.reader = reader
60 | m.contentLength = size
61 |
62 | _, err = m.bodyWriter.CreateFormFile(key, filename)
63 | return
64 | }
65 |
66 | // WriteFile is a shortcut for adding a local file as an io.Reader.
67 | func (m *MultipartStreamer) WriteFile(key, filename string) error {
68 | fh, err := os.Open(filename)
69 | if err != nil {
70 | return err
71 | }
72 |
73 | stat, err := fh.Stat()
74 | if err != nil {
75 | return err
76 | }
77 |
78 | return m.WriteReader(key, filepath.Base(filename), stat.Size(), fh)
79 | }
80 |
81 | // SetupRequest sets up the http.Request body, and some crucial HTTP headers.
82 | func (m *MultipartStreamer) SetupRequest(req *http.Request) {
83 | req.Body = m.GetReader()
84 | req.Header.Add("Content-Type", m.ContentType)
85 | req.ContentLength = m.Len()
86 | }
87 |
88 | func (m *MultipartStreamer) Boundary() string {
89 | return m.bodyWriter.Boundary()
90 | }
91 |
92 | // Len calculates the byte size of the multipart content.
93 | func (m *MultipartStreamer) Len() int64 {
94 | return m.contentLength + int64(m.bodyBuffer.Len()) + int64(m.closeBuffer.Len())
95 | }
96 |
97 | // GetReader gets an io.ReadCloser for passing to an http.Request.
98 | func (m *MultipartStreamer) GetReader() io.ReadCloser {
99 | reader := io.MultiReader(m.bodyBuffer, m.reader, m.closeBuffer)
100 | return ioutil.NopCloser(reader)
101 | }
102 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/net/AUTHORS:
--------------------------------------------------------------------------------
1 | # This source code refers to The Go Authors for copyright purposes.
2 | # The master list of authors is in the main Go distribution,
3 | # visible at http://tip.golang.org/AUTHORS.
4 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/net/CONTRIBUTORS:
--------------------------------------------------------------------------------
1 | # This source code was written by the Go contributors.
2 | # The master list of contributors is in the main Go distribution,
3 | # visible at http://tip.golang.org/CONTRIBUTORS.
4 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/net/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2009 The Go Authors. All rights reserved.
2 |
3 | Redistribution and use in source and binary forms, with or without
4 | modification, are permitted provided that the following conditions are
5 | met:
6 |
7 | * Redistributions of source code must retain the above copyright
8 | notice, this list of conditions and the following disclaimer.
9 | * Redistributions in binary form must reproduce the above
10 | copyright notice, this list of conditions and the following disclaimer
11 | in the documentation and/or other materials provided with the
12 | distribution.
13 | * Neither the name of Google Inc. nor the names of its
14 | contributors may be used to endorse or promote products derived from
15 | this software without specific prior written permission.
16 |
17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/net/PATENTS:
--------------------------------------------------------------------------------
1 | Additional IP Rights Grant (Patents)
2 |
3 | "This implementation" means the copyrightable works distributed by
4 | Google as part of the Go project.
5 |
6 | Google hereby grants to You a perpetual, worldwide, non-exclusive,
7 | no-charge, royalty-free, irrevocable (except as stated in this section)
8 | patent license to make, have made, use, offer to sell, sell, import,
9 | transfer and otherwise run, modify and propagate the contents of this
10 | implementation of Go, where such license applies only to those patent
11 | claims, both currently owned or controlled by Google and acquired in
12 | the future, licensable by Google that are necessarily infringed by this
13 | implementation of Go. This grant does not include claims that would be
14 | infringed only as a consequence of further modification of this
15 | implementation. If you or your agent or exclusive licensee institute or
16 | order or agree to the institution of patent litigation against any
17 | entity (including a cross-claim or counterclaim in a lawsuit) alleging
18 | that this implementation of Go or any code incorporated within this
19 | implementation of Go constitutes direct or contributory patent
20 | infringement, or inducement of patent infringement, then any patent
21 | rights granted to you under this License for this implementation of Go
22 | shall terminate as of the date such litigation is filed.
23 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/net/html/atom/atom.go:
--------------------------------------------------------------------------------
1 | // Copyright 2012 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 atom provides integer codes (also known as atoms) for a fixed set of
6 | // frequently occurring HTML strings: tag names and attribute keys such as "p"
7 | // and "id".
8 | //
9 | // Sharing an atom's name between all elements with the same tag can result in
10 | // fewer string allocations when tokenizing and parsing HTML. Integer
11 | // comparisons are also generally faster than string comparisons.
12 | //
13 | // The value of an atom's particular code is not guaranteed to stay the same
14 | // between versions of this package. Neither is any ordering guaranteed:
15 | // whether atom.H1 < atom.H2 may also change. The codes are not guaranteed to
16 | // be dense. The only guarantees are that e.g. looking up "div" will yield
17 | // atom.Div, calling atom.Div.String will return "div", and atom.Div != 0.
18 | package atom // import "golang.org/x/net/html/atom"
19 |
20 | // Atom is an integer code for a string. The zero value maps to "".
21 | type Atom uint32
22 |
23 | // String returns the atom's name.
24 | func (a Atom) String() string {
25 | start := uint32(a >> 8)
26 | n := uint32(a & 0xff)
27 | if start+n > uint32(len(atomText)) {
28 | return ""
29 | }
30 | return atomText[start : start+n]
31 | }
32 |
33 | func (a Atom) string() string {
34 | return atomText[a>>8 : a>>8+a&0xff]
35 | }
36 |
37 | // fnv computes the FNV hash with an arbitrary starting value h.
38 | func fnv(h uint32, s []byte) uint32 {
39 | for i := range s {
40 | h ^= uint32(s[i])
41 | h *= 16777619
42 | }
43 | return h
44 | }
45 |
46 | func match(s string, t []byte) bool {
47 | for i, c := range t {
48 | if s[i] != c {
49 | return false
50 | }
51 | }
52 | return true
53 | }
54 |
55 | // Lookup returns the atom whose name is s. It returns zero if there is no
56 | // such atom. The lookup is case sensitive.
57 | func Lookup(s []byte) Atom {
58 | if len(s) == 0 || len(s) > maxAtomLen {
59 | return 0
60 | }
61 | h := fnv(hash0, s)
62 | if a := table[h&uint32(len(table)-1)]; int(a&0xff) == len(s) && match(a.string(), s) {
63 | return a
64 | }
65 | if a := table[(h>>16)&uint32(len(table)-1)]; int(a&0xff) == len(s) && match(a.string(), s) {
66 | return a
67 | }
68 | return 0
69 | }
70 |
71 | // String returns a string whose contents are equal to s. In that sense, it is
72 | // equivalent to string(s) but may be more efficient.
73 | func String(s []byte) string {
74 | if a := Lookup(s); a != 0 {
75 | return a.String()
76 | }
77 | return string(s)
78 | }
79 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/net/html/const.go:
--------------------------------------------------------------------------------
1 | // Copyright 2011 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 html
6 |
7 | // Section 12.2.4.2 of the HTML5 specification says "The following elements
8 | // have varying levels of special parsing rules".
9 | // https://html.spec.whatwg.org/multipage/syntax.html#the-stack-of-open-elements
10 | var isSpecialElementMap = map[string]bool{
11 | "address": true,
12 | "applet": true,
13 | "area": true,
14 | "article": true,
15 | "aside": true,
16 | "base": true,
17 | "basefont": true,
18 | "bgsound": true,
19 | "blockquote": true,
20 | "body": true,
21 | "br": true,
22 | "button": true,
23 | "caption": true,
24 | "center": true,
25 | "col": true,
26 | "colgroup": true,
27 | "dd": true,
28 | "details": true,
29 | "dir": true,
30 | "div": true,
31 | "dl": true,
32 | "dt": true,
33 | "embed": true,
34 | "fieldset": true,
35 | "figcaption": true,
36 | "figure": true,
37 | "footer": true,
38 | "form": true,
39 | "frame": true,
40 | "frameset": true,
41 | "h1": true,
42 | "h2": true,
43 | "h3": true,
44 | "h4": true,
45 | "h5": true,
46 | "h6": true,
47 | "head": true,
48 | "header": true,
49 | "hgroup": true,
50 | "hr": true,
51 | "html": true,
52 | "iframe": true,
53 | "img": true,
54 | "input": true,
55 | "isindex": true, // The 'isindex' element has been removed, but keep it for backwards compatibility.
56 | "keygen": true,
57 | "li": true,
58 | "link": true,
59 | "listing": true,
60 | "main": true,
61 | "marquee": true,
62 | "menu": true,
63 | "meta": true,
64 | "nav": true,
65 | "noembed": true,
66 | "noframes": true,
67 | "noscript": true,
68 | "object": true,
69 | "ol": true,
70 | "p": true,
71 | "param": true,
72 | "plaintext": true,
73 | "pre": true,
74 | "script": true,
75 | "section": true,
76 | "select": true,
77 | "source": true,
78 | "style": true,
79 | "summary": true,
80 | "table": true,
81 | "tbody": true,
82 | "td": true,
83 | "template": true,
84 | "textarea": true,
85 | "tfoot": true,
86 | "th": true,
87 | "thead": true,
88 | "title": true,
89 | "tr": true,
90 | "track": true,
91 | "ul": true,
92 | "wbr": true,
93 | "xmp": true,
94 | }
95 |
96 | func isSpecialElement(element *Node) bool {
97 | switch element.Namespace {
98 | case "", "html":
99 | return isSpecialElementMap[element.Data]
100 | case "math":
101 | switch element.Data {
102 | case "mi", "mo", "mn", "ms", "mtext", "annotation-xml":
103 | return true
104 | }
105 | case "svg":
106 | switch element.Data {
107 | case "foreignObject", "desc", "title":
108 | return true
109 | }
110 | }
111 | return false
112 | }
113 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/AUTHORS:
--------------------------------------------------------------------------------
1 | # This source code refers to The Go Authors for copyright purposes.
2 | # The master list of authors is in the main Go distribution,
3 | # visible at http://tip.golang.org/AUTHORS.
4 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/CONTRIBUTORS:
--------------------------------------------------------------------------------
1 | # This source code was written by the Go contributors.
2 | # The master list of contributors is in the main Go distribution,
3 | # visible at http://tip.golang.org/CONTRIBUTORS.
4 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2009 The Go Authors. All rights reserved.
2 |
3 | Redistribution and use in source and binary forms, with or without
4 | modification, are permitted provided that the following conditions are
5 | met:
6 |
7 | * Redistributions of source code must retain the above copyright
8 | notice, this list of conditions and the following disclaimer.
9 | * Redistributions in binary form must reproduce the above
10 | copyright notice, this list of conditions and the following disclaimer
11 | in the documentation and/or other materials provided with the
12 | distribution.
13 | * Neither the name of Google Inc. nor the names of its
14 | contributors may be used to endorse or promote products derived from
15 | this software without specific prior written permission.
16 |
17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/PATENTS:
--------------------------------------------------------------------------------
1 | Additional IP Rights Grant (Patents)
2 |
3 | "This implementation" means the copyrightable works distributed by
4 | Google as part of the Go project.
5 |
6 | Google hereby grants to You a perpetual, worldwide, non-exclusive,
7 | no-charge, royalty-free, irrevocable (except as stated in this section)
8 | patent license to make, have made, use, offer to sell, sell, import,
9 | transfer and otherwise run, modify and propagate the contents of this
10 | implementation of Go, where such license applies only to those patent
11 | claims, both currently owned or controlled by Google and acquired in
12 | the future, licensable by Google that are necessarily infringed by this
13 | implementation of Go. This grant does not include claims that would be
14 | infringed only as a consequence of further modification of this
15 | implementation. If you or your agent or exclusive licensee institute or
16 | order or agree to the institution of patent litigation against any
17 | entity (including a cross-claim or counterclaim in a lawsuit) alleging
18 | that this implementation of Go or any code incorporated within this
19 | implementation of Go constitutes direct or contributory patent
20 | infringement, or inducement of patent infringement, then any patent
21 | rights granted to you under this License for this implementation of Go
22 | shall terminate as of the date such litigation is filed.
23 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/.gitignore:
--------------------------------------------------------------------------------
1 | _obj/
2 | unix.test
3 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/aliases.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
6 | // +build go1.9
7 |
8 | package unix
9 |
10 | import "syscall"
11 |
12 | type Signal = syscall.Signal
13 | type Errno = syscall.Errno
14 | type SysProcAttr = syscall.SysProcAttr
15 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System calls for ppc64, AIX are implemented in runtime/syscall_aix.go
11 | //
12 |
13 | TEXT ·syscall6(SB),NOSPLIT,$0-88
14 | JMP syscall·syscall6(SB)
15 |
16 | TEXT ·rawSyscall6(SB),NOSPLIT,$0-88
17 | JMP syscall·rawSyscall6(SB)
18 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_darwin_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for 386, Darwin
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, Darwin
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_darwin_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 | // +build !gccgo
6 | // +build arm,darwin
7 |
8 | #include "textflag.h"
9 |
10 | //
11 | // System call support for ARM, Darwin
12 | //
13 |
14 | // Just jump to package syscall's implementation for all these functions.
15 | // The runtime may know about them.
16 |
17 | TEXT ·Syscall(SB),NOSPLIT,$0-28
18 | B syscall·Syscall(SB)
19 |
20 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
21 | B syscall·Syscall6(SB)
22 |
23 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
24 | B syscall·Syscall9(SB)
25 |
26 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
27 | B syscall·RawSyscall(SB)
28 |
29 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
30 | B syscall·RawSyscall6(SB)
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 | // +build !gccgo
6 | // +build arm64,darwin
7 |
8 | #include "textflag.h"
9 |
10 | //
11 | // System call support for AMD64, Darwin
12 | //
13 |
14 | // Just jump to package syscall's implementation for all these functions.
15 | // The runtime may know about them.
16 |
17 | TEXT ·Syscall(SB),NOSPLIT,$0-56
18 | B syscall·Syscall(SB)
19 |
20 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
21 | B syscall·Syscall6(SB)
22 |
23 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
24 | B syscall·Syscall9(SB)
25 |
26 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
27 | B syscall·RawSyscall(SB)
28 |
29 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
30 | B syscall·RawSyscall6(SB)
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, DragonFly
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_freebsd_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for 386, FreeBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, FreeBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2012 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for ARM, FreeBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | B syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | B syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | B syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | B syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | B syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for ARM64, FreeBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System calls for 386, Linux
11 | //
12 |
13 | // See ../runtime/sys_linux_386.s for the reason why we always use int 0x80
14 | // instead of the glibc-specific "CALL 0x10(GS)".
15 | #define INVOKE_SYSCALL INT $0x80
16 |
17 | // Just jump to package syscall's implementation for all these functions.
18 | // The runtime may know about them.
19 |
20 | TEXT ·Syscall(SB),NOSPLIT,$0-28
21 | JMP syscall·Syscall(SB)
22 |
23 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
24 | JMP syscall·Syscall6(SB)
25 |
26 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
27 | CALL runtime·entersyscall(SB)
28 | MOVL trap+0(FP), AX // syscall entry
29 | MOVL a1+4(FP), BX
30 | MOVL a2+8(FP), CX
31 | MOVL a3+12(FP), DX
32 | MOVL $0, SI
33 | MOVL $0, DI
34 | INVOKE_SYSCALL
35 | MOVL AX, r1+16(FP)
36 | MOVL DX, r2+20(FP)
37 | CALL runtime·exitsyscall(SB)
38 | RET
39 |
40 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
41 | JMP syscall·RawSyscall(SB)
42 |
43 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
44 | JMP syscall·RawSyscall6(SB)
45 |
46 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
47 | MOVL trap+0(FP), AX // syscall entry
48 | MOVL a1+4(FP), BX
49 | MOVL a2+8(FP), CX
50 | MOVL a3+12(FP), DX
51 | MOVL $0, SI
52 | MOVL $0, DI
53 | INVOKE_SYSCALL
54 | MOVL AX, r1+16(FP)
55 | MOVL DX, r2+20(FP)
56 | RET
57 |
58 | TEXT ·socketcall(SB),NOSPLIT,$0-36
59 | JMP syscall·socketcall(SB)
60 |
61 | TEXT ·rawsocketcall(SB),NOSPLIT,$0-36
62 | JMP syscall·rawsocketcall(SB)
63 |
64 | TEXT ·seek(SB),NOSPLIT,$0-28
65 | JMP syscall·seek(SB)
66 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System calls for AMD64, Linux
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
23 | CALL runtime·entersyscall(SB)
24 | MOVQ a1+8(FP), DI
25 | MOVQ a2+16(FP), SI
26 | MOVQ a3+24(FP), DX
27 | MOVQ $0, R10
28 | MOVQ $0, R8
29 | MOVQ $0, R9
30 | MOVQ trap+0(FP), AX // syscall entry
31 | SYSCALL
32 | MOVQ AX, r1+32(FP)
33 | MOVQ DX, r2+40(FP)
34 | CALL runtime·exitsyscall(SB)
35 | RET
36 |
37 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
38 | JMP syscall·RawSyscall(SB)
39 |
40 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
41 | JMP syscall·RawSyscall6(SB)
42 |
43 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
44 | MOVQ a1+8(FP), DI
45 | MOVQ a2+16(FP), SI
46 | MOVQ a3+24(FP), DX
47 | MOVQ $0, R10
48 | MOVQ $0, R8
49 | MOVQ $0, R9
50 | MOVQ trap+0(FP), AX // syscall entry
51 | SYSCALL
52 | MOVQ AX, r1+32(FP)
53 | MOVQ DX, r2+40(FP)
54 | RET
55 |
56 | TEXT ·gettimeofday(SB),NOSPLIT,$0-16
57 | JMP syscall·gettimeofday(SB)
58 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System calls for arm, Linux
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | B syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | B syscall·Syscall6(SB)
21 |
22 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
23 | BL runtime·entersyscall(SB)
24 | MOVW trap+0(FP), R7
25 | MOVW a1+4(FP), R0
26 | MOVW a2+8(FP), R1
27 | MOVW a3+12(FP), R2
28 | MOVW $0, R3
29 | MOVW $0, R4
30 | MOVW $0, R5
31 | SWI $0
32 | MOVW R0, r1+16(FP)
33 | MOVW $0, R0
34 | MOVW R0, r2+20(FP)
35 | BL runtime·exitsyscall(SB)
36 | RET
37 |
38 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
39 | B syscall·RawSyscall(SB)
40 |
41 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
42 | B syscall·RawSyscall6(SB)
43 |
44 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
45 | MOVW trap+0(FP), R7 // syscall entry
46 | MOVW a1+4(FP), R0
47 | MOVW a2+8(FP), R1
48 | MOVW a3+12(FP), R2
49 | SWI $0
50 | MOVW R0, r1+16(FP)
51 | MOVW $0, R0
52 | MOVW R0, r2+20(FP)
53 | RET
54 |
55 | TEXT ·seek(SB),NOSPLIT,$0-28
56 | B syscall·seek(SB)
57 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_arm64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 | // +build linux
6 | // +build arm64
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | // Just jump to package syscall's implementation for all these functions.
12 | // The runtime may know about them.
13 |
14 | TEXT ·Syscall(SB),NOSPLIT,$0-56
15 | B syscall·Syscall(SB)
16 |
17 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
18 | B syscall·Syscall6(SB)
19 |
20 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
21 | BL runtime·entersyscall(SB)
22 | MOVD a1+8(FP), R0
23 | MOVD a2+16(FP), R1
24 | MOVD a3+24(FP), R2
25 | MOVD $0, R3
26 | MOVD $0, R4
27 | MOVD $0, R5
28 | MOVD trap+0(FP), R8 // syscall entry
29 | SVC
30 | MOVD R0, r1+32(FP) // r1
31 | MOVD R1, r2+40(FP) // r2
32 | BL runtime·exitsyscall(SB)
33 | RET
34 |
35 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
36 | B syscall·RawSyscall(SB)
37 |
38 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
39 | B syscall·RawSyscall6(SB)
40 |
41 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
42 | MOVD a1+8(FP), R0
43 | MOVD a2+16(FP), R1
44 | MOVD a3+24(FP), R2
45 | MOVD $0, R3
46 | MOVD $0, R4
47 | MOVD $0, R5
48 | MOVD trap+0(FP), R8 // syscall entry
49 | SVC
50 | MOVD R0, r1+32(FP)
51 | MOVD R1, r2+40(FP)
52 | RET
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 | // +build linux
6 | // +build mips64 mips64le
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | //
12 | // System calls for mips64, Linux
13 | //
14 |
15 | // Just jump to package syscall's implementation for all these functions.
16 | // The runtime may know about them.
17 |
18 | TEXT ·Syscall(SB),NOSPLIT,$0-56
19 | JMP syscall·Syscall(SB)
20 |
21 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
22 | JMP syscall·Syscall6(SB)
23 |
24 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
25 | JAL runtime·entersyscall(SB)
26 | MOVV a1+8(FP), R4
27 | MOVV a2+16(FP), R5
28 | MOVV a3+24(FP), R6
29 | MOVV R0, R7
30 | MOVV R0, R8
31 | MOVV R0, R9
32 | MOVV trap+0(FP), R2 // syscall entry
33 | SYSCALL
34 | MOVV R2, r1+32(FP)
35 | MOVV R3, r2+40(FP)
36 | JAL runtime·exitsyscall(SB)
37 | RET
38 |
39 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
40 | JMP syscall·RawSyscall(SB)
41 |
42 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
43 | JMP syscall·RawSyscall6(SB)
44 |
45 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
46 | MOVV a1+8(FP), R4
47 | MOVV a2+16(FP), R5
48 | MOVV a3+24(FP), R6
49 | MOVV R0, R7
50 | MOVV R0, R8
51 | MOVV R0, R9
52 | MOVV trap+0(FP), R2 // syscall entry
53 | SYSCALL
54 | MOVV R2, r1+32(FP)
55 | MOVV R3, r2+40(FP)
56 | RET
57 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s:
--------------------------------------------------------------------------------
1 | // Copyright 2016 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 | // +build linux
6 | // +build mips mipsle
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | //
12 | // System calls for mips, Linux
13 | //
14 |
15 | // Just jump to package syscall's implementation for all these functions.
16 | // The runtime may know about them.
17 |
18 | TEXT ·Syscall(SB),NOSPLIT,$0-28
19 | JMP syscall·Syscall(SB)
20 |
21 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
22 | JMP syscall·Syscall6(SB)
23 |
24 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
25 | JMP syscall·Syscall9(SB)
26 |
27 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
28 | JAL runtime·entersyscall(SB)
29 | MOVW a1+4(FP), R4
30 | MOVW a2+8(FP), R5
31 | MOVW a3+12(FP), R6
32 | MOVW R0, R7
33 | MOVW trap+0(FP), R2 // syscall entry
34 | SYSCALL
35 | MOVW R2, r1+16(FP) // r1
36 | MOVW R3, r2+20(FP) // r2
37 | JAL runtime·exitsyscall(SB)
38 | RET
39 |
40 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
41 | JMP syscall·RawSyscall(SB)
42 |
43 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
44 | JMP syscall·RawSyscall6(SB)
45 |
46 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
47 | MOVW a1+4(FP), R4
48 | MOVW a2+8(FP), R5
49 | MOVW a3+12(FP), R6
50 | MOVW trap+0(FP), R2 // syscall entry
51 | SYSCALL
52 | MOVW R2, r1+16(FP)
53 | MOVW R3, r2+20(FP)
54 | RET
55 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s:
--------------------------------------------------------------------------------
1 | // Copyright 2014 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 | // +build linux
6 | // +build ppc64 ppc64le
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | //
12 | // System calls for ppc64, Linux
13 | //
14 |
15 | // Just jump to package syscall's implementation for all these functions.
16 | // The runtime may know about them.
17 |
18 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
19 | BL runtime·entersyscall(SB)
20 | MOVD a1+8(FP), R3
21 | MOVD a2+16(FP), R4
22 | MOVD a3+24(FP), R5
23 | MOVD R0, R6
24 | MOVD R0, R7
25 | MOVD R0, R8
26 | MOVD trap+0(FP), R9 // syscall entry
27 | SYSCALL R9
28 | MOVD R3, r1+32(FP)
29 | MOVD R4, r2+40(FP)
30 | BL runtime·exitsyscall(SB)
31 | RET
32 |
33 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
34 | MOVD a1+8(FP), R3
35 | MOVD a2+16(FP), R4
36 | MOVD a3+24(FP), R5
37 | MOVD R0, R6
38 | MOVD R0, R7
39 | MOVD R0, R8
40 | MOVD trap+0(FP), R9 // syscall entry
41 | SYSCALL R9
42 | MOVD R3, r1+32(FP)
43 | MOVD R4, r2+40(FP)
44 | RET
45 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_s390x.s:
--------------------------------------------------------------------------------
1 | // Copyright 2016 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 | // +build s390x
6 | // +build linux
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | //
12 | // System calls for s390x, Linux
13 | //
14 |
15 | // Just jump to package syscall's implementation for all these functions.
16 | // The runtime may know about them.
17 |
18 | TEXT ·Syscall(SB),NOSPLIT,$0-56
19 | BR syscall·Syscall(SB)
20 |
21 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
22 | BR syscall·Syscall6(SB)
23 |
24 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
25 | BL runtime·entersyscall(SB)
26 | MOVD a1+8(FP), R2
27 | MOVD a2+16(FP), R3
28 | MOVD a3+24(FP), R4
29 | MOVD $0, R5
30 | MOVD $0, R6
31 | MOVD $0, R7
32 | MOVD trap+0(FP), R1 // syscall entry
33 | SYSCALL
34 | MOVD R2, r1+32(FP)
35 | MOVD R3, r2+40(FP)
36 | BL runtime·exitsyscall(SB)
37 | RET
38 |
39 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
40 | BR syscall·RawSyscall(SB)
41 |
42 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
43 | BR syscall·RawSyscall6(SB)
44 |
45 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
46 | MOVD a1+8(FP), R2
47 | MOVD a2+16(FP), R3
48 | MOVD a3+24(FP), R4
49 | MOVD $0, R5
50 | MOVD $0, R6
51 | MOVD $0, R7
52 | MOVD trap+0(FP), R1 // syscall entry
53 | SYSCALL
54 | MOVD R2, r1+32(FP)
55 | MOVD R3, r2+40(FP)
56 | RET
57 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_netbsd_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for 386, NetBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, NetBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2013 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for ARM, NetBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | B syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | B syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | B syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | B syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | B syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2019 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for ARM64, NetBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | B syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | B syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | B syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | B syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | B syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_openbsd_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for 386, OpenBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, OpenBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for ARM, OpenBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | B syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | B syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | B syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | B syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | B syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2019 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for arm64, OpenBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2014 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 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go
11 | //
12 |
13 | TEXT ·sysvicall6(SB),NOSPLIT,$0-88
14 | JMP syscall·sysvicall6(SB)
15 |
16 | TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88
17 | JMP syscall·rawSysvicall6(SB)
18 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/bluetooth_linux.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 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 | // Bluetooth sockets and messages
6 |
7 | package unix
8 |
9 | // Bluetooth Protocols
10 | const (
11 | BTPROTO_L2CAP = 0
12 | BTPROTO_HCI = 1
13 | BTPROTO_SCO = 2
14 | BTPROTO_RFCOMM = 3
15 | BTPROTO_BNEP = 4
16 | BTPROTO_CMTP = 5
17 | BTPROTO_HIDP = 6
18 | BTPROTO_AVDTP = 7
19 | )
20 |
21 | const (
22 | HCI_CHANNEL_RAW = 0
23 | HCI_CHANNEL_USER = 1
24 | HCI_CHANNEL_MONITOR = 2
25 | HCI_CHANNEL_CONTROL = 3
26 | )
27 |
28 | // Socketoption Level
29 | const (
30 | SOL_BLUETOOTH = 0x112
31 | SOL_HCI = 0x0
32 | SOL_L2CAP = 0x6
33 | SOL_RFCOMM = 0x12
34 | SOL_SCO = 0x11
35 | )
36 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/constants.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | package unix
8 |
9 | const (
10 | R_OK = 0x4
11 | W_OK = 0x2
12 | X_OK = 0x1
13 | )
14 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_aix_ppc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build aix
6 | // +build ppc
7 |
8 | // Functions to access/create device major and minor numbers matching the
9 | // encoding used by AIX.
10 |
11 | package unix
12 |
13 | // Major returns the major component of a Linux device number.
14 | func Major(dev uint64) uint32 {
15 | return uint32((dev >> 16) & 0xffff)
16 | }
17 |
18 | // Minor returns the minor component of a Linux device number.
19 | func Minor(dev uint64) uint32 {
20 | return uint32(dev & 0xffff)
21 | }
22 |
23 | // Mkdev returns a Linux device number generated from the given major and minor
24 | // components.
25 | func Mkdev(major, minor uint32) uint64 {
26 | return uint64(((major) << 16) | (minor))
27 | }
28 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build aix
6 | // +build ppc64
7 |
8 | // Functions to access/create device major and minor numbers matching the
9 | // encoding used AIX.
10 |
11 | package unix
12 |
13 | // Major returns the major component of a Linux device number.
14 | func Major(dev uint64) uint32 {
15 | return uint32((dev & 0x3fffffff00000000) >> 32)
16 | }
17 |
18 | // Minor returns the minor component of a Linux device number.
19 | func Minor(dev uint64) uint32 {
20 | return uint32((dev & 0x00000000ffffffff) >> 0)
21 | }
22 |
23 | // Mkdev returns a Linux device number generated from the given major and minor
24 | // components.
25 | func Mkdev(major, minor uint32) uint64 {
26 | var DEVNO64 uint64
27 | DEVNO64 = 0x8000000000000000
28 | return ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64)
29 | }
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_darwin.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in Darwin's sys/types.h header.
7 |
8 | package unix
9 |
10 | // Major returns the major component of a Darwin device number.
11 | func Major(dev uint64) uint32 {
12 | return uint32((dev >> 24) & 0xff)
13 | }
14 |
15 | // Minor returns the minor component of a Darwin device number.
16 | func Minor(dev uint64) uint32 {
17 | return uint32(dev & 0xffffff)
18 | }
19 |
20 | // Mkdev returns a Darwin device number generated from the given major and minor
21 | // components.
22 | func Mkdev(major, minor uint32) uint64 {
23 | return (uint64(major) << 24) | uint64(minor)
24 | }
25 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_dragonfly.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in Dragonfly's sys/types.h header.
7 | //
8 | // The information below is extracted and adapted from sys/types.h:
9 | //
10 | // Minor gives a cookie instead of an index since in order to avoid changing the
11 | // meanings of bits 0-15 or wasting time and space shifting bits 16-31 for
12 | // devices that don't use them.
13 |
14 | package unix
15 |
16 | // Major returns the major component of a DragonFlyBSD device number.
17 | func Major(dev uint64) uint32 {
18 | return uint32((dev >> 8) & 0xff)
19 | }
20 |
21 | // Minor returns the minor component of a DragonFlyBSD device number.
22 | func Minor(dev uint64) uint32 {
23 | return uint32(dev & 0xffff00ff)
24 | }
25 |
26 | // Mkdev returns a DragonFlyBSD device number generated from the given major and
27 | // minor components.
28 | func Mkdev(major, minor uint32) uint64 {
29 | return (uint64(major) << 8) | uint64(minor)
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_freebsd.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in FreeBSD's sys/types.h header.
7 | //
8 | // The information below is extracted and adapted from sys/types.h:
9 | //
10 | // Minor gives a cookie instead of an index since in order to avoid changing the
11 | // meanings of bits 0-15 or wasting time and space shifting bits 16-31 for
12 | // devices that don't use them.
13 |
14 | package unix
15 |
16 | // Major returns the major component of a FreeBSD device number.
17 | func Major(dev uint64) uint32 {
18 | return uint32((dev >> 8) & 0xff)
19 | }
20 |
21 | // Minor returns the minor component of a FreeBSD device number.
22 | func Minor(dev uint64) uint32 {
23 | return uint32(dev & 0xffff00ff)
24 | }
25 |
26 | // Mkdev returns a FreeBSD device number generated from the given major and
27 | // minor components.
28 | func Mkdev(major, minor uint32) uint64 {
29 | return (uint64(major) << 8) | uint64(minor)
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_linux.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used by the Linux kernel and glibc.
7 | //
8 | // The information below is extracted and adapted from bits/sysmacros.h in the
9 | // glibc sources:
10 | //
11 | // dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's
12 | // default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major
13 | // number and m is a hex digit of the minor number. This is backward compatible
14 | // with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also
15 | // backward compatible with the Linux kernel, which for some architectures uses
16 | // 32-bit dev_t, encoded as mmmM MMmm.
17 |
18 | package unix
19 |
20 | // Major returns the major component of a Linux device number.
21 | func Major(dev uint64) uint32 {
22 | major := uint32((dev & 0x00000000000fff00) >> 8)
23 | major |= uint32((dev & 0xfffff00000000000) >> 32)
24 | return major
25 | }
26 |
27 | // Minor returns the minor component of a Linux device number.
28 | func Minor(dev uint64) uint32 {
29 | minor := uint32((dev & 0x00000000000000ff) >> 0)
30 | minor |= uint32((dev & 0x00000ffffff00000) >> 12)
31 | return minor
32 | }
33 |
34 | // Mkdev returns a Linux device number generated from the given major and minor
35 | // components.
36 | func Mkdev(major, minor uint32) uint64 {
37 | dev := (uint64(major) & 0x00000fff) << 8
38 | dev |= (uint64(major) & 0xfffff000) << 32
39 | dev |= (uint64(minor) & 0x000000ff) << 0
40 | dev |= (uint64(minor) & 0xffffff00) << 12
41 | return dev
42 | }
43 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_netbsd.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in NetBSD's sys/types.h header.
7 |
8 | package unix
9 |
10 | // Major returns the major component of a NetBSD device number.
11 | func Major(dev uint64) uint32 {
12 | return uint32((dev & 0x000fff00) >> 8)
13 | }
14 |
15 | // Minor returns the minor component of a NetBSD device number.
16 | func Minor(dev uint64) uint32 {
17 | minor := uint32((dev & 0x000000ff) >> 0)
18 | minor |= uint32((dev & 0xfff00000) >> 12)
19 | return minor
20 | }
21 |
22 | // Mkdev returns a NetBSD device number generated from the given major and minor
23 | // components.
24 | func Mkdev(major, minor uint32) uint64 {
25 | dev := (uint64(major) << 8) & 0x000fff00
26 | dev |= (uint64(minor) << 12) & 0xfff00000
27 | dev |= (uint64(minor) << 0) & 0x000000ff
28 | return dev
29 | }
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_openbsd.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in OpenBSD's sys/types.h header.
7 |
8 | package unix
9 |
10 | // Major returns the major component of an OpenBSD device number.
11 | func Major(dev uint64) uint32 {
12 | return uint32((dev & 0x0000ff00) >> 8)
13 | }
14 |
15 | // Minor returns the minor component of an OpenBSD device number.
16 | func Minor(dev uint64) uint32 {
17 | minor := uint32((dev & 0x000000ff) >> 0)
18 | minor |= uint32((dev & 0xffff0000) >> 8)
19 | return minor
20 | }
21 |
22 | // Mkdev returns an OpenBSD device number generated from the given major and minor
23 | // components.
24 | func Mkdev(major, minor uint32) uint64 {
25 | dev := (uint64(major) << 8) & 0x0000ff00
26 | dev |= (uint64(minor) << 8) & 0xffff0000
27 | dev |= (uint64(minor) << 0) & 0x000000ff
28 | return dev
29 | }
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dirent.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
6 |
7 | package unix
8 |
9 | import "syscall"
10 |
11 | // ParseDirent parses up to max directory entries in buf,
12 | // appending the names to names. It returns the number of
13 | // bytes consumed from buf, the number of entries added
14 | // to names, and the new names slice.
15 | func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
16 | return syscall.ParseDirent(buf, max, names)
17 | }
18 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/endian_big.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 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 | // +build ppc64 s390x mips mips64
6 |
7 | package unix
8 |
9 | const isBigEndian = true
10 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/endian_little.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 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 | // +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le
6 |
7 | package unix
8 |
9 | const isBigEndian = false
10 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/env_unix.go:
--------------------------------------------------------------------------------
1 | // Copyright 2010 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 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | // Unix environment variables.
8 |
9 | package unix
10 |
11 | import "syscall"
12 |
13 | func Getenv(key string) (value string, found bool) {
14 | return syscall.Getenv(key)
15 | }
16 |
17 | func Setenv(key, value string) error {
18 | return syscall.Setenv(key, value)
19 | }
20 |
21 | func Clearenv() {
22 | syscall.Clearenv()
23 | }
24 |
25 | func Environ() []string {
26 | return syscall.Environ()
27 | }
28 |
29 | func Unsetenv(key string) error {
30 | return syscall.Unsetenv(key)
31 | }
32 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/fcntl.go:
--------------------------------------------------------------------------------
1 | // Copyright 2014 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 | // +build dragonfly freebsd linux netbsd openbsd
6 |
7 | package unix
8 |
9 | import "unsafe"
10 |
11 | // fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux
12 | // systems by flock_linux_32bit.go to be SYS_FCNTL64.
13 | var fcntl64Syscall uintptr = SYS_FCNTL
14 |
15 | // FcntlInt performs a fcntl syscall on fd with the provided command and argument.
16 | func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
17 | valptr, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(arg))
18 | var err error
19 | if errno != 0 {
20 | err = errno
21 | }
22 | return int(valptr), err
23 | }
24 |
25 | // FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
26 | func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
27 | _, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))
28 | if errno == 0 {
29 | return nil
30 | }
31 | return errno
32 | }
33 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/fcntl_darwin.go:
--------------------------------------------------------------------------------
1 | // Copyright 2019 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 unix
6 |
7 | import "unsafe"
8 |
9 | // FcntlInt performs a fcntl syscall on fd with the provided command and argument.
10 | func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
11 | return fcntl(int(fd), cmd, arg)
12 | }
13 |
14 | // FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
15 | func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
16 | _, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk))))
17 | return err
18 | }
19 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go:
--------------------------------------------------------------------------------
1 | // +build linux,386 linux,arm linux,mips linux,mipsle
2 |
3 | // Copyright 2014 The Go Authors. All rights reserved.
4 | // Use of this source code is governed by a BSD-style
5 | // license that can be found in the LICENSE file.
6 |
7 | package unix
8 |
9 | func init() {
10 | // On 32-bit Linux systems, the fcntl syscall that matches Go's
11 | // Flock_t type is SYS_FCNTL64, not SYS_FCNTL.
12 | fcntl64Syscall = SYS_FCNTL64
13 | }
14 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/gccgo.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 | // +build gccgo
6 | // +build !aix
7 |
8 | package unix
9 |
10 | import "syscall"
11 |
12 | // We can't use the gc-syntax .s files for gccgo. On the plus side
13 | // much of the functionality can be written directly in Go.
14 |
15 | //extern gccgoRealSyscallNoError
16 | func realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)
17 |
18 | //extern gccgoRealSyscall
19 | func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)
20 |
21 | func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
22 | syscall.Entersyscall()
23 | r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
24 | syscall.Exitsyscall()
25 | return r, 0
26 | }
27 |
28 | func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
29 | syscall.Entersyscall()
30 | r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
31 | syscall.Exitsyscall()
32 | return r, 0, syscall.Errno(errno)
33 | }
34 |
35 | func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
36 | syscall.Entersyscall()
37 | r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
38 | syscall.Exitsyscall()
39 | return r, 0, syscall.Errno(errno)
40 | }
41 |
42 | func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) {
43 | syscall.Entersyscall()
44 | r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9)
45 | syscall.Exitsyscall()
46 | return r, 0, syscall.Errno(errno)
47 | }
48 |
49 | func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
50 | r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
51 | return r, 0
52 | }
53 |
54 | func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
55 | r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
56 | return r, 0, syscall.Errno(errno)
57 | }
58 |
59 | func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
60 | r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
61 | return r, 0, syscall.Errno(errno)
62 | }
63 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/gccgo_c.c:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 | // +build gccgo
6 | // +build !aix
7 |
8 | #include
9 | #include
10 | #include
11 |
12 | #define _STRINGIFY2_(x) #x
13 | #define _STRINGIFY_(x) _STRINGIFY2_(x)
14 | #define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__)
15 |
16 | // Call syscall from C code because the gccgo support for calling from
17 | // Go to C does not support varargs functions.
18 |
19 | struct ret {
20 | uintptr_t r;
21 | uintptr_t err;
22 | };
23 |
24 | struct ret
25 | gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
26 | {
27 | struct ret r;
28 |
29 | errno = 0;
30 | r.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);
31 | r.err = errno;
32 | return r;
33 | }
34 |
35 | uintptr_t
36 | gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
37 | {
38 | return syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);
39 | }
40 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 | // +build gccgo,linux,amd64
6 |
7 | package unix
8 |
9 | import "syscall"
10 |
11 | //extern gettimeofday
12 | func realGettimeofday(*Timeval, *byte) int32
13 |
14 | func gettimeofday(tv *Timeval) (err syscall.Errno) {
15 | r := realGettimeofday(tv, nil)
16 | if r < 0 {
17 | return syscall.GetErrno()
18 | }
19 | return 0
20 | }
21 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/ioctl.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | package unix
8 |
9 | import "runtime"
10 |
11 | // IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.
12 | //
13 | // To change fd's window size, the req argument should be TIOCSWINSZ.
14 | func IoctlSetWinsize(fd int, req uint, value *Winsize) error {
15 | // TODO: if we get the chance, remove the req parameter and
16 | // hardcode TIOCSWINSZ.
17 | err := ioctlSetWinsize(fd, req, value)
18 | runtime.KeepAlive(value)
19 | return err
20 | }
21 |
22 | // IoctlSetTermios performs an ioctl on fd with a *Termios.
23 | //
24 | // The req value will usually be TCSETA or TIOCSETA.
25 | func IoctlSetTermios(fd int, req uint, value *Termios) error {
26 | // TODO: if we get the chance, remove the req parameter.
27 | err := ioctlSetTermios(fd, req, value)
28 | runtime.KeepAlive(value)
29 | return err
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/mkasm_darwin.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build ignore
6 |
7 | // mkasm_darwin.go generates assembly trampolines to call libSystem routines from Go.
8 | //This program must be run after mksyscall.go.
9 | package main
10 |
11 | import (
12 | "bytes"
13 | "fmt"
14 | "io/ioutil"
15 | "log"
16 | "os"
17 | "strings"
18 | )
19 |
20 | func main() {
21 | in1, err := ioutil.ReadFile("syscall_darwin.go")
22 | if err != nil {
23 | log.Fatalf("can't open syscall_darwin.go: %s", err)
24 | }
25 | arch := os.Args[1]
26 | in2, err := ioutil.ReadFile(fmt.Sprintf("syscall_darwin_%s.go", arch))
27 | if err != nil {
28 | log.Fatalf("can't open syscall_darwin_%s.go: %s", arch, err)
29 | }
30 | in3, err := ioutil.ReadFile(fmt.Sprintf("zsyscall_darwin_%s.go", arch))
31 | if err != nil {
32 | log.Fatalf("can't open zsyscall_darwin_%s.go: %s", arch, err)
33 | }
34 | in := string(in1) + string(in2) + string(in3)
35 |
36 | trampolines := map[string]bool{}
37 |
38 | var out bytes.Buffer
39 |
40 | fmt.Fprintf(&out, "// go run mkasm_darwin.go %s\n", strings.Join(os.Args[1:], " "))
41 | fmt.Fprintf(&out, "// Code generated by the command above; DO NOT EDIT.\n")
42 | fmt.Fprintf(&out, "\n")
43 | fmt.Fprintf(&out, "// +build go1.12\n")
44 | fmt.Fprintf(&out, "\n")
45 | fmt.Fprintf(&out, "#include \"textflag.h\"\n")
46 | for _, line := range strings.Split(in, "\n") {
47 | if !strings.HasPrefix(line, "func ") || !strings.HasSuffix(line, "_trampoline()") {
48 | continue
49 | }
50 | fn := line[5 : len(line)-13]
51 | if !trampolines[fn] {
52 | trampolines[fn] = true
53 | fmt.Fprintf(&out, "TEXT ·%s_trampoline(SB),NOSPLIT,$0-0\n", fn)
54 | fmt.Fprintf(&out, "\tJMP\t%s(SB)\n", fn)
55 | }
56 | }
57 | err = ioutil.WriteFile(fmt.Sprintf("zsyscall_darwin_%s.s", arch), out.Bytes(), 0644)
58 | if err != nil {
59 | log.Fatalf("can't write zsyscall_darwin_%s.s: %s", arch, err)
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/pagesize_unix.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | // For Unix, get the pagesize from the runtime.
8 |
9 | package unix
10 |
11 | import "syscall"
12 |
13 | func Getpagesize() int {
14 | return syscall.Getpagesize()
15 | }
16 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/race.go:
--------------------------------------------------------------------------------
1 | // Copyright 2012 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 | // +build darwin,race linux,race freebsd,race
6 |
7 | package unix
8 |
9 | import (
10 | "runtime"
11 | "unsafe"
12 | )
13 |
14 | const raceenabled = true
15 |
16 | func raceAcquire(addr unsafe.Pointer) {
17 | runtime.RaceAcquire(addr)
18 | }
19 |
20 | func raceReleaseMerge(addr unsafe.Pointer) {
21 | runtime.RaceReleaseMerge(addr)
22 | }
23 |
24 | func raceReadRange(addr unsafe.Pointer, len int) {
25 | runtime.RaceReadRange(addr, len)
26 | }
27 |
28 | func raceWriteRange(addr unsafe.Pointer, len int) {
29 | runtime.RaceWriteRange(addr, len)
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/race0.go:
--------------------------------------------------------------------------------
1 | // Copyright 2012 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 | // +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly
6 |
7 | package unix
8 |
9 | import (
10 | "unsafe"
11 | )
12 |
13 | const raceenabled = false
14 |
15 | func raceAcquire(addr unsafe.Pointer) {
16 | }
17 |
18 | func raceReleaseMerge(addr unsafe.Pointer) {
19 | }
20 |
21 | func raceReadRange(addr unsafe.Pointer, len int) {
22 | }
23 |
24 | func raceWriteRange(addr unsafe.Pointer, len int) {
25 | }
26 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/sockcmsg_linux.go:
--------------------------------------------------------------------------------
1 | // Copyright 2011 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 | // Socket control messages
6 |
7 | package unix
8 |
9 | import "unsafe"
10 |
11 | // UnixCredentials encodes credentials into a socket control message
12 | // for sending to another process. This can be used for
13 | // authentication.
14 | func UnixCredentials(ucred *Ucred) []byte {
15 | b := make([]byte, CmsgSpace(SizeofUcred))
16 | h := (*Cmsghdr)(unsafe.Pointer(&b[0]))
17 | h.Level = SOL_SOCKET
18 | h.Type = SCM_CREDENTIALS
19 | h.SetLen(CmsgLen(SizeofUcred))
20 | *((*Ucred)(cmsgData(h))) = *ucred
21 | return b
22 | }
23 |
24 | // ParseUnixCredentials decodes a socket control message that contains
25 | // credentials in a Ucred structure. To receive such a message, the
26 | // SO_PASSCRED option must be enabled on the socket.
27 | func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) {
28 | if m.Header.Level != SOL_SOCKET {
29 | return nil, EINVAL
30 | }
31 | if m.Header.Type != SCM_CREDENTIALS {
32 | return nil, EINVAL
33 | }
34 | ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0]))
35 | return &ucred, nil
36 | }
37 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/str.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | package unix
8 |
9 | func itoa(val int) string { // do it here rather than with fmt to avoid dependency
10 | if val < 0 {
11 | return "-" + uitoa(uint(-val))
12 | }
13 | return uitoa(uint(val))
14 | }
15 |
16 | func uitoa(val uint) string {
17 | var buf [32]byte // big enough for int64
18 | i := len(buf) - 1
19 | for val >= 10 {
20 | buf[i] = byte(val%10 + '0')
21 | i--
22 | val /= 10
23 | }
24 | buf[i] = byte(val + '0')
25 | return string(buf[i:])
26 | }
27 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | // Package unix contains an interface to the low-level operating system
8 | // primitives. OS details vary depending on the underlying system, and
9 | // by default, godoc will display OS-specific documentation for the current
10 | // system. If you want godoc to display OS documentation for another
11 | // system, set $GOOS and $GOARCH to the desired system. For example, if
12 | // you want to view documentation for freebsd/arm on linux/amd64, set $GOOS
13 | // to freebsd and $GOARCH to arm.
14 | //
15 | // The primary use of this package is inside other packages that provide a more
16 | // portable interface to the system, such as "os", "time" and "net". Use
17 | // those packages rather than this one if you can.
18 | //
19 | // For details of the functions and data types in this package consult
20 | // the manuals for the appropriate operating system.
21 | //
22 | // These calls return err == nil to indicate success; otherwise
23 | // err represents an operating system error describing the failure and
24 | // holds a value of type syscall.Errno.
25 | package unix // import "golang.org/x/sys/unix"
26 |
27 | import "strings"
28 |
29 | // ByteSliceFromString returns a NUL-terminated slice of bytes
30 | // containing the text of s. If s contains a NUL byte at any
31 | // location, it returns (nil, EINVAL).
32 | func ByteSliceFromString(s string) ([]byte, error) {
33 | if strings.IndexByte(s, 0) != -1 {
34 | return nil, EINVAL
35 | }
36 | a := make([]byte, len(s)+1)
37 | copy(a, s)
38 | return a, nil
39 | }
40 |
41 | // BytePtrFromString returns a pointer to a NUL-terminated array of
42 | // bytes containing the text of s. If s contains a NUL byte at any
43 | // location, it returns (nil, EINVAL).
44 | func BytePtrFromString(s string) (*byte, error) {
45 | a, err := ByteSliceFromString(s)
46 | if err != nil {
47 | return nil, err
48 | }
49 | return &a[0], nil
50 | }
51 |
52 | // Single-word zero for use when we need a valid pointer to 0 bytes.
53 | var _zero uintptr
54 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build aix
6 | // +build ppc
7 |
8 | package unix
9 |
10 | //sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64
11 | //sysnb Setrlimit(resource int, rlim *Rlimit) (err error) = setrlimit64
12 | //sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek64
13 |
14 | //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
15 |
16 | func setTimespec(sec, nsec int64) Timespec {
17 | return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
18 | }
19 |
20 | func setTimeval(sec, usec int64) Timeval {
21 | return Timeval{Sec: int32(sec), Usec: int32(usec)}
22 | }
23 |
24 | func (iov *Iovec) SetLen(length int) {
25 | iov.Len = uint32(length)
26 | }
27 |
28 | func (msghdr *Msghdr) SetControllen(length int) {
29 | msghdr.Controllen = uint32(length)
30 | }
31 |
32 | func (cmsg *Cmsghdr) SetLen(length int) {
33 | cmsg.Len = uint32(length)
34 | }
35 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build aix
6 | // +build ppc64
7 |
8 | package unix
9 |
10 | //sysnb Getrlimit(resource int, rlim *Rlimit) (err error)
11 | //sysnb Setrlimit(resource int, rlim *Rlimit) (err error)
12 | //sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek
13 |
14 | //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64
15 |
16 | func setTimespec(sec, nsec int64) Timespec {
17 | return Timespec{Sec: sec, Nsec: nsec}
18 | }
19 |
20 | func setTimeval(sec, usec int64) Timeval {
21 | return Timeval{Sec: int64(sec), Usec: int32(usec)}
22 | }
23 |
24 | func (iov *Iovec) SetLen(length int) {
25 | iov.Len = uint64(length)
26 | }
27 |
28 | func (msghdr *Msghdr) SetControllen(length int) {
29 | msghdr.Controllen = uint32(length)
30 | }
31 |
32 | func (cmsg *Cmsghdr) SetLen(length int) {
33 | cmsg.Len = uint32(length)
34 | }
35 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_darwin_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build 386,darwin
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | )
12 |
13 | func setTimespec(sec, nsec int64) Timespec {
14 | return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
15 | }
16 |
17 | func setTimeval(sec, usec int64) Timeval {
18 | return Timeval{Sec: int32(sec), Usec: int32(usec)}
19 | }
20 |
21 | //sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
22 | func Gettimeofday(tv *Timeval) (err error) {
23 | // The tv passed to gettimeofday must be non-nil
24 | // but is otherwise unused. The answers come back
25 | // in the two registers.
26 | sec, usec, err := gettimeofday(tv)
27 | tv.Sec = int32(sec)
28 | tv.Usec = int32(usec)
29 | return err
30 | }
31 |
32 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
33 | k.Ident = uint32(fd)
34 | k.Filter = int16(mode)
35 | k.Flags = uint16(flags)
36 | }
37 |
38 | func (iov *Iovec) SetLen(length int) {
39 | iov.Len = uint32(length)
40 | }
41 |
42 | func (msghdr *Msghdr) SetControllen(length int) {
43 | msghdr.Controllen = uint32(length)
44 | }
45 |
46 | func (cmsg *Cmsghdr) SetLen(length int) {
47 | cmsg.Len = uint32(length)
48 | }
49 |
50 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
51 |
52 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
53 | // of darwin/386 the syscall is called sysctl instead of __sysctl.
54 | const SYS___SYSCTL = SYS_SYSCTL
55 |
56 | //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
57 | //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
58 | //sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
59 | //sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64
60 | //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64
61 | //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
62 | //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
63 | //sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
64 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build amd64,darwin
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | )
12 |
13 | func setTimespec(sec, nsec int64) Timespec {
14 | return Timespec{Sec: sec, Nsec: nsec}
15 | }
16 |
17 | func setTimeval(sec, usec int64) Timeval {
18 | return Timeval{Sec: sec, Usec: int32(usec)}
19 | }
20 |
21 | //sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
22 | func Gettimeofday(tv *Timeval) (err error) {
23 | // The tv passed to gettimeofday must be non-nil
24 | // but is otherwise unused. The answers come back
25 | // in the two registers.
26 | sec, usec, err := gettimeofday(tv)
27 | tv.Sec = sec
28 | tv.Usec = usec
29 | return err
30 | }
31 |
32 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
33 | k.Ident = uint64(fd)
34 | k.Filter = int16(mode)
35 | k.Flags = uint16(flags)
36 | }
37 |
38 | func (iov *Iovec) SetLen(length int) {
39 | iov.Len = uint64(length)
40 | }
41 |
42 | func (msghdr *Msghdr) SetControllen(length int) {
43 | msghdr.Controllen = uint32(length)
44 | }
45 |
46 | func (cmsg *Cmsghdr) SetLen(length int) {
47 | cmsg.Len = uint32(length)
48 | }
49 |
50 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
51 |
52 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
53 | // of darwin/amd64 the syscall is called sysctl instead of __sysctl.
54 | const SYS___SYSCTL = SYS_SYSCTL
55 |
56 | //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
57 | //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
58 | //sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
59 | //sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64
60 | //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64
61 | //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
62 | //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
63 | //sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
64 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 unix
6 |
7 | import (
8 | "syscall"
9 | )
10 |
11 | func setTimespec(sec, nsec int64) Timespec {
12 | return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
13 | }
14 |
15 | func setTimeval(sec, usec int64) Timeval {
16 | return Timeval{Sec: int32(sec), Usec: int32(usec)}
17 | }
18 |
19 | //sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
20 | func Gettimeofday(tv *Timeval) (err error) {
21 | // The tv passed to gettimeofday must be non-nil
22 | // but is otherwise unused. The answers come back
23 | // in the two registers.
24 | sec, usec, err := gettimeofday(tv)
25 | tv.Sec = int32(sec)
26 | tv.Usec = int32(usec)
27 | return err
28 | }
29 |
30 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
31 | k.Ident = uint32(fd)
32 | k.Filter = int16(mode)
33 | k.Flags = uint16(flags)
34 | }
35 |
36 | func (iov *Iovec) SetLen(length int) {
37 | iov.Len = uint32(length)
38 | }
39 |
40 | func (msghdr *Msghdr) SetControllen(length int) {
41 | msghdr.Controllen = uint32(length)
42 | }
43 |
44 | func (cmsg *Cmsghdr) SetLen(length int) {
45 | cmsg.Len = uint32(length)
46 | }
47 |
48 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
49 |
50 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
51 | // of darwin/arm the syscall is called sysctl instead of __sysctl.
52 | const SYS___SYSCTL = SYS_SYSCTL
53 |
54 | //sys Fstat(fd int, stat *Stat_t) (err error)
55 | //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
56 | //sys Fstatfs(fd int, stat *Statfs_t) (err error)
57 | //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT
58 | //sys Lstat(path string, stat *Stat_t) (err error)
59 | //sys Stat(path string, stat *Stat_t) (err error)
60 | //sys Statfs(path string, stat *Statfs_t) (err error)
61 |
62 | func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
63 | return 0, ENOSYS
64 | }
65 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 | // +build arm64,darwin
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | )
12 |
13 | func setTimespec(sec, nsec int64) Timespec {
14 | return Timespec{Sec: sec, Nsec: nsec}
15 | }
16 |
17 | func setTimeval(sec, usec int64) Timeval {
18 | return Timeval{Sec: sec, Usec: int32(usec)}
19 | }
20 |
21 | //sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
22 | func Gettimeofday(tv *Timeval) (err error) {
23 | // The tv passed to gettimeofday must be non-nil
24 | // but is otherwise unused. The answers come back
25 | // in the two registers.
26 | sec, usec, err := gettimeofday(tv)
27 | tv.Sec = sec
28 | tv.Usec = usec
29 | return err
30 | }
31 |
32 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
33 | k.Ident = uint64(fd)
34 | k.Filter = int16(mode)
35 | k.Flags = uint16(flags)
36 | }
37 |
38 | func (iov *Iovec) SetLen(length int) {
39 | iov.Len = uint64(length)
40 | }
41 |
42 | func (msghdr *Msghdr) SetControllen(length int) {
43 | msghdr.Controllen = uint32(length)
44 | }
45 |
46 | func (cmsg *Cmsghdr) SetLen(length int) {
47 | cmsg.Len = uint32(length)
48 | }
49 |
50 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
51 |
52 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
53 | // of darwin/arm64 the syscall is called sysctl instead of __sysctl.
54 | const SYS___SYSCTL = SYS_SYSCTL
55 |
56 | //sys Fstat(fd int, stat *Stat_t) (err error)
57 | //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
58 | //sys Fstatfs(fd int, stat *Statfs_t) (err error)
59 | //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT
60 | //sys Lstat(path string, stat *Stat_t) (err error)
61 | //sys Stat(path string, stat *Stat_t) (err error)
62 | //sys Statfs(path string, stat *Statfs_t) (err error)
63 |
64 | func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
65 | return 0, ENOSYS
66 | }
67 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build darwin,go1.12
6 |
7 | package unix
8 |
9 | import "unsafe"
10 |
11 | // Implemented in the runtime package (runtime/sys_darwin.go)
12 | func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)
13 | func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
14 | func syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
15 | func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only
16 | func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)
17 | func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
18 |
19 | //go:linkname syscall_syscall syscall.syscall
20 | //go:linkname syscall_syscall6 syscall.syscall6
21 | //go:linkname syscall_syscall6X syscall.syscall6X
22 | //go:linkname syscall_syscall9 syscall.syscall9
23 | //go:linkname syscall_rawSyscall syscall.rawSyscall
24 | //go:linkname syscall_rawSyscall6 syscall.rawSyscall6
25 |
26 | // Find the entry point for f. See comments in runtime/proc.go for the
27 | // function of the same name.
28 | //go:nosplit
29 | func funcPC(f func()) uintptr {
30 | return **(**uintptr)(unsafe.Pointer(&f))
31 | }
32 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build amd64,dragonfly
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: sec, Nsec: nsec}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: sec, Usec: usec}
20 | }
21 |
22 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
23 | k.Ident = uint64(fd)
24 | k.Filter = int16(mode)
25 | k.Flags = uint16(flags)
26 | }
27 |
28 | func (iov *Iovec) SetLen(length int) {
29 | iov.Len = uint64(length)
30 | }
31 |
32 | func (msghdr *Msghdr) SetControllen(length int) {
33 | msghdr.Controllen = uint32(length)
34 | }
35 |
36 | func (cmsg *Cmsghdr) SetLen(length int) {
37 | cmsg.Len = uint32(length)
38 | }
39 |
40 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
41 | var writtenOut uint64 = 0
42 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)
43 |
44 | written = int(writtenOut)
45 |
46 | if e1 != 0 {
47 | err = e1
48 | }
49 | return
50 | }
51 |
52 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build 386,freebsd
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: int32(sec), Usec: int32(usec)}
20 | }
21 |
22 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
23 | k.Ident = uint32(fd)
24 | k.Filter = int16(mode)
25 | k.Flags = uint16(flags)
26 | }
27 |
28 | func (iov *Iovec) SetLen(length int) {
29 | iov.Len = uint32(length)
30 | }
31 |
32 | func (msghdr *Msghdr) SetControllen(length int) {
33 | msghdr.Controllen = uint32(length)
34 | }
35 |
36 | func (cmsg *Cmsghdr) SetLen(length int) {
37 | cmsg.Len = uint32(length)
38 | }
39 |
40 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
41 | var writtenOut uint64 = 0
42 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)
43 |
44 | written = int(writtenOut)
45 |
46 | if e1 != 0 {
47 | err = e1
48 | }
49 | return
50 | }
51 |
52 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build amd64,freebsd
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: sec, Nsec: nsec}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: sec, Usec: usec}
20 | }
21 |
22 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
23 | k.Ident = uint64(fd)
24 | k.Filter = int16(mode)
25 | k.Flags = uint16(flags)
26 | }
27 |
28 | func (iov *Iovec) SetLen(length int) {
29 | iov.Len = uint64(length)
30 | }
31 |
32 | func (msghdr *Msghdr) SetControllen(length int) {
33 | msghdr.Controllen = uint32(length)
34 | }
35 |
36 | func (cmsg *Cmsghdr) SetLen(length int) {
37 | cmsg.Len = uint32(length)
38 | }
39 |
40 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
41 | var writtenOut uint64 = 0
42 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)
43 |
44 | written = int(writtenOut)
45 |
46 | if e1 != 0 {
47 | err = e1
48 | }
49 | return
50 | }
51 |
52 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2012 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 | // +build arm,freebsd
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: sec, Nsec: int32(nsec)}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: sec, Usec: int32(usec)}
20 | }
21 |
22 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
23 | k.Ident = uint32(fd)
24 | k.Filter = int16(mode)
25 | k.Flags = uint16(flags)
26 | }
27 |
28 | func (iov *Iovec) SetLen(length int) {
29 | iov.Len = uint32(length)
30 | }
31 |
32 | func (msghdr *Msghdr) SetControllen(length int) {
33 | msghdr.Controllen = uint32(length)
34 | }
35 |
36 | func (cmsg *Cmsghdr) SetLen(length int) {
37 | cmsg.Len = uint32(length)
38 | }
39 |
40 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
41 | var writtenOut uint64 = 0
42 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)
43 |
44 | written = int(writtenOut)
45 |
46 | if e1 != 0 {
47 | err = e1
48 | }
49 | return
50 | }
51 |
52 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build arm64,freebsd
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: sec, Nsec: nsec}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: sec, Usec: usec}
20 | }
21 |
22 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
23 | k.Ident = uint64(fd)
24 | k.Filter = int16(mode)
25 | k.Flags = uint16(flags)
26 | }
27 |
28 | func (iov *Iovec) SetLen(length int) {
29 | iov.Len = uint64(length)
30 | }
31 |
32 | func (msghdr *Msghdr) SetControllen(length int) {
33 | msghdr.Controllen = uint32(length)
34 | }
35 |
36 | func (cmsg *Cmsghdr) SetLen(length int) {
37 | cmsg.Len = uint32(length)
38 | }
39 |
40 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
41 | var writtenOut uint64 = 0
42 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)
43 |
44 | written = int(writtenOut)
45 |
46 | if e1 != 0 {
47 | err = e1
48 | }
49 | return
50 | }
51 |
52 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 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 | // +build amd64,linux
6 | // +build !gccgo
7 |
8 | package unix
9 |
10 | import "syscall"
11 |
12 | //go:noescape
13 | func gettimeofday(tv *Timeval) (err syscall.Errno)
14 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_linux_gc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build linux,!gccgo
6 |
7 | package unix
8 |
9 | // SyscallNoError may be used instead of Syscall for syscalls that don't fail.
10 | func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)
11 |
12 | // RawSyscallNoError may be used instead of RawSyscall for syscalls that don't
13 | // fail.
14 | func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)
15 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build linux,!gccgo,386
6 |
7 | package unix
8 |
9 | import "syscall"
10 |
11 | // Underlying system call writes to newoffset via pointer.
12 | // Implemented in assembly to avoid allocation.
13 | func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)
14 |
15 | func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
16 | func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
17 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build linux,gccgo,386
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func seek(fd int, offset int64, whence int) (int64, syscall.Errno) {
15 | var newoffset int64
16 | offsetLow := uint32(offset & 0xffffffff)
17 | offsetHigh := uint32((offset >> 32) & 0xffffffff)
18 | _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)
19 | return newoffset, err
20 | }
21 |
22 | func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {
23 | fd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)
24 | return int(fd), err
25 | }
26 |
27 | func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {
28 | fd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)
29 | return int(fd), err
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build linux,gccgo,arm
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func seek(fd int, offset int64, whence int) (int64, syscall.Errno) {
15 | var newoffset int64
16 | offsetLow := uint32(offset & 0xffffffff)
17 | offsetHigh := uint32((offset >> 32) & 0xffffffff)
18 | _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)
19 | return newoffset, err
20 | }
21 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build 386,netbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: int32(nsec)}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint32(fd)
19 | k.Filter = uint32(mode)
20 | k.Flags = uint32(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint32(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build amd64,netbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: nsec}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint64(fd)
19 | k.Filter = uint32(mode)
20 | k.Flags = uint32(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint64(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 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 | // +build arm,netbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: int32(nsec)}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint32(fd)
19 | k.Filter = uint32(mode)
20 | k.Flags = uint32(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint32(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2019 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 | // +build arm64,netbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: nsec}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint64(fd)
19 | k.Filter = uint32(mode)
20 | k.Flags = uint32(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint64(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build 386,openbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: int32(nsec)}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint32(fd)
19 | k.Filter = int16(mode)
20 | k.Flags = uint16(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint32(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
35 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
36 | // of openbsd/386 the syscall is called sysctl instead of __sysctl.
37 | const SYS___SYSCTL = SYS_SYSCTL
38 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build amd64,openbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: nsec}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: usec}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint64(fd)
19 | k.Filter = int16(mode)
20 | k.Flags = uint16(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint64(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
35 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
36 | // of openbsd/amd64 the syscall is called sysctl instead of __sysctl.
37 | const SYS___SYSCTL = SYS_SYSCTL
38 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // +build arm,openbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: int32(nsec)}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint32(fd)
19 | k.Filter = int16(mode)
20 | k.Flags = uint16(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint32(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
35 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
36 | // of openbsd/arm the syscall is called sysctl instead of __sysctl.
37 | const SYS___SYSCTL = SYS_SYSCTL
38 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2019 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 | // +build arm64,openbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: nsec}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: usec}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint64(fd)
19 | k.Filter = int16(mode)
20 | k.Flags = uint16(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint64(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
35 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
36 | // of openbsd/amd64 the syscall is called sysctl instead of __sysctl.
37 | const SYS___SYSCTL = SYS_SYSCTL
38 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 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 | // +build amd64,solaris
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: nsec}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: usec}
15 | }
16 |
17 | func (iov *Iovec) SetLen(length int) {
18 | iov.Len = uint64(length)
19 | }
20 |
21 | func (cmsg *Cmsghdr) SetLen(length int) {
22 | cmsg.Len = uint32(length)
23 | }
24 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_unix_gc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 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 | // +build darwin dragonfly freebsd linux netbsd openbsd solaris
6 | // +build !gccgo,!ppc64le,!ppc64
7 |
8 | package unix
9 |
10 | import "syscall"
11 |
12 | func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
13 | func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
14 | func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
15 | func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
16 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 | // +build linux
6 | // +build ppc64le ppc64
7 | // +build !gccgo
8 |
9 | package unix
10 |
11 | import "syscall"
12 |
13 | func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
14 | return syscall.Syscall(trap, a1, a2, a3)
15 | }
16 | func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
17 | return syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6)
18 | }
19 | func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
20 | return syscall.RawSyscall(trap, a1, a2, a3)
21 | }
22 | func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
23 | return syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6)
24 | }
25 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/timestruct.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 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 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | package unix
8 |
9 | import "time"
10 |
11 | // TimespecToNsec converts a Timespec value into a number of
12 | // nanoseconds since the Unix epoch.
13 | func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
14 |
15 | // NsecToTimespec takes a number of nanoseconds since the Unix epoch
16 | // and returns the corresponding Timespec value.
17 | func NsecToTimespec(nsec int64) Timespec {
18 | sec := nsec / 1e9
19 | nsec = nsec % 1e9
20 | if nsec < 0 {
21 | nsec += 1e9
22 | sec--
23 | }
24 | return setTimespec(sec, nsec)
25 | }
26 |
27 | // TimeToTimespec converts t into a Timespec.
28 | // On some 32-bit systems the range of valid Timespec values are smaller
29 | // than that of time.Time values. So if t is out of the valid range of
30 | // Timespec, it returns a zero Timespec and ERANGE.
31 | func TimeToTimespec(t time.Time) (Timespec, error) {
32 | sec := t.Unix()
33 | nsec := int64(t.Nanosecond())
34 | ts := setTimespec(sec, nsec)
35 |
36 | // Currently all targets have either int32 or int64 for Timespec.Sec.
37 | // If there were a new target with floating point type for it, we have
38 | // to consider the rounding error.
39 | if int64(ts.Sec) != sec {
40 | return Timespec{}, ERANGE
41 | }
42 | return ts, nil
43 | }
44 |
45 | // TimevalToNsec converts a Timeval value into a number of nanoseconds
46 | // since the Unix epoch.
47 | func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
48 |
49 | // NsecToTimeval takes a number of nanoseconds since the Unix epoch
50 | // and returns the corresponding Timeval value.
51 | func NsecToTimeval(nsec int64) Timeval {
52 | nsec += 999 // round up to microsecond
53 | usec := nsec % 1e9 / 1e3
54 | sec := nsec / 1e9
55 | if usec < 0 {
56 | usec += 1e6
57 | sec--
58 | }
59 | return setTimeval(sec, usec)
60 | }
61 |
62 | // Unix returns ts as the number of seconds and nanoseconds elapsed since the
63 | // Unix epoch.
64 | func (ts *Timespec) Unix() (sec int64, nsec int64) {
65 | return int64(ts.Sec), int64(ts.Nsec)
66 | }
67 |
68 | // Unix returns tv as the number of seconds and nanoseconds elapsed since the
69 | // Unix epoch.
70 | func (tv *Timeval) Unix() (sec int64, nsec int64) {
71 | return int64(tv.Sec), int64(tv.Usec) * 1000
72 | }
73 |
74 | // Nano returns ts as the number of nanoseconds elapsed since the Unix epoch.
75 | func (ts *Timespec) Nano() int64 {
76 | return int64(ts.Sec)*1e9 + int64(ts.Nsec)
77 | }
78 |
79 | // Nano returns tv as the number of nanoseconds elapsed since the Unix epoch.
80 | func (tv *Timeval) Nano() int64 {
81 | return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000
82 | }
83 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/unveil_openbsd.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 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 unix
6 |
7 | import (
8 | "syscall"
9 | "unsafe"
10 | )
11 |
12 | // Unveil implements the unveil syscall.
13 | // For more information see unveil(2).
14 | // Note that the special case of blocking further
15 | // unveil calls is handled by UnveilBlock.
16 | func Unveil(path string, flags string) error {
17 | pathPtr, err := syscall.BytePtrFromString(path)
18 | if err != nil {
19 | return err
20 | }
21 | flagsPtr, err := syscall.BytePtrFromString(flags)
22 | if err != nil {
23 | return err
24 | }
25 | _, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(unsafe.Pointer(pathPtr)), uintptr(unsafe.Pointer(flagsPtr)), 0)
26 | if e != 0 {
27 | return e
28 | }
29 | return nil
30 | }
31 |
32 | // UnveilBlock blocks future unveil calls.
33 | // For more information see unveil(2).
34 | func UnveilBlock() error {
35 | // Both pointers must be nil.
36 | var pathUnsafe, flagsUnsafe unsafe.Pointer
37 | _, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(pathUnsafe), uintptr(flagsUnsafe), 0)
38 | if e != 0 {
39 | return e
40 | }
41 | return nil
42 | }
43 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/zptrace386_linux.go:
--------------------------------------------------------------------------------
1 | // Code generated by linux/mkall.go generatePtracePair(386, amd64). DO NOT EDIT.
2 |
3 | // +build linux
4 | // +build 386 amd64
5 |
6 | package unix
7 |
8 | import "unsafe"
9 |
10 | // PtraceRegs386 is the registers used by 386 binaries.
11 | type PtraceRegs386 struct {
12 | Ebx int32
13 | Ecx int32
14 | Edx int32
15 | Esi int32
16 | Edi int32
17 | Ebp int32
18 | Eax int32
19 | Xds int32
20 | Xes int32
21 | Xfs int32
22 | Xgs int32
23 | Orig_eax int32
24 | Eip int32
25 | Xcs int32
26 | Eflags int32
27 | Esp int32
28 | Xss int32
29 | }
30 |
31 | // PtraceGetRegs386 fetches the registers used by 386 binaries.
32 | func PtraceGetRegs386(pid int, regsout *PtraceRegs386) error {
33 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
34 | }
35 |
36 | // PtraceSetRegs386 sets the registers used by 386 binaries.
37 | func PtraceSetRegs386(pid int, regs *PtraceRegs386) error {
38 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
39 | }
40 |
41 | // PtraceRegsAmd64 is the registers used by amd64 binaries.
42 | type PtraceRegsAmd64 struct {
43 | R15 uint64
44 | R14 uint64
45 | R13 uint64
46 | R12 uint64
47 | Rbp uint64
48 | Rbx uint64
49 | R11 uint64
50 | R10 uint64
51 | R9 uint64
52 | R8 uint64
53 | Rax uint64
54 | Rcx uint64
55 | Rdx uint64
56 | Rsi uint64
57 | Rdi uint64
58 | Orig_rax uint64
59 | Rip uint64
60 | Cs uint64
61 | Eflags uint64
62 | Rsp uint64
63 | Ss uint64
64 | Fs_base uint64
65 | Gs_base uint64
66 | Ds uint64
67 | Es uint64
68 | Fs uint64
69 | Gs uint64
70 | }
71 |
72 | // PtraceGetRegsAmd64 fetches the registers used by amd64 binaries.
73 | func PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error {
74 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
75 | }
76 |
77 | // PtraceSetRegsAmd64 sets the registers used by amd64 binaries.
78 | func PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error {
79 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
80 | }
81 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/zptracearm_linux.go:
--------------------------------------------------------------------------------
1 | // Code generated by linux/mkall.go generatePtracePair(arm, arm64). DO NOT EDIT.
2 |
3 | // +build linux
4 | // +build arm arm64
5 |
6 | package unix
7 |
8 | import "unsafe"
9 |
10 | // PtraceRegsArm is the registers used by arm binaries.
11 | type PtraceRegsArm struct {
12 | Uregs [18]uint32
13 | }
14 |
15 | // PtraceGetRegsArm fetches the registers used by arm binaries.
16 | func PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error {
17 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
18 | }
19 |
20 | // PtraceSetRegsArm sets the registers used by arm binaries.
21 | func PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error {
22 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
23 | }
24 |
25 | // PtraceRegsArm64 is the registers used by arm64 binaries.
26 | type PtraceRegsArm64 struct {
27 | Regs [31]uint64
28 | Sp uint64
29 | Pc uint64
30 | Pstate uint64
31 | }
32 |
33 | // PtraceGetRegsArm64 fetches the registers used by arm64 binaries.
34 | func PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error {
35 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
36 | }
37 |
38 | // PtraceSetRegsArm64 sets the registers used by arm64 binaries.
39 | func PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error {
40 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
41 | }
42 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/zptracemips_linux.go:
--------------------------------------------------------------------------------
1 | // Code generated by linux/mkall.go generatePtracePair(mips, mips64). DO NOT EDIT.
2 |
3 | // +build linux
4 | // +build mips mips64
5 |
6 | package unix
7 |
8 | import "unsafe"
9 |
10 | // PtraceRegsMips is the registers used by mips binaries.
11 | type PtraceRegsMips struct {
12 | Regs [32]uint64
13 | Lo uint64
14 | Hi uint64
15 | Epc uint64
16 | Badvaddr uint64
17 | Status uint64
18 | Cause uint64
19 | }
20 |
21 | // PtraceGetRegsMips fetches the registers used by mips binaries.
22 | func PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error {
23 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
24 | }
25 |
26 | // PtraceSetRegsMips sets the registers used by mips binaries.
27 | func PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error {
28 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
29 | }
30 |
31 | // PtraceRegsMips64 is the registers used by mips64 binaries.
32 | type PtraceRegsMips64 struct {
33 | Regs [32]uint64
34 | Lo uint64
35 | Hi uint64
36 | Epc uint64
37 | Badvaddr uint64
38 | Status uint64
39 | Cause uint64
40 | }
41 |
42 | // PtraceGetRegsMips64 fetches the registers used by mips64 binaries.
43 | func PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error {
44 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
45 | }
46 |
47 | // PtraceSetRegsMips64 sets the registers used by mips64 binaries.
48 | func PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error {
49 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
50 | }
51 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go:
--------------------------------------------------------------------------------
1 | // Code generated by linux/mkall.go generatePtracePair(mipsle, mips64le). DO NOT EDIT.
2 |
3 | // +build linux
4 | // +build mipsle mips64le
5 |
6 | package unix
7 |
8 | import "unsafe"
9 |
10 | // PtraceRegsMipsle is the registers used by mipsle binaries.
11 | type PtraceRegsMipsle struct {
12 | Regs [32]uint64
13 | Lo uint64
14 | Hi uint64
15 | Epc uint64
16 | Badvaddr uint64
17 | Status uint64
18 | Cause uint64
19 | }
20 |
21 | // PtraceGetRegsMipsle fetches the registers used by mipsle binaries.
22 | func PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error {
23 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
24 | }
25 |
26 | // PtraceSetRegsMipsle sets the registers used by mipsle binaries.
27 | func PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error {
28 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
29 | }
30 |
31 | // PtraceRegsMips64le is the registers used by mips64le binaries.
32 | type PtraceRegsMips64le struct {
33 | Regs [32]uint64
34 | Lo uint64
35 | Hi uint64
36 | Epc uint64
37 | Badvaddr uint64
38 | Status uint64
39 | Cause uint64
40 | }
41 |
42 | // PtraceGetRegsMips64le fetches the registers used by mips64le binaries.
43 | func PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error {
44 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
45 | }
46 |
47 | // PtraceSetRegsMips64le sets the registers used by mips64le binaries.
48 | func PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error {
49 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
50 | }
51 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/AUTHORS:
--------------------------------------------------------------------------------
1 | # This source code refers to The Go Authors for copyright purposes.
2 | # The master list of authors is in the main Go distribution,
3 | # visible at http://tip.golang.org/AUTHORS.
4 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/CONTRIBUTORS:
--------------------------------------------------------------------------------
1 | # This source code was written by the Go contributors.
2 | # The master list of contributors is in the main Go distribution,
3 | # visible at http://tip.golang.org/CONTRIBUTORS.
4 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2009 The Go Authors. All rights reserved.
2 |
3 | Redistribution and use in source and binary forms, with or without
4 | modification, are permitted provided that the following conditions are
5 | met:
6 |
7 | * Redistributions of source code must retain the above copyright
8 | notice, this list of conditions and the following disclaimer.
9 | * Redistributions in binary form must reproduce the above
10 | copyright notice, this list of conditions and the following disclaimer
11 | in the documentation and/or other materials provided with the
12 | distribution.
13 | * Neither the name of Google Inc. nor the names of its
14 | contributors may be used to endorse or promote products derived from
15 | this software without specific prior written permission.
16 |
17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/PATENTS:
--------------------------------------------------------------------------------
1 | Additional IP Rights Grant (Patents)
2 |
3 | "This implementation" means the copyrightable works distributed by
4 | Google as part of the Go project.
5 |
6 | Google hereby grants to You a perpetual, worldwide, non-exclusive,
7 | no-charge, royalty-free, irrevocable (except as stated in this section)
8 | patent license to make, have made, use, offer to sell, sell, import,
9 | transfer and otherwise run, modify and propagate the contents of this
10 | implementation of Go, where such license applies only to those patent
11 | claims, both currently owned or controlled by Google and acquired in
12 | the future, licensable by Google that are necessarily infringed by this
13 | implementation of Go. This grant does not include claims that would be
14 | infringed only as a consequence of further modification of this
15 | implementation. If you or your agent or exclusive licensee institute or
16 | order or agree to the institution of patent litigation against any
17 | entity (including a cross-claim or counterclaim in a lawsuit) alleging
18 | that this implementation of Go or any code incorporated within this
19 | implementation of Go constitutes direct or contributory patent
20 | infringement, or inducement of patent infringement, then any patent
21 | rights granted to you under this License for this implementation of Go
22 | shall terminate as of the date such litigation is filed.
23 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 | //go:generate go run gen.go
6 |
7 | // Package htmlindex maps character set encoding names to Encodings as
8 | // recommended by the W3C for use in HTML 5. See http://www.w3.org/TR/encoding.
9 | package htmlindex
10 |
11 | // TODO: perhaps have a "bare" version of the index (used by this package) that
12 | // is not pre-loaded with all encodings. Global variables in encodings prevent
13 | // the linker from being able to purge unneeded tables. This means that
14 | // referencing all encodings, as this package does for the default index, links
15 | // in all encodings unconditionally.
16 | //
17 | // This issue can be solved by either solving the linking issue (see
18 | // https://github.com/golang/go/issues/6330) or refactoring the encoding tables
19 | // (e.g. moving the tables to internal packages that do not use global
20 | // variables).
21 |
22 | // TODO: allow canonicalizing names
23 |
24 | import (
25 | "errors"
26 | "strings"
27 | "sync"
28 |
29 | "golang.org/x/text/encoding"
30 | "golang.org/x/text/encoding/internal/identifier"
31 | "golang.org/x/text/language"
32 | )
33 |
34 | var (
35 | errInvalidName = errors.New("htmlindex: invalid encoding name")
36 | errUnknown = errors.New("htmlindex: unknown Encoding")
37 | errUnsupported = errors.New("htmlindex: this encoding is not supported")
38 | )
39 |
40 | var (
41 | matcherOnce sync.Once
42 | matcher language.Matcher
43 | )
44 |
45 | // LanguageDefault returns the canonical name of the default encoding for a
46 | // given language.
47 | func LanguageDefault(tag language.Tag) string {
48 | matcherOnce.Do(func() {
49 | tags := []language.Tag{}
50 | for _, t := range strings.Split(locales, " ") {
51 | tags = append(tags, language.MustParse(t))
52 | }
53 | matcher = language.NewMatcher(tags, language.PreferSameScript(true))
54 | })
55 | _, i, _ := matcher.Match(tag)
56 | return canonical[localeMap[i]] // Default is Windows-1252.
57 | }
58 |
59 | // Get returns an Encoding for one of the names listed in
60 | // http://www.w3.org/TR/encoding using the Default Index. Matching is case-
61 | // insensitive.
62 | func Get(name string) (encoding.Encoding, error) {
63 | x, ok := nameMap[strings.ToLower(strings.TrimSpace(name))]
64 | if !ok {
65 | return nil, errInvalidName
66 | }
67 | return encodings[x], nil
68 | }
69 |
70 | // Name reports the canonical name of the given Encoding. It will return
71 | // an error if e is not associated with a supported encoding scheme.
72 | func Name(e encoding.Encoding) (string, error) {
73 | id, ok := e.(identifier.Interface)
74 | if !ok {
75 | return "", errUnknown
76 | }
77 | mib, _ := id.ID()
78 | if mib == 0 {
79 | return "", errUnknown
80 | }
81 | v, ok := mibMap[mib]
82 | if !ok {
83 | return "", errUnsupported
84 | }
85 | return canonical[v], nil
86 | }
87 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/encoding/internal/internal.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 internal contains code that is shared among encoding implementations.
6 | package internal
7 |
8 | import (
9 | "golang.org/x/text/encoding"
10 | "golang.org/x/text/encoding/internal/identifier"
11 | "golang.org/x/text/transform"
12 | )
13 |
14 | // Encoding is an implementation of the Encoding interface that adds the String
15 | // and ID methods to an existing encoding.
16 | type Encoding struct {
17 | encoding.Encoding
18 | Name string
19 | MIB identifier.MIB
20 | }
21 |
22 | // _ verifies that Encoding implements identifier.Interface.
23 | var _ identifier.Interface = (*Encoding)(nil)
24 |
25 | func (e *Encoding) String() string {
26 | return e.Name
27 | }
28 |
29 | func (e *Encoding) ID() (mib identifier.MIB, other string) {
30 | return e.MIB, ""
31 | }
32 |
33 | // SimpleEncoding is an Encoding that combines two Transformers.
34 | type SimpleEncoding struct {
35 | Decoder transform.Transformer
36 | Encoder transform.Transformer
37 | }
38 |
39 | func (e *SimpleEncoding) NewDecoder() *encoding.Decoder {
40 | return &encoding.Decoder{Transformer: e.Decoder}
41 | }
42 |
43 | func (e *SimpleEncoding) NewEncoder() *encoding.Encoder {
44 | return &encoding.Encoder{Transformer: e.Encoder}
45 | }
46 |
47 | // FuncEncoding is an Encoding that combines two functions returning a new
48 | // Transformer.
49 | type FuncEncoding struct {
50 | Decoder func() transform.Transformer
51 | Encoder func() transform.Transformer
52 | }
53 |
54 | func (e FuncEncoding) NewDecoder() *encoding.Decoder {
55 | return &encoding.Decoder{Transformer: e.Decoder()}
56 | }
57 |
58 | func (e FuncEncoding) NewEncoder() *encoding.Encoder {
59 | return &encoding.Encoder{Transformer: e.Encoder()}
60 | }
61 |
62 | // A RepertoireError indicates a rune is not in the repertoire of a destination
63 | // encoding. It is associated with an encoding-specific suggested replacement
64 | // byte.
65 | type RepertoireError byte
66 |
67 | // Error implements the error interrface.
68 | func (r RepertoireError) Error() string {
69 | return "encoding: rune not supported by encoding."
70 | }
71 |
72 | // Replacement returns the replacement string associated with this error.
73 | func (r RepertoireError) Replacement() byte { return byte(r) }
74 |
75 | var ErrASCIIReplacement = RepertoireError(encoding.ASCIISub)
76 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/encoding/japanese/all.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 japanese
6 |
7 | import (
8 | "golang.org/x/text/encoding"
9 | )
10 |
11 | // All is a list of all defined encodings in this package.
12 | var All = []encoding.Encoding{EUCJP, ISO2022JP, ShiftJIS}
13 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 simplifiedchinese
6 |
7 | import (
8 | "golang.org/x/text/encoding"
9 | )
10 |
11 | // All is a list of all defined encodings in this package.
12 | var All = []encoding.Encoding{GB18030, GBK, HZGB2312}
13 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/encoding/unicode/override.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 unicode
6 |
7 | import (
8 | "golang.org/x/text/transform"
9 | )
10 |
11 | // BOMOverride returns a new decoder transformer that is identical to fallback,
12 | // except that the presence of a Byte Order Mark at the start of the input
13 | // causes it to switch to the corresponding Unicode decoding. It will only
14 | // consider BOMs for UTF-8, UTF-16BE, and UTF-16LE.
15 | //
16 | // This differs from using ExpectBOM by allowing a BOM to switch to UTF-8, not
17 | // just UTF-16 variants, and allowing falling back to any encoding scheme.
18 | //
19 | // This technique is recommended by the W3C for use in HTML 5: "For
20 | // compatibility with deployed content, the byte order mark (also known as BOM)
21 | // is considered more authoritative than anything else."
22 | // http://www.w3.org/TR/encoding/#specification-hooks
23 | //
24 | // Using BOMOverride is mostly intended for use cases where the first characters
25 | // of a fallback encoding are known to not be a BOM, for example, for valid HTML
26 | // and most encodings.
27 | func BOMOverride(fallback transform.Transformer) transform.Transformer {
28 | // TODO: possibly allow a variadic argument of unicode encodings to allow
29 | // specifying details of which fallbacks are supported as well as
30 | // specifying the details of the implementations. This would also allow for
31 | // support for UTF-32, which should not be supported by default.
32 | return &bomOverride{fallback: fallback}
33 | }
34 |
35 | type bomOverride struct {
36 | fallback transform.Transformer
37 | current transform.Transformer
38 | }
39 |
40 | func (d *bomOverride) Reset() {
41 | d.current = nil
42 | d.fallback.Reset()
43 | }
44 |
45 | var (
46 | // TODO: we could use decode functions here, instead of allocating a new
47 | // decoder on every NewDecoder as IgnoreBOM decoders can be stateless.
48 | utf16le = UTF16(LittleEndian, IgnoreBOM)
49 | utf16be = UTF16(BigEndian, IgnoreBOM)
50 | )
51 |
52 | const utf8BOM = "\ufeff"
53 |
54 | func (d *bomOverride) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
55 | if d.current != nil {
56 | return d.current.Transform(dst, src, atEOF)
57 | }
58 | if len(src) < 3 && !atEOF {
59 | return 0, 0, transform.ErrShortSrc
60 | }
61 | d.current = d.fallback
62 | bomSize := 0
63 | if len(src) >= 2 {
64 | if src[0] == 0xFF && src[1] == 0xFE {
65 | d.current = utf16le.NewDecoder()
66 | bomSize = 2
67 | } else if src[0] == 0xFE && src[1] == 0xFF {
68 | d.current = utf16be.NewDecoder()
69 | bomSize = 2
70 | } else if len(src) >= 3 &&
71 | src[0] == utf8BOM[0] &&
72 | src[1] == utf8BOM[1] &&
73 | src[2] == utf8BOM[2] {
74 | d.current = transform.Nop
75 | bomSize = 3
76 | }
77 | }
78 | if bomSize < len(src) {
79 | nDst, nSrc, err = d.current.Transform(dst, src[bomSize:], atEOF)
80 | }
81 | return nDst, nSrc + bomSize, err
82 | }
83 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/internal/tag/tag.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 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 tag contains functionality handling tags and related data.
6 | package tag // import "golang.org/x/text/internal/tag"
7 |
8 | import "sort"
9 |
10 | // An Index converts tags to a compact numeric value.
11 | //
12 | // All elements are of size 4. Tags may be up to 4 bytes long. Excess bytes can
13 | // be used to store additional information about the tag.
14 | type Index string
15 |
16 | // Elem returns the element data at the given index.
17 | func (s Index) Elem(x int) string {
18 | return string(s[x*4 : x*4+4])
19 | }
20 |
21 | // Index reports the index of the given key or -1 if it could not be found.
22 | // Only the first len(key) bytes from the start of the 4-byte entries will be
23 | // considered for the search and the first match in Index will be returned.
24 | func (s Index) Index(key []byte) int {
25 | n := len(key)
26 | // search the index of the first entry with an equal or higher value than
27 | // key in s.
28 | index := sort.Search(len(s)/4, func(i int) bool {
29 | return cmp(s[i*4:i*4+n], key) != -1
30 | })
31 | i := index * 4
32 | if cmp(s[i:i+len(key)], key) != 0 {
33 | return -1
34 | }
35 | return index
36 | }
37 |
38 | // Next finds the next occurrence of key after index x, which must have been
39 | // obtained from a call to Index using the same key. It returns x+1 or -1.
40 | func (s Index) Next(key []byte, x int) int {
41 | if x++; x*4 < len(s) && cmp(s[x*4:x*4+len(key)], key) == 0 {
42 | return x
43 | }
44 | return -1
45 | }
46 |
47 | // cmp returns an integer comparing a and b lexicographically.
48 | func cmp(a Index, b []byte) int {
49 | n := len(a)
50 | if len(b) < n {
51 | n = len(b)
52 | }
53 | for i, c := range b[:n] {
54 | switch {
55 | case a[i] > c:
56 | return 1
57 | case a[i] < c:
58 | return -1
59 | }
60 | }
61 | switch {
62 | case len(a) < len(b):
63 | return -1
64 | case len(a) > len(b):
65 | return 1
66 | }
67 | return 0
68 | }
69 |
70 | // Compare returns an integer comparing a and b lexicographically.
71 | func Compare(a string, b []byte) int {
72 | return cmp(Index(a), b)
73 | }
74 |
75 | // FixCase reformats b to the same pattern of cases as form.
76 | // If returns false if string b is malformed.
77 | func FixCase(form string, b []byte) bool {
78 | if len(form) != len(b) {
79 | return false
80 | }
81 | for i, c := range b {
82 | if form[i] <= 'Z' {
83 | if c >= 'a' {
84 | c -= 'z' - 'Z'
85 | }
86 | if c < 'A' || 'Z' < c {
87 | return false
88 | }
89 | } else {
90 | if c <= 'Z' {
91 | c += 'z' - 'Z'
92 | }
93 | if c < 'a' || 'z' < c {
94 | return false
95 | }
96 | }
97 | b[i] = c
98 | }
99 | return true
100 | }
101 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/language/Makefile:
--------------------------------------------------------------------------------
1 | # Copyright 2013 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 | CLEANFILES+=maketables
6 |
7 | maketables: maketables.go
8 | go build $^
9 |
10 | tables: maketables
11 | ./maketables > tables.go
12 | gofmt -w -s tables.go
13 |
14 | # Build (but do not run) maketables during testing,
15 | # just to make sure it still compiles.
16 | testshort: maketables
17 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/language/common.go:
--------------------------------------------------------------------------------
1 | // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
2 |
3 | package language
4 |
5 | // This file contains code common to the maketables.go and the package code.
6 |
7 | // langAliasType is the type of an alias in langAliasMap.
8 | type langAliasType int8
9 |
10 | const (
11 | langDeprecated langAliasType = iota
12 | langMacro
13 | langLegacy
14 |
15 | langAliasTypeUnknown langAliasType = -1
16 | )
17 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/language/gen_common.go:
--------------------------------------------------------------------------------
1 | // Copyright 2014 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 | // +build ignore
6 |
7 | package main
8 |
9 | // This file contains code common to the maketables.go and the package code.
10 |
11 | // langAliasType is the type of an alias in langAliasMap.
12 | type langAliasType int8
13 |
14 | const (
15 | langDeprecated langAliasType = iota
16 | langMacro
17 | langLegacy
18 |
19 | langAliasTypeUnknown langAliasType = -1
20 | )
21 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/language/go1_1.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 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 | // +build !go1.2
6 |
7 | package language
8 |
9 | import "sort"
10 |
11 | func sortStable(s sort.Interface) {
12 | ss := stableSort{
13 | s: s,
14 | pos: make([]int, s.Len()),
15 | }
16 | for i := range ss.pos {
17 | ss.pos[i] = i
18 | }
19 | sort.Sort(&ss)
20 | }
21 |
22 | type stableSort struct {
23 | s sort.Interface
24 | pos []int
25 | }
26 |
27 | func (s *stableSort) Len() int {
28 | return len(s.pos)
29 | }
30 |
31 | func (s *stableSort) Less(i, j int) bool {
32 | return s.s.Less(i, j) || !s.s.Less(j, i) && s.pos[i] < s.pos[j]
33 | }
34 |
35 | func (s *stableSort) Swap(i, j int) {
36 | s.s.Swap(i, j)
37 | s.pos[i], s.pos[j] = s.pos[j], s.pos[i]
38 | }
39 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/language/go1_2.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 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 | // +build go1.2
6 |
7 | package language
8 |
9 | import "sort"
10 |
11 | var sortStable = sort.Stable
12 |
--------------------------------------------------------------------------------
/vendor/gopkg.in/telegram-bot-api.v4/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | coverage.out
3 | tmp/
4 |
--------------------------------------------------------------------------------
/vendor/gopkg.in/telegram-bot-api.v4/.travis.yml:
--------------------------------------------------------------------------------
1 | language: go
2 |
3 | go:
4 | - '1.10'
5 | - '1.11'
6 | - tip
7 |
--------------------------------------------------------------------------------
/vendor/gopkg.in/telegram-bot-api.v4/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Syfaro
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/vendor/gopkg.in/telegram-bot-api.v4/log.go:
--------------------------------------------------------------------------------
1 | package tgbotapi
2 |
3 | import (
4 | "errors"
5 | stdlog "log"
6 | "os"
7 | )
8 |
9 | // BotLogger is an interface that represents the required methods to log data.
10 | //
11 | // Instead of requiring the standard logger, we can just specify the methods we
12 | // use and allow users to pass anything that implements these.
13 | type BotLogger interface {
14 | Println(v ...interface{})
15 | Printf(format string, v ...interface{})
16 | }
17 |
18 | var log BotLogger = stdlog.New(os.Stderr, "", stdlog.LstdFlags)
19 |
20 | // SetLogger specifies the logger that the package should use.
21 | func SetLogger(logger BotLogger) error {
22 | if logger == nil {
23 | return errors.New("logger is nil")
24 | }
25 | log = logger
26 | return nil
27 | }
28 |
--------------------------------------------------------------------------------
/vendor/modules.txt:
--------------------------------------------------------------------------------
1 | # github.com/PuerkitoBio/goquery v1.5.0
2 | github.com/PuerkitoBio/goquery
3 | # github.com/anaskhan96/soup v1.1.1
4 | github.com/anaskhan96/soup
5 | # github.com/andybalholm/cascadia v1.0.0
6 | github.com/andybalholm/cascadia
7 | # github.com/boltdb/bolt v1.3.1
8 | github.com/boltdb/bolt
9 | # github.com/jasonlvhit/gocron v0.0.0-20190402024347-5bcdd9fcfa9b
10 | github.com/jasonlvhit/gocron
11 | # github.com/mmcdole/gofeed v1.0.0-beta2
12 | github.com/mmcdole/gofeed
13 | github.com/mmcdole/gofeed/atom
14 | github.com/mmcdole/gofeed/extensions
15 | github.com/mmcdole/gofeed/internal/shared
16 | github.com/mmcdole/gofeed/rss
17 | # github.com/mmcdole/goxpp v0.0.0-20181012175147-0068e33feabf
18 | github.com/mmcdole/goxpp
19 | # github.com/technoweenie/multipartstreamer v1.0.1
20 | github.com/technoweenie/multipartstreamer
21 | # golang.org/x/net v0.0.0-20190509222800-a4d6f7feada5
22 | golang.org/x/net/html
23 | golang.org/x/net/html/atom
24 | golang.org/x/net/html/charset
25 | # golang.org/x/sys v0.0.0-20190509141414-a5b02f93d862
26 | golang.org/x/sys/unix
27 | # golang.org/x/text v0.3.0
28 | golang.org/x/text/transform
29 | golang.org/x/text/encoding
30 | golang.org/x/text/encoding/charmap
31 | golang.org/x/text/encoding/htmlindex
32 | golang.org/x/text/encoding/internal/identifier
33 | golang.org/x/text/encoding/internal
34 | golang.org/x/text/encoding/japanese
35 | golang.org/x/text/encoding/korean
36 | golang.org/x/text/encoding/simplifiedchinese
37 | golang.org/x/text/encoding/traditionalchinese
38 | golang.org/x/text/encoding/unicode
39 | golang.org/x/text/language
40 | golang.org/x/text/internal/utf8internal
41 | golang.org/x/text/runes
42 | golang.org/x/text/internal/tag
43 | # gopkg.in/telegram-bot-api.v4 v4.6.4
44 | gopkg.in/telegram-bot-api.v4
45 |
--------------------------------------------------------------------------------