rs2322tcp/internal/client/virtual_port_number_windows.go

62 lines
1.3 KiB
Go

//go:build windows
/*
* ============================================================================
* Projekt.....: rs2322tcp
* Datei.......: internal/client/virtual_port_number_windows.go
* Copyright (C) 2026 Dieter Lang
*
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Beschreibung:
* Windows-spezifische Umwandlung eines konfigurierten virtuellen
* seriellen COM-Ports in dessen numerische Portnummer.
* ============================================================================
*/
package client
import (
"fmt"
"strconv"
"strings"
)
///////////////////////////////////////////////////////////////////////////////
// Virtual port number
///////////////////////////////////////////////////////////////////////////////
// virtualPortNumber converts a configured COMxxx path into its numeric
// virtual port number.
func virtualPortNumber(path string) (int, error) {
const prefix = "COM"
if !strings.HasPrefix(
strings.ToUpper(path),
prefix,
) {
return 0, fmt.Errorf(
"invalid virtual port %q: expected COM<number>",
path,
)
}
value := path[len(prefix):]
if value == "" {
return 0, fmt.Errorf(
"invalid virtual port %q: port number is missing",
path,
)
}
number, err := strconv.Atoi(value)
if err != nil {
return 0, fmt.Errorf(
"invalid virtual port %q: invalid port number",
path,
)
}
return number, nil
}