fconfigure

fconfigure - устанавливает и читает опции канала.

      fconfigure channelId 
      fconfigure channelId name
      fconfigure channelId name value ?name value...?
    

ОПИСАНИЕ

Команда fconfigure устанавливает и читает опции каналов. Аргумент channelId определяет конкретный канал, с которым работает команда. Если аргументы name и value отсутствуют, команда возвращает список, содержащий поочередно имена опций и их значения для канала. Если имя опции указано, а значение - нет, команда возвращает текущее значение указанной опции. Если в команде указаны одна или больше пар имен и значений, то команда устанавливает каждой из перечисленных опций указанное значение. В этом случае команда возвращает пустую строку.

Описанные ниже опции поддерживаются для всех типов каналов. Кроме того, каждый тип канала может иметь дополнительно собственные опции. Они приведены в описаниях команд создания каналов, например, в описании команды socket.

-blocking boolean
Опция -blocking определяет, вызывают ли команды ввода/вывода блокировку процесса. Величина этой опции должна быть правильным булевым выражением. Обычно каналы открываются в блокирующем режиме. Если канал переведен в неблокирующий режим, это окажет влияние на выполнение команд gets, read, puts, flush и close (смотри описание соответствующих команд). Чтобы работа в неблокирующем режиме выполнялась корректно, в приложении должен быть запущен обработчик событий (например, с помощью команды vwait).
-buffering newValue

Если аргумент newValue равен full, система ввода-вывода будет накапливать вывод в буфере, пока буфер не заполнится целиком. После этого буфер будет выдан в канал.

Если аргумент newValue равен line, система ввода-вывода будет выдавать буфер в канал каждый раз при поступлении символа конца строки.

Если аргумент newValue равен none, система ввода-вывода будет выводить каждый символ сразу после его поступления.

Значение по умолчанию full для всех каналов, кроме устройств типа терминалов. Для них значение по умолчанию line.

-buffersize newSize
Аргумент newSize должен быть целым числом. Его значение определяет размер буфера (в байтах), используемый для данного канала. Величина newSize должна быть в пределах от десяти до миллиона, что позволяет задавать величину буфера от десяти до миллиона байт.
-eofchar char
-eofchar {inChar outChar}
Эти опции поддерживают структуру файлов DOS, в которой символ Control-z (\x1a) используется как символ конца файла. Если аргумент char не равен пустой строке, то этот символ, если он встречается во вводе, означает конец файла. При выводе информации символ конца файла выдается при закрытии канала. Если аргумент char равен пустой строке, то специальный символ конца файла отсутствует. Для каналов ввода-вывода элементы списка {inChar outChar} определяют символы конца файла для ввода и вывода соответственно. Пользователь может указать в списке единственный символ, который будет использоваться и для ввода, и для вывода. Однако, при запросе команда возвратит текущие установки в виде списка из двух одинаковых элементов. Значения по умолчанию для символов конца файла - пустая строка всегда, кроме файлов Windows. В этом случае inChar равно Control-z (\x1a), outChar - пустой строке.
-translation mode
-translation {inMode outMode}

В Tcl-скриптах конец строки всегда представляется единственным символом новой строки (\n). Однако, в реальных файлах и устройствах конец строки может быть представлен разными символами или наборами символов в зависимости от используемой платформы или даже конкретного устройства. Например, на UNIX- платформах символ новой строки используется в файлах, в то время как для сетевых соединений используется последовательность "возврат каретки - новая строка". При вводе данных (например, при исполнении команд gets или read) система ввода - вывода Tcl сама автоматически преобразует внешнее представление конца строк во внутреннее представление (символ новой строки). При выводе (например, при команде puts) также происходит преобразование ко внешнему формату представления конца строки. Значение аргумента по умолчанию равно auto. При этом символы конца строки для большинства ситуаций правильно определяются автоматически. Однако, опция -translation позволяет при необходимости задать соответствующие символы в явном виде.

Аргумент mode задает представление конца строки для каналов, открытых только на чтение или только на запись. Список {inMode outMode} определяет представление конца строки для каналов ввода - вывода. Пользователь может указать в списке единственный символ, который будет использоваться и для ввода, и для вывода. Однако, при запросе команда возвратит текущие установки в виде списка из двух одинаковых элементов.

Поддерживаются следующие значения опции:

auto
При вводе в качестве конца строки могут использоваться символ возврата каретки (cr), символ новой строки (lf), или их последовательность (crlf). Причем разные строки могут заканчиваться по-разному. Все эти представления будут переведены в символ новой строки. При выводе используется разное представление для различных платформ и каналов. Для сетевых соединений на всех платформах используется crlf, для всех Unix- платформ - lf, для Macintosh - cr, а для всех Windows-платформ - crlf.
binary
Никакого преобразования символов конца строки не производится. Это значение опции очень схоже со значением lf, однако, при значении binary пустая строка воспринимается как конец файла (см. описание опции -eofchar).
cr
В качестве символа конца строки используется возврат каретки (cr). Соответственно, при вводе символ возврата каретки преобразуется в символ новой строки, а при выводе, наоборот, символ новой строки преобразуется в символ возврата каретки. Это значение опции используется, обычно, на Macintosh-платформах.
crlf
В качестве символа конца строки используется последовательность "возврат каретки - новая строка" (crlf). Соответственно, при вводе последовательность "возврат каретки - новая строка" преобразуется в символ новой строки, а при выводе, наоборот, символ новой строки преобразуется в последовательность "возврат каретки - новая строка". Это значение опции используется обычно на Windows-платформах и при сетевых соединениях.
lf
В качестве символа конца строки используется символ новой строки (lf). Никакого преобразования символов конца строки при вводе и выводе не происходит. Это значение опции используется, обычно, на UNIX-платформах.

См. также close(n), flush(n), gets(n), puts(n), read(n), socket(n)