Alternate screen size support.

This is a relatively big new feature, which introduces small breaking changes
to the API:

 * NegotiateTelnet() now returns (DevInfo, error) instead of just error.  The
   function signature for the Tx type now has one additional DevInfo parameter.
 * RunTransactions() requires one additional parameter, the DevInfo (which is
   allowed to be nil).

Otherwise, existing behavior continues to work as-is and everything still
defaults to operating on the default 24x80 terminal size.

See example5 for a larger-terminal-aware application.

Pending some time to make sure no new bugs cropped up in this release and that
the alternate screen size support works in the wild, I anticipate this will
become the v1.0.0 release of go3270.
This commit is contained in:
Matthew R. Wilson committed 2025-06-29 12:58:18 -07:00
1 parent 3a38ce6e4a
commit b6fa48f37f
19 files changed
+820 -126

No files matched your search

+4 -2
View File
@@ -58,7 +58,8 @@ var loginScreenRules = go3270.Rules{
// login transaction accepts a string value in data if the login screen
// should be initialized with an error message.
func (sess *session) login(conn net.Conn, data any) (go3270.Tx, any, error) {
func (sess *session) login(conn net.Conn, _ go3270.DevInfo,
data any) (go3270.Tx, any, error) {
fieldValues := make(map[string]string)
@@ -169,7 +170,8 @@ type newuserData struct {
errmsg string
}
func (sess *session) newuser(conn net.Conn, data any) (go3270.Tx, any, error) {
func (sess *session) newuser(conn net.Conn, _ go3270.DevInfo, data any) (
go3270.Tx, any, error) {
fieldValues := make(map[string]string)