1 changed files with 47 additions and 0 deletions
@ -0,0 +1,47 @@ |
|||||||
|
#!/usr/bin/env tclsh |
||||||
|
|
||||||
|
#Создан: Пн 28 апр 2014 21:31:36 |
||||||
|
#Изменён: Вт 29 апр 2014 08:45:11 |
||||||
|
|
||||||
|
#Информация о файлах плагинов игры TES III Morrowind |
||||||
|
proc pluginInfo {pname} { |
||||||
|
#Открытие файла |
||||||
|
set plugin [open $pname r] |
||||||
|
#Чтение заголовка |
||||||
|
read $plugin 32 |
||||||
|
|
||||||
|
#Автор |
||||||
|
set author [regsub -all {\x00} [encoding convertfrom cp1251 [read $plugin 32]] {}] |
||||||
|
#Описание |
||||||
|
set desc [regsub -all {\x00} [encoding convertfrom cp1251 [read $plugin 250]] {}] |
||||||
|
#Требования |
||||||
|
#Начало секции |
||||||
|
read $plugin 12 |
||||||
|
#Удаление сигнатур, пустых строк, "хвоста" секции |
||||||
|
regsub -all {DAT.*?MAST} [encoding convertfrom cp1251 \ |
||||||
|
[read $plugin 180]] "\n" requ |
||||||
|
regsub -all "\n+" $requ "\n" requ |
||||||
|
regsub -all {DAT.*|ST|\x00|[^\w\.\n ]} $requ {} requ |
||||||
|
|
||||||
|
#Отображение зависимостей |
||||||
|
set depends "" |
||||||
|
foreach key [split $requ "\n"] { |
||||||
|
append depends "\n+ $key" |
||||||
|
} |
||||||
|
|
||||||
|
file stat $pname crtime |
||||||
|
|
||||||
|
format "\[%s\]\n\n%s\n\n%s\n%s\n" [file tail $pname] $author [fmt $desc] $depends |
||||||
|
} |
||||||
|
|
||||||
|
#Форматирование длинных строк |
||||||
|
proc fmt {string} { |
||||||
|
regsub -all -- {.{35,45} } $string "\&\n" |
||||||
|
} |
||||||
|
|
||||||
|
if {$argv == ""} { |
||||||
|
puts stderr "USAGE: [file tail $argv0] file.esp" |
||||||
|
} else { |
||||||
|
puts [pluginInfo [lindex $::argv 0]] |
||||||
|
} |
||||||
|
|
Loading…
Reference in new issue