1
0
mirror of https://github.com/rancher/os.git synced 2025-09-03 15:54:24 +00:00

hashicorp version pkg uses alpha sort on -rc11 metadata - so switching to Josh's catalog pkg

Signed-off-by: Sven Dowideit <SvenDowideit@home.org.au>
This commit is contained in:
Sven Dowideit
2017-02-10 00:37:08 +00:00
parent 3929481b5b
commit 9a75d2d5b4
29 changed files with 523 additions and 976 deletions

16
vendor/github.com/tredoe/term/AUTHORS.md generated vendored Normal file
View File

@@ -0,0 +1,16 @@
# Authors
This is the official list of authors for copyright purposes.
This file is distinct from the 'CONTRIBUTORS' file. See the latter for an explanation.
Names should be added to this file as:
Name or Organization <email address> / (url address)
(The email address is not required for organizations)
Please keep the list sorted.
## Code
* Jonas mg (https://github.com/tredoe)

18
vendor/github.com/tredoe/term/CONTRIBUTORS.md generated vendored Normal file
View File

@@ -0,0 +1,18 @@
# Contributors
This is the official list of people who can contribute (and typically
have contributed) to the repository.
The 'AUTHORS' file lists the copyright holders; this file lists people. For
example, the employees of an organization are listed here but not in 'AUTHORS',
because the organization holds the copyright.
Names should be added to this file as:
Name <email address> / (url address)
Please keep the list sorted.
## Code
* Jonas mg (https://github.com/tredoe)

374
vendor/github.com/tredoe/term/LICENSE-MPL.txt generated vendored Normal file
View File

@@ -0,0 +1,374 @@
Mozilla Public License Version 2.0
==================================
1. Definitions
--------------
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.
1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.
1.3. "Contribution"
means Covered Software of a particular Contributor.
1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.
1.5. "Incompatible With Secondary Licenses"
means
(a) that the initial Contributor has attached the notice described
in Exhibit B to the Covered Software; or
(b) that the Covered Software was made available under the terms of
version 1.1 or earlier of the License, but not also under the
terms of a Secondary License.
1.6. "Executable Form"
means any form of the work other than Source Code Form.
1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.
1.8. "License"
means this document.
1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.
1.10. "Modifications"
means any of the following:
(a) any file in Source Code Form that results from an addition to,
deletion from, or modification of the contents of Covered
Software; or
(b) any new file in Source Code Form that contains any Covered
Software.
1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.
1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.
1.13. "Source Code Form"
means the form of the work preferred for making modifications.
1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
2. License Grants and Conditions
--------------------------------
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and
(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
(a) for any code that a Contributor has removed from Covered Software;
or
(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
(c) under Patent Claims infringed by Covered Software in the absence of
its Contributions.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
3. Responsibilities
-------------------
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
(a) such Covered Software must also be made available in Source Code
Form, as described in Section 3.1, and You must inform recipients of
the Executable Form how they can obtain a copy of such Source Code
Form by reasonable means in a timely manner, at a charge no more
than the cost of distribution to the recipient; and
(b) You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter
the recipients' rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
3.4. Notices
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
---------------------------------------------------
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.
5. Termination
--------------
5.1. The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and (b) on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.
************************************************************************
* *
* 6. Disclaimer of Warranty *
* ------------------------- *
* *
* Covered Software is provided under this License on an "as is" *
* basis, without warranty of any kind, either expressed, implied, or *
* statutory, including, without limitation, warranties that the *
* Covered Software is free of defects, merchantable, fit for a *
* particular purpose or non-infringing. The entire risk as to the *
* quality and performance of the Covered Software is with You. *
* Should any Covered Software prove defective in any respect, You *
* (not any Contributor) assume the cost of any necessary servicing, *
* repair, or correction. This disclaimer of warranty constitutes an *
* essential part of this License. No use of any Covered Software is *
* authorized under this License except under this disclaimer. *
* *
************************************************************************
************************************************************************
* *
* 7. Limitation of Liability *
* -------------------------- *
* *
* Under no circumstances and under no legal theory, whether tort *
* (including negligence), contract, or otherwise, shall any *
* Contributor, or anyone who distributes Covered Software as *
* permitted above, be liable to You for any direct, indirect, *
* special, incidental, or consequential damages of any character *
* including, without limitation, damages for lost profits, loss of *
* goodwill, work stoppage, computer failure or malfunction, or any *
* and all other commercial damages or losses, even if such party *
* shall have been informed of the possibility of such damages. This *
* limitation of liability shall not apply to liability for death or *
* personal injury resulting from such party's negligence to the *
* extent applicable law prohibits such limitation. Some *
* jurisdictions do not allow the exclusion or limitation of *
* incidental or consequential damages, so this exclusion and *
* limitation may not apply to You. *
* *
************************************************************************
8. Litigation
-------------
Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party's ability to bring
cross-claims or counter-claims.
9. Miscellaneous
----------------
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.
10. Versions of the License
---------------------------
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
-------------------------------------------
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
This Source Code Form is "Incompatible With Secondary Licenses", as
defined by the Mozilla Public License, v. 2.0.

24
vendor/github.com/tredoe/term/README.md generated vendored Normal file
View File

@@ -0,0 +1,24 @@
term
====
Package term provides a portable interface for terminal I/O.
[Documentation online](http://godoc.org/github.com/tredoe/term)
## Installation
go get github.com/tredoe/term
## Status
Tested in Linux 3.5.0, FreeBSD 9.1, NetBSD 6.1, OpenBSD 5.3, and Darwin systems,
for AMD64 and i386 architectures.
## License
The source files are distributed under the [Mozilla Public License, version 2.0](http://mozilla.org/MPL/2.0/),
unless otherwise noted.
Please read the [FAQ](http://www.mozilla.org/MPL/2.0/FAQ.html)
if you have further questions regarding the license.
* * *
*Generated by [Gowizard](https://github.com/tredoe/wizard)*

33
vendor/github.com/tredoe/term/doc.go generated vendored Normal file
View File

@@ -0,0 +1,33 @@
/*
Package term provides a portable interface for terminal I/O.
It manages input and output (I/O) for character-mode applications.
The high-level functions enable an application to read from standard input to
retrieve keyboard input stored in a terminal's input buffer. They also enable
an application to write to standard output or standard error to display text
in the terminal's screen buffer. And they also support redirection of standard
handles and control of terminal modes for different I/O functionality.
The low-level functions enable applications to receive detailed input about
keyboard. They also enable greater control of output to the screen.
Usage:
ter, err := term.New()
if err != nil {
panic(err)
}
defer func() {
if err = ter.Restore(); err != nil {
// Handle error
}
}()
Important
The "go test" tool runs tests with standard input connected to standard
error. So whatever program that uses the file descriptor of "/dev/stdin"
(which is 0), then it is going to fail. The solution is to use the standard
error.
*/
package term

8
vendor/github.com/tredoe/term/sys/doc.go generated vendored Normal file
View File

@@ -0,0 +1,8 @@
// Copyright 2013 Jonas mg
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
// Package sys contains low-level operating system primitives of the term.
package sys

47
vendor/github.com/tredoe/term/sys/key_unix.go generated vendored Normal file
View File

@@ -0,0 +1,47 @@
// Copyright 2013 Jonas mg
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
// +build !plan9,!windows
package sys
// Key codes
const (
K_TAB = 0x09 // TAB key
K_BACK = 0x7F // BACKSPACE key
K_RETURN = 0x0D // RETURN key
K_ESCAPE = 0x1B // ESC key
)
// Control+letters key codes.
const (
K_CTRL_A = iota + 0x01
K_CTRL_B
K_CTRL_C
K_CTRL_D
K_CTRL_E
K_CTRL_F
K_CTRL_G
K_CTRL_H
K_CTRL_I
K_CTRL_J
K_CTRL_K
K_CTRL_L
K_CTRL_M
K_CTRL_N
K_CTRL_O
K_CTRL_P
K_CTRL_Q
K_CTRL_R
K_CTRL_S
K_CTRL_T
K_CTRL_U
K_CTRL_V
K_CTRL_W
K_CTRL_X
K_CTRL_Y
K_CTRL_Z
)

14
vendor/github.com/tredoe/term/sys/sys_bsd.go generated vendored Normal file
View File

@@ -0,0 +1,14 @@
// Copyright 2012 Jonas mg
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
// +build ignore
package sys
//cgo const TCGETS = TIOCGETA
//cgo const TCSETS = TIOCSETA
//cgo const TCSETSW = TIOCSETAW
//cgo const TCSETSF = TIOCSETAF

11
vendor/github.com/tredoe/term/sys/sys_linux.go generated vendored Normal file
View File

@@ -0,0 +1,11 @@
// Copyright 2012 Jonas mg
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
// +build ignore
package sys
//cgo const (TCGETS, TCSETS, TCSETSW, TCSETSF)

120
vendor/github.com/tredoe/term/sys/sys_unix.go generated vendored Normal file
View File

@@ -0,0 +1,120 @@
// Copyright 2010 Jonas mg
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
// +build !plan9,!windows
// Reference: man termios ; man tty_ioctl
// Linux file: "asm-generic/termbits.h"
package sys
import (
"unsafe"
"golang.org/x/sys/unix"
)
// int tcgetattr(int fd, struct termios *termios_p)
func Getattr(fd int, state *Termios) (err error) {
_, _, e1 := unix.Syscall(unix.SYS_IOCTL, uintptr(fd),
uintptr(TCGETS), uintptr(unsafe.Pointer(state)))
if e1 != 0 {
err = e1
}
return
}
// int tcsetattr(int fd, int optional_actions, const struct termios *termios_p)
func Setattr(fd int, action uint, state *Termios) (err error) {
switch action {
case TCSANOW:
action = TCSETS
case TCSADRAIN:
action = TCSETSW
case TCSAFLUSH:
action = TCSETSF
}
_, _, e1 := unix.Syscall(unix.SYS_IOCTL, uintptr(fd),
uintptr(action), uintptr(unsafe.Pointer(state)))
if e1 != 0 {
err = e1
}
return
}
// GetWinsize gets the winsize struct with the terminal size set by the kernel.
func GetWinsize(fd int, ws *Winsize) (err error) {
_, _, e1 := unix.Syscall(unix.SYS_IOCTL, uintptr(fd),
uintptr(TIOCGWINSZ), uintptr(unsafe.Pointer(ws)))
if e1 != 0 {
err = e1
}
return
}
// Types
//cgo const (TCSANOW, TCSADRAIN, TCSAFLUSH)
//cgo const TIOCGWINSZ
//cgo type struct_termios
//cgo type struct_winsize
//cgo// c_cc characters
//cgo const (VINTR, VQUIT, VERASE, VKILL, VEOF, VTIME, VMIN, VSTART, VSTOP,
// VSUSP, VEOL, VREPRINT, VDISCARD, VWERASE, VLNEXT, VEOL2)
//cgo// c_iflag bits
//cgo const (IGNBRK, BRKINT, IGNPAR, PARMRK, INPCK, ISTRIP, INLCR, IGNCR, ICRNL,
// IXON, IXANY, IXOFF, IMAXBEL)
//cgo// c_oflag bits
//cgo const (OPOST, ONLCR, OCRNL, ONOCR, ONLRET, NL0, NL1, CR0, CR1, CR2, CR3,
// TAB0, TAB1, TAB2, XTABS, BS0, BS1, FF0, FF1)
//cgo// c_cflag bits
//cgo const (B0, B50, B75, B110, B134, B150, B200, B300,
// B600, B1200, B1800, B2400, B4800, B9600, B19200, B38400, EXTA, EXTB, CSIZE,
// CS5, CS6, CS7, CS8, CSTOPB, CREAD, PARENB, PARODD, HUPCL, CLOCAL,
// B57600, B115200, B230400, CRTSCTS)
//cgo// c_lflag bits
//cgo const (ISIG, ICANON, ECHO, ECHOE, ECHOK, ECHONL, NOFLSH, TOSTOP, ECHOCTL,
// ECHOPRT, ECHOKE, FLUSHO, PENDIN, IEXTEN, EXTPROC)
/*
== FreeBSD has not:
// c_cc characters
VSWTC
// c_iflag bits
(IUCLC, IUTF8)
// c_oflag bits
(OLCUC, OFILL, OFDEL, NLDLY, CRDLY, BSDLY, VTDLY, VT0, VT1, FFDLY)
// c_cflag bits
(CBAUD, CBAUDEX, BOTHER, B500000, B576000,
B1000000, B1152000, B1500000, B2000000, B2500000, B3000000, B3500000,
B4000000, CIBAUD, CMSPAR, IBSHIFT)
// c_lflag bits
XCASE
== NetBSD, besides, has not:
// c_oflag bits
(TABDLY, TAB3)
== OpenBSD, besides, has not:
// c_cflag bits
(B460800, B921600)
*/

151
vendor/github.com/tredoe/term/sys/z-sys_darwin_386.go generated vendored Normal file
View File

@@ -0,0 +1,151 @@
// go.mkdef -w sys_unix.go sys_bsd.go
// MACHINE GENERATED BY go.mkdef (github.com/tredoe/gotool/go.mkdef); DO NOT EDIT
//
// Created by cgo -godefs - DO NOT EDIT
// cgo -godefs _z-sys_darwin_386.go
package sys
const (
TCSADRAIN = 0x1
TCSAFLUSH = 0x2
TCSANOW = 0x0
)
const TIOCGWINSZ = 0x40087468
const (
VDISCARD = 0xf
VEOF = 0x0
VEOL = 0x1
VEOL2 = 0x2
VERASE = 0x3
VINTR = 0x8
VKILL = 0x5
VLNEXT = 0xe
VMIN = 0x10
VQUIT = 0x9
VREPRINT = 0x6
VSTART = 0xc
VSTOP = 0xd
VSUSP = 0xa
VTIME = 0x11
VWERASE = 0x4
)
const (
BRKINT = 0x2
ICRNL = 0x100
IGNBRK = 0x1
IGNCR = 0x80
IGNPAR = 0x4
IMAXBEL = 0x2000
INLCR = 0x40
INPCK = 0x10
ISTRIP = 0x20
IXANY = 0x800
IXOFF = 0x400
IXON = 0x200
PARMRK = 0x8
)
const (
BS0 = 0x0
BS1 = 0x8000
CR0 = 0x0
CR1 = 0x1000
CR2 = 0x2000
CR3 = 0x3000
FF0 = 0x0
FF1 = 0x4000
NL0 = 0x0
NL1 = 0x100
OCRNL = 0x10
ONLCR = 0x2
ONLRET = 0x40
ONOCR = 0x20
OPOST = 0x1
TAB0 = 0x0
TAB1 = 0x400
TAB2 = 0x800
XTABS = 0xc00
)
const (
B0 = 0x0
B110 = 0x6e
B115200 = 0x1c200
B1200 = 0x4b0
B134 = 0x86
B150 = 0x96
B1800 = 0x708
B19200 = 0x4b00
B200 = 0xc8
B230400 = 0x38400
B2400 = 0x960
B300 = 0x12c
B38400 = 0x9600
B4800 = 0x12c0
B50 = 0x32
B57600 = 0xe100
B600 = 0x258
B75 = 0x4b
B9600 = 0x2580
CLOCAL = 0x8000
CREAD = 0x800
CRTSCTS = 0x30000
CS5 = 0x0
CS6 = 0x100
CS7 = 0x200
CS8 = 0x300
CSIZE = 0x300
CSTOPB = 0x400
EXTA = 0x4b00
EXTB = 0x9600
HUPCL = 0x4000
PARENB = 0x1000
PARODD = 0x2000
)
const (
ECHO = 0x8
ECHOCTL = 0x40
ECHOE = 0x2
ECHOK = 0x4
ECHOKE = 0x1
ECHONL = 0x10
ECHOPRT = 0x20
EXTPROC = 0x800
FLUSHO = 0x800000
ICANON = 0x100
IEXTEN = 0x400
ISIG = 0x80
NOFLSH = 0x80000000
PENDIN = 0x20000000
TOSTOP = 0x400000
)
const TCGETS = 0x402c7413
const TCSETS = 0x802c7414
const TCSETSW = 0x802c7415
const TCSETSF = 0x802c7416
type termios struct {
Iflag uint32
Oflag uint32
Cflag uint32
Lflag uint32
Cc [20]uint8
Ispeed uint32
Ospeed uint32
}
type winsize struct {
Row uint16
Col uint16
Xpixel uint16
Ypixel uint16
}

152
vendor/github.com/tredoe/term/sys/z-sys_darwin_amd64.go generated vendored Normal file
View File

@@ -0,0 +1,152 @@
// go.mkdef -w sys_unix.go sys_bsd.go
// MACHINE GENERATED BY go.mkdef (github.com/tredoe/gotool/go.mkdef); DO NOT EDIT
//
// Created by cgo -godefs - DO NOT EDIT
// cgo -godefs _z-sys_darwin_amd64.go
package sys
const (
TCSADRAIN = 0x1
TCSAFLUSH = 0x2
TCSANOW = 0x0
)
const TIOCGWINSZ = 0x40087468
const (
VDISCARD = 0xf
VEOF = 0x0
VEOL = 0x1
VEOL2 = 0x2
VERASE = 0x3
VINTR = 0x8
VKILL = 0x5
VLNEXT = 0xe
VMIN = 0x10
VQUIT = 0x9
VREPRINT = 0x6
VSTART = 0xc
VSTOP = 0xd
VSUSP = 0xa
VTIME = 0x11
VWERASE = 0x4
)
const (
BRKINT = 0x2
ICRNL = 0x100
IGNBRK = 0x1
IGNCR = 0x80
IGNPAR = 0x4
IMAXBEL = 0x2000
INLCR = 0x40
INPCK = 0x10
ISTRIP = 0x20
IXANY = 0x800
IXOFF = 0x400
IXON = 0x200
PARMRK = 0x8
)
const (
BS0 = 0x0
BS1 = 0x8000
CR0 = 0x0
CR1 = 0x1000
CR2 = 0x2000
CR3 = 0x3000
FF0 = 0x0
FF1 = 0x4000
NL0 = 0x0
NL1 = 0x100
OCRNL = 0x10
ONLCR = 0x2
ONLRET = 0x40
ONOCR = 0x20
OPOST = 0x1
TAB0 = 0x0
TAB1 = 0x400
TAB2 = 0x800
XTABS = 0xc00
)
const (
B0 = 0x0
B110 = 0x6e
B115200 = 0x1c200
B1200 = 0x4b0
B134 = 0x86
B150 = 0x96
B1800 = 0x708
B19200 = 0x4b00
B200 = 0xc8
B230400 = 0x38400
B2400 = 0x960
B300 = 0x12c
B38400 = 0x9600
B4800 = 0x12c0
B50 = 0x32
B57600 = 0xe100
B600 = 0x258
B75 = 0x4b
B9600 = 0x2580
CLOCAL = 0x8000
CREAD = 0x800
CRTSCTS = 0x30000
CS5 = 0x0
CS6 = 0x100
CS7 = 0x200
CS8 = 0x300
CSIZE = 0x300
CSTOPB = 0x400
EXTA = 0x4b00
EXTB = 0x9600
HUPCL = 0x4000
PARENB = 0x1000
PARODD = 0x2000
)
const (
ECHO = 0x8
ECHOCTL = 0x40
ECHOE = 0x2
ECHOK = 0x4
ECHOKE = 0x1
ECHONL = 0x10
ECHOPRT = 0x20
EXTPROC = 0x800
FLUSHO = 0x800000
ICANON = 0x100
IEXTEN = 0x400
ISIG = 0x80
NOFLSH = 0x80000000
PENDIN = 0x20000000
TOSTOP = 0x400000
)
const TCGETS = 0x40487413
const TCSETS = 0x80487414
const TCSETSW = 0x80487415
const TCSETSF = 0x80487416
type Termios struct {
Iflag uint64
Oflag uint64
Cflag uint64
Lflag uint64
Cc [20]uint8
Pad_cgo_0 [4]byte
Ispeed uint64
Ospeed uint64
}
type Winsize struct {
Row uint16
Col uint16
Xpixel uint16
Ypixel uint16
}

151
vendor/github.com/tredoe/term/sys/z-sys_freebsd.go generated vendored Normal file
View File

@@ -0,0 +1,151 @@
// go.mkdef -w sys_unix.go sys_bsd.go
// MACHINE GENERATED BY go.mkdef (github.com/tredoe/gotool/go.mkdef); DO NOT EDIT
//
// Created by cgo -godefs - DO NOT EDIT
// cgo -godefs _z-sys_freebsd_amd64.go
package sys
const (
TCSADRAIN = 0x1
TCSAFLUSH = 0x2
TCSANOW = 0x0
)
const TIOCGWINSZ = 0x40087468
const (
VDISCARD = 0xf
VEOF = 0x0
VEOL = 0x1
VEOL2 = 0x2
VERASE = 0x3
VINTR = 0x8
VKILL = 0x5
VLNEXT = 0xe
VMIN = 0x10
VQUIT = 0x9
VREPRINT = 0x6
VSTART = 0xc
VSTOP = 0xd
VSUSP = 0xa
VTIME = 0x11
VWERASE = 0x4
)
const (
BRKINT = 0x2
ICRNL = 0x100
IGNBRK = 0x1
IGNCR = 0x80
IGNPAR = 0x4
IMAXBEL = 0x2000
INLCR = 0x40
INPCK = 0x10
ISTRIP = 0x20
IXANY = 0x800
IXOFF = 0x400
IXON = 0x200
PARMRK = 0x8
)
const (
BS0 = 0x0
BS1 = 0x8000
CR0 = 0x0
CR1 = 0x1000
CR2 = 0x2000
CR3 = 0x3000
FF0 = 0x0
FF1 = 0x4000
NL0 = 0x0
NL1 = 0x100
OCRNL = 0x10
ONLCR = 0x2
ONLRET = 0x40
ONOCR = 0x20
OPOST = 0x1
TAB0 = 0x0
TAB1 = 0x400
TAB2 = 0x800
XTABS = 0xc00
)
const (
B0 = 0x0
B110 = 0x6e
B115200 = 0x1c200
B1200 = 0x4b0
B134 = 0x86
B150 = 0x96
B1800 = 0x708
B19200 = 0x4b00
B200 = 0xc8
B230400 = 0x38400
B2400 = 0x960
B300 = 0x12c
B38400 = 0x9600
B4800 = 0x12c0
B50 = 0x32
B57600 = 0xe100
B600 = 0x258
B75 = 0x4b
B9600 = 0x2580
CLOCAL = 0x8000
CREAD = 0x800
CRTSCTS = 0x30000
CS5 = 0x0
CS6 = 0x100
CS7 = 0x200
CS8 = 0x300
CSIZE = 0x300
CSTOPB = 0x400
EXTA = 0x4b00
EXTB = 0x9600
HUPCL = 0x4000
PARENB = 0x1000
PARODD = 0x2000
)
const (
ECHO = 0x8
ECHOCTL = 0x40
ECHOE = 0x2
ECHOK = 0x4
ECHOKE = 0x1
ECHONL = 0x10
ECHOPRT = 0x20
EXTPROC = 0x800
FLUSHO = 0x800000
ICANON = 0x100
IEXTEN = 0x400
ISIG = 0x80
NOFLSH = 0x80000000
PENDIN = 0x20000000
TOSTOP = 0x400000
)
const TCGETS = 0x402c7413
const TCSETS = 0x802c7414
const TCSETSW = 0x802c7415
const TCSETSF = 0x802c7416
type Termios struct {
Iflag uint32
Oflag uint32
Cflag uint32
Lflag uint32
Cc [20]uint8
Ispeed uint32
Ospeed uint32
}
type Winsize struct {
Row uint16
Col uint16
Xpixel uint16
Ypixel uint16
}

149
vendor/github.com/tredoe/term/sys/z-sys_linux.go generated vendored Normal file
View File

@@ -0,0 +1,149 @@
// go.mkdef -w sys_unix.go sys_linux.go
// MACHINE GENERATED BY go.mkdef (github.com/tredoe/gotool/go.mkdef); DO NOT EDIT
//
// Created by cgo -godefs - DO NOT EDIT
// cgo -godefs _z-sys_linux_amd64.go
package sys
const (
TCSADRAIN = 0x1
TCSAFLUSH = 0x2
TCSANOW = 0x0
)
const TIOCGWINSZ = 0x5413
const (
VDISCARD = 0xd
VEOF = 0x4
VEOL = 0xb
VEOL2 = 0x10
VERASE = 0x2
VINTR = 0x0
VKILL = 0x3
VLNEXT = 0xf
VMIN = 0x6
VQUIT = 0x1
VREPRINT = 0xc
VSTART = 0x8
VSTOP = 0x9
VSUSP = 0xa
VTIME = 0x5
VWERASE = 0xe
)
const (
BRKINT = 0x2
ICRNL = 0x100
IGNBRK = 0x1
IGNCR = 0x80
IGNPAR = 0x4
IMAXBEL = 0x2000
INLCR = 0x40
INPCK = 0x10
ISTRIP = 0x20
IXANY = 0x800
IXOFF = 0x1000
IXON = 0x400
PARMRK = 0x8
)
const (
BS0 = 0x0
BS1 = 0x2000
CR0 = 0x0
CR1 = 0x200
CR2 = 0x400
CR3 = 0x600
FF0 = 0x0
FF1 = 0x8000
NL0 = 0x0
NL1 = 0x100
OCRNL = 0x8
ONLCR = 0x4
ONLRET = 0x20
ONOCR = 0x10
OPOST = 0x1
TAB0 = 0x0
TAB1 = 0x800
TAB2 = 0x1000
XTABS = 0x1800
)
const (
B0 = 0x0
B110 = 0x3
B115200 = 0x1002
B1200 = 0x9
B134 = 0x4
B150 = 0x5
B1800 = 0xa
B19200 = 0xe
B200 = 0x6
B230400 = 0x1003
B2400 = 0xb
B300 = 0x7
B38400 = 0xf
B4800 = 0xc
B50 = 0x1
B57600 = 0x1001
B600 = 0x8
B75 = 0x2
B9600 = 0xd
CLOCAL = 0x800
CREAD = 0x80
CRTSCTS = 0x80000000
CS5 = 0x0
CS6 = 0x10
CS7 = 0x20
CS8 = 0x30
CSIZE = 0x30
CSTOPB = 0x40
EXTA = 0xe
EXTB = 0xf
HUPCL = 0x400
PARENB = 0x100
PARODD = 0x200
)
const (
ECHO = 0x8
ECHOCTL = 0x200
ECHOE = 0x10
ECHOK = 0x20
ECHOKE = 0x800
ECHONL = 0x40
ECHOPRT = 0x400
EXTPROC = 0x10000
FLUSHO = 0x1000
ICANON = 0x2
IEXTEN = 0x8000
ISIG = 0x1
NOFLSH = 0x80
PENDIN = 0x4000
TOSTOP = 0x100
)
const (
TCGETS = 0x5401
TCSETS = 0x5402
TCSETSF = 0x5404
TCSETSW = 0x5403
)
type Termios struct {
Iflag uint32
Oflag uint32
Cflag uint32
Lflag uint32
Line uint8
Cc [19]uint8
}
type Winsize struct {
Row uint16
Col uint16
Xpixel uint16
Ypixel uint16
}

151
vendor/github.com/tredoe/term/sys/z-sys_netbsd.go generated vendored Normal file
View File

@@ -0,0 +1,151 @@
// go.mkdef -w sys_unix.go sys_bsd.go
// MACHINE GENERATED BY go.mkdef (github.com/tredoe/gotool/go.mkdef); DO NOT EDIT
//
// Created by cgo -godefs - DO NOT EDIT
// cgo -godefs _z-sys_netbsd_amd64.go
package sys
const (
TCSADRAIN = 0x1
TCSAFLUSH = 0x2
TCSANOW = 0x0
)
const TIOCGWINSZ = 0x40087468
const (
VDISCARD = 0xf
VEOF = 0x0
VEOL = 0x1
VEOL2 = 0x2
VERASE = 0x3
VINTR = 0x8
VKILL = 0x5
VLNEXT = 0xe
VMIN = 0x10
VQUIT = 0x9
VREPRINT = 0x6
VSTART = 0xc
VSTOP = 0xd
VSUSP = 0xa
VTIME = 0x11
VWERASE = 0x4
)
const (
BRKINT = 0x2
ICRNL = 0x100
IGNBRK = 0x1
IGNCR = 0x80
IGNPAR = 0x4
IMAXBEL = 0x2000
INLCR = 0x40
INPCK = 0x10
ISTRIP = 0x20
IXANY = 0x800
IXOFF = 0x400
IXON = 0x200
PARMRK = 0x8
)
const (
BS0 = 0x0
BS1 = 0x8000
CR0 = 0x0
CR1 = 0x1000
CR2 = 0x2000
CR3 = 0x3000
FF0 = 0x0
FF1 = 0x4000
NL0 = 0x0
NL1 = 0x100
OCRNL = 0x10
ONLCR = 0x2
ONLRET = 0x40
ONOCR = 0x20
OPOST = 0x1
TAB0 = 0x0
TAB1 = 0x400
TAB2 = 0x800
XTABS = 0xc00
)
const (
B0 = 0x0
B110 = 0x6e
B115200 = 0x1c200
B1200 = 0x4b0
B134 = 0x86
B150 = 0x96
B1800 = 0x708
B19200 = 0x4b00
B200 = 0xc8
B230400 = 0x38400
B2400 = 0x960
B300 = 0x12c
B38400 = 0x9600
B4800 = 0x12c0
B50 = 0x32
B57600 = 0xe100
B600 = 0x258
B75 = 0x4b
B9600 = 0x2580
CLOCAL = 0x8000
CREAD = 0x800
CRTSCTS = 0x10000
CS5 = 0x0
CS6 = 0x100
CS7 = 0x200
CS8 = 0x300
CSIZE = 0x300
CSTOPB = 0x400
EXTA = 0x4b00
EXTB = 0x9600
HUPCL = 0x4000
PARENB = 0x1000
PARODD = 0x2000
)
const (
ECHO = 0x8
ECHOCTL = 0x40
ECHOE = 0x2
ECHOK = 0x4
ECHOKE = 0x1
ECHONL = 0x10
ECHOPRT = 0x20
EXTPROC = 0x800
FLUSHO = 0x800000
ICANON = 0x100
IEXTEN = 0x400
ISIG = 0x80
NOFLSH = 0x80000000
PENDIN = 0x20000000
TOSTOP = 0x400000
)
const TCGETS = 0x402c7413
const TCSETS = 0x802c7414
const TCSETSW = 0x802c7415
const TCSETSF = 0x802c7416
type Termios struct {
Iflag uint32
Oflag uint32
Cflag uint32
Lflag uint32
Cc [20]uint8
Ispeed int32
Ospeed int32
}
type Winsize struct {
Row uint16
Col uint16
Xpixel uint16
Ypixel uint16
}

151
vendor/github.com/tredoe/term/sys/z-sys_openbsd.go generated vendored Normal file
View File

@@ -0,0 +1,151 @@
// go.mkdef -w sys_unix.go sys_bsd.go
// MACHINE GENERATED BY go.mkdef (github.com/tredoe/gotool/go.mkdef); DO NOT EDIT
//
// Created by cgo -godefs - DO NOT EDIT
// cgo -godefs _z-sys_openbsd_amd64.go
package sys
const (
TCSADRAIN = 0x1
TCSAFLUSH = 0x2
TCSANOW = 0x0
)
const TIOCGWINSZ = 0x40087468
const (
VDISCARD = 0xf
VEOF = 0x0
VEOL = 0x1
VEOL2 = 0x2
VERASE = 0x3
VINTR = 0x8
VKILL = 0x5
VLNEXT = 0xe
VMIN = 0x10
VQUIT = 0x9
VREPRINT = 0x6
VSTART = 0xc
VSTOP = 0xd
VSUSP = 0xa
VTIME = 0x11
VWERASE = 0x4
)
const (
BRKINT = 0x2
ICRNL = 0x100
IGNBRK = 0x1
IGNCR = 0x80
IGNPAR = 0x4
IMAXBEL = 0x2000
INLCR = 0x40
INPCK = 0x10
ISTRIP = 0x20
IXANY = 0x800
IXOFF = 0x400
IXON = 0x200
PARMRK = 0x8
)
const (
BS0 = 0x0
BS1 = 0x8000
CR0 = 0x0
CR1 = 0x1000
CR2 = 0x2000
CR3 = 0x3000
FF0 = 0x0
FF1 = 0x4000
NL0 = 0x0
NL1 = 0x100
OCRNL = 0x10
ONLCR = 0x2
ONLRET = 0x80
ONOCR = 0x40
OPOST = 0x1
TAB0 = 0x0
TAB1 = 0x400
TAB2 = 0x800
XTABS = 0xc00
)
const (
B0 = 0x0
B110 = 0x6e
B115200 = 0x1c200
B1200 = 0x4b0
B134 = 0x86
B150 = 0x96
B1800 = 0x708
B19200 = 0x4b00
B200 = 0xc8
B230400 = 0x38400
B2400 = 0x960
B300 = 0x12c
B38400 = 0x9600
B4800 = 0x12c0
B50 = 0x32
B57600 = 0xe100
B600 = 0x258
B75 = 0x4b
B9600 = 0x2580
CLOCAL = 0x8000
CREAD = 0x800
CRTSCTS = 0x10000
CS5 = 0x0
CS6 = 0x100
CS7 = 0x200
CS8 = 0x300
CSIZE = 0x300
CSTOPB = 0x400
EXTA = 0x4b00
EXTB = 0x9600
HUPCL = 0x4000
PARENB = 0x1000
PARODD = 0x2000
)
const (
ECHO = 0x8
ECHOCTL = 0x40
ECHOE = 0x2
ECHOK = 0x4
ECHOKE = 0x1
ECHONL = 0x10
ECHOPRT = 0x20
EXTPROC = 0x800
FLUSHO = 0x800000
ICANON = 0x100
IEXTEN = 0x400
ISIG = 0x80
NOFLSH = 0x80000000
PENDIN = 0x20000000
TOSTOP = 0x400000
)
const TCGETS = 0x402c7413
const TCSETS = 0x802c7414
const TCSETSW = 0x802c7415
const TCSETSF = 0x802c7416
type Termios struct {
Iflag uint32
Oflag uint32
Cflag uint32
Lflag uint32
Cc [20]uint8
Ispeed int32
Ospeed int32
}
type Winsize struct {
Row uint16
Col uint16
Xpixel uint16
Ypixel uint16
}

35
vendor/github.com/tredoe/term/term.go generated vendored Normal file
View File

@@ -0,0 +1,35 @@
// Copyright 2012 Jonas mg
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
package term
// If it is true, at reading a password it shows characters shadowed by each key
// pressed.
var PasswordShadowed bool
var (
_CTRL_C = []byte{'^', 'C', '\r', '\n'}
_RETURN = []byte{'\r', '\n'}
_SHADOW_CHAR = []byte{'*'}
)
// * * *
type modeType int
const (
_ modeType = 1 << iota
RawMode
EchoMode
CharMode
PasswordMode
OtherMode
)
// Mode returns the mode set in the terminal, if any.
func (t *Terminal) Mode() modeType {
return t.mode
}

185
vendor/github.com/tredoe/term/term_unix.go generated vendored Normal file
View File

@@ -0,0 +1,185 @@
// Copyright 2010 Jonas mg
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
// +build !plan9,!windows
package term
import (
"io"
"os"
"github.com/tredoe/term/sys"
"golang.org/x/sys/unix"
)
// Default values for input and output.
var (
InputFD int = unix.Stdin
Input io.Reader = os.Stdin
Output io.Writer = os.Stdout
)
// A Terminal represents a general terminal interface.
type Terminal struct {
mode modeType
// Contain the state of a terminal, enabling to restore the original settings
oldState, lastState sys.Termios
// Window size
size sys.Winsize
fd int // File descriptor
}
// New creates a new terminal interface in the file descriptor InputFD.
func New() (*Terminal, error) {
var t Terminal
// Get the actual state
if err := sys.Getattr(InputFD, &t.lastState); err != nil {
return nil, os.NewSyscallError("sys.Getattr", err)
}
t.oldState = t.lastState // the actual state is copied to another one
t.fd = InputFD
return &t, nil
}
// == Restore
//
type State struct {
wrap sys.Termios
}
// OriginalState returns the terminal's original state.
func (t *Terminal) OriginalState() State {
return State{t.oldState}
}
// Restore restores the original settings for the term.
func (t *Terminal) Restore() error {
if t.mode != 0 {
if err := sys.Setattr(t.fd, sys.TCSANOW, &t.oldState); err != nil {
return os.NewSyscallError("sys.Setattr", err)
}
t.lastState = t.oldState
t.mode = 0
}
return nil
}
// Restore restores the settings from State.
func Restore(fd int, st State) error {
if err := sys.Setattr(fd, sys.TCSANOW, &st.wrap); err != nil {
return os.NewSyscallError("sys.Setattr", err)
}
return nil
}
// == Modes
//
// RawMode sets the terminal to something like the "raw" mode. Input is available
// character by character, echoing is disabled, and all special processing of
// terminal input and output characters is disabled.
//
// NOTE: in tty "raw mode", CR+LF is used for output and CR is used for input.
func (t *Terminal) RawMode() error {
// Input modes - no break, no CR to NL, no NL to CR, no carriage return,
// no strip char, no start/stop output control, no parity check.
t.lastState.Iflag &^= (sys.BRKINT | sys.IGNBRK | sys.ICRNL | sys.INLCR |
sys.IGNCR | sys.ISTRIP | sys.IXON | sys.PARMRK)
// Output modes - disable post processing.
t.lastState.Oflag &^= sys.OPOST
// Local modes - echoing off, canonical off, no extended functions,
// no signal chars (^Z,^C).
t.lastState.Lflag &^= (sys.ECHO | sys.ECHONL | sys.ICANON | sys.IEXTEN | sys.ISIG)
// Control modes - set 8 bit chars.
t.lastState.Cflag &^= (sys.CSIZE | sys.PARENB)
t.lastState.Cflag |= sys.CS8
// Control chars - set return condition: min number of bytes and timer.
// We want read to return every single byte, without timeout.
t.lastState.Cc[sys.VMIN] = 1 // Read returns when one char is available.
t.lastState.Cc[sys.VTIME] = 0
// Put the terminal in raw mode after flushing
if err := sys.Setattr(t.fd, sys.TCSAFLUSH, &t.lastState); err != nil {
return os.NewSyscallError("sys.Setattr", err)
}
t.mode |= RawMode
return nil
}
// EchoMode turns the echo mode.
func (t *Terminal) EchoMode(echo bool) error {
if !echo {
//t.lastState.Lflag &^= (sys.ECHO | sys.ECHOE | sys.ECHOK | sys.ECHONL)
t.lastState.Lflag &^= sys.ECHO
} else {
//t.lastState.Lflag |= (sys.ECHO | sys.ECHOE | sys.ECHOK | sys.ECHONL)
t.lastState.Lflag |= sys.ECHO
}
if err := sys.Setattr(t.fd, sys.TCSANOW, &t.lastState); err != nil {
return os.NewSyscallError("sys.Setattr", err)
}
if echo {
t.mode |= EchoMode
} else {
t.mode &^= EchoMode
}
return nil
}
// CharMode sets the terminal to single-character mode.
func (t *Terminal) CharMode() error {
// Disable canonical mode, and set buffer size to 1 byte.
t.lastState.Lflag &^= sys.ICANON
t.lastState.Cc[sys.VTIME] = 0
t.lastState.Cc[sys.VMIN] = 1
if err := sys.Setattr(t.fd, sys.TCSANOW, &t.lastState); err != nil {
return os.NewSyscallError("sys.Setattr", err)
}
t.mode |= CharMode
return nil
}
// SetMode sets the terminal attributes given by state.
// Warning: The use of this function is not cross-system.
func (t *Terminal) SetMode(state sys.Termios) error {
if err := sys.Setattr(t.fd, sys.TCSANOW, &state); err != nil {
return os.NewSyscallError("sys.Setattr", err)
}
t.lastState = state
t.mode |= OtherMode
return nil
}
// == Utility
//
// Fd returns the file descriptor referencing the term.
func (t *Terminal) Fd() int {
return t.fd
}
// GetSize returns the size of the term.
func (t *Terminal) GetSize() (row, column int, err error) {
if err = sys.GetWinsize(unix.Stdout, &t.size); err != nil {
return
}
return int(t.size.Row), int(t.size.Col), nil
}

185
vendor/github.com/tredoe/term/util_unix.go generated vendored Normal file
View File

@@ -0,0 +1,185 @@
// Copyright 2010 Jonas mg
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
// +build !plan9,!windows
package term
//#include <unistd.h>
//import "C"
import (
"bytes"
"math/rand"
"os"
"os/signal"
"time"
"unicode"
"unicode/utf8"
"github.com/tredoe/term/sys"
"golang.org/x/sys/unix"
)
var shellsWithoutANSI = []string{"dumb", "cons25"}
// SupportANSI checks if the terminal supports ANSI escape sequences.
func SupportANSI() bool {
term := os.Getenv("TERM")
if term == "" {
return false
}
for _, v := range shellsWithoutANSI {
if v == term {
return false
}
}
return true
}
// char *ttyname(int fd)
// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/ttyname.c;hb=HEAD
// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/posix/ttyname.c;hb=HEAD
// GetName gets the name of a term.
/*func GetName(fd int) (string, error) {
name, errno := C.ttyname(C.int(fd))
if errno != nil {
return "", fmt.Errorf("term.TTYName: %s", errno)
}
return C.GoString(name), nil
}*/
// int isatty(int fd)
// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/posix/isatty.c;hb=HEAD
// IsTerminal returns true if the file descriptor is a term.
func IsTerminal(fd int) bool {
return sys.Getattr(fd, &sys.Termios{}) == nil
}
// ReadPassword reads characters from the input until press Enter or until
// fill in the given slice.
//
// Only reads characters that include letters, marks, numbers, punctuation,
// and symbols from Unicode categories L, M, N, P, S, besides of the
// ASCII space character.
// Ctrl-C interrumpts, and backspace removes the last character read.
//
// Returns the number of bytes read.
func ReadPassword(password []byte) (n int, err error) {
ter, err := New()
if err != nil {
return 0, err
}
defer func() {
err2 := ter.Restore()
if err2 != nil && err == nil {
err = err2
}
}()
if err = ter.RawMode(); err != nil {
return 0, err
}
key := make([]byte, 4) // In-memory representation of a rune.
lenPassword := 0 // Number of characters read.
if PasswordShadowed {
rand.Seed(int64(time.Now().Nanosecond()))
}
L:
for {
n, err = unix.Read(InputFD, key)
if err != nil {
return 0, err
}
if n == 1 {
switch key[0] {
case sys.K_RETURN:
break L
case sys.K_BACK:
if lenPassword != 0 {
lenPassword--
password[lenPassword] = 0
}
continue
case sys.K_CTRL_C:
unix.Write(unix.Stdout, _CTRL_C)
// Clean data stored, if any.
for i, v := range password {
if v == 0 {
break
}
password[i] = 0
}
return 0, nil
}
}
char, _ := utf8.DecodeRune(key)
if unicode.IsPrint(char) {
password[lenPassword] = key[0] // Only want a character by key
lenPassword++
if PasswordShadowed {
unix.Write(unix.Stdout, bytes.Repeat(_SHADOW_CHAR, rand.Intn(3)+1))
}
if lenPassword == len(password) {
break
}
}
}
unix.Write(unix.Stdout, _RETURN)
n = lenPassword
return
}
// WinSize represents a channel, Change, to know when the window size has
// changed through function DetectWinSize.
type WinSize struct {
Change chan bool
quit chan bool
wait chan bool
}
// DetectWinSize caughts a signal named SIGWINCH whenever the window size changes,
// being indicated in channel `WinSize.Change`.
func DetectWinSize() *WinSize {
w := &WinSize{
make(chan bool),
make(chan bool),
make(chan bool),
}
changeSig := make(chan os.Signal)
signal.Notify(changeSig, unix.SIGWINCH)
go func() {
for {
select {
case <-changeSig:
// Add a pause because it is sent two signals at maximizing a window.
time.Sleep(7 * time.Millisecond)
w.Change <- true
case <-w.quit:
w.wait <- true
return
}
}
}()
return w
}
// Close closes the goroutine started to trap the signal.
func (w *WinSize) Close() {
w.quit <- true
<-w.wait
}