//go:build linux /* * ============================================================================ * Projekt.....: rs2322tcp * Datei.......: internal/client/virtual_port_number_linux.go * Copyright (C) 2026 Dieter Lang * * SPDX-License-Identifier: GPL-3.0-or-later * * Beschreibung: * Linux-spezifische Umwandlung eines konfigurierten virtuellen * seriellen Ports in dessen numerische Portnummer. * ============================================================================ */ package client import ( "fmt" "strconv" "strings" ) /////////////////////////////////////////////////////////////////////////////// // Virtual port number /////////////////////////////////////////////////////////////////////////////// // virtualPortNumber converts a configured /dev/ttyUSBxxx path into its // numeric virtual port number. func virtualPortNumber(path string) (int, error) { const prefix = "/dev/ttyUSB" if !strings.HasPrefix(path, prefix) { return 0, fmt.Errorf( "invalid virtual port %q: expected /dev/ttyUSB", path, ) } value := strings.TrimPrefix(path, 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 }