package mutex import ( "fmt" "strings" ) const maxMutexLength = 64 func sanitizeName(name string) (string, error) { trimmed := strings.TrimSpace(name) if trimmed == "" { return "", fmt.Errorf("empty mutex name") } var builder strings.Builder for _, r := range trimmed { if (r >= 'a' && r <= 'z') || (r >= 'A' && r <= 'Z') || (r >= '0' && r <= '9') || r == '-' || r == '_' || r == '.' { builder.WriteRune(r) } } sanitized := builder.String() if sanitized == "" { return "", fmt.Errorf("mutex name has no valid characters") } if len(sanitized) > maxMutexLength { sanitized = sanitized[:maxMutexLength] } return sanitized, nil }