Собственно, сабж. Пишу небольшой набор обёрток для файлового архива. Есть задача: когда прохожу директорию и натыкаюсь на ZIP-архив необходимо получить список файлов в него входящих.
Данную задачу пытаюсь решить вызовом из скрипта 7z l <archive.zip> и последующим чтением stdout, но код вываливается с ошибкой «channel stdout wasn't opened for reading». Как сделать правильно?
Собственно, код (тестовый):
proc ::flc::util::zipcontent { zipfile } {
fconfigure stdout -blocking 0 -buffering none;
set zipdata [read stdout];
open «|7z l $zipfile» r;
puts «$zipdata»;
}