Skip to content
This repository has been archived by the owner on Feb 5, 2018. It is now read-only.

tolma488/censor

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Тулза, как было задано, принимает 4 параметра, но я добавил еще один необязательный, для удобства: чтобы был вывод смещения замены и того, какие байты замещаются. Запуск без параметров выдаст Usage текст.

	$ ./Censor
	Usage:
	$ ./Censor input_file  output_file replacements_file restrictions_file [report]

	report - is any char, 
	if [report] presence - report while replace
	else - silence replace
	Program will print "Done" at the end

Для генерации большого файла я написал код на Golang (см. filegen.go). Сначала генерится файл с заданным числом слов, потом для скорости заданное количество раз переписывется в новый. Если нужна многобайтная кодировка - конвертирую сгенерёный файл в нужную кодировку с помощью GEdit или SublimeText, а затем уже копирую несколько раз в большой.

Словари писал без генерации - набор латинских букв.

Проверять на правильность замены большой файл, оказывается, не так-то просто :) Утилита diff воспринимает utf16 файлы как бинарные, cmp выводит в неудобном виде. Интернет подсказал такой метод:

	$ xdd input_file > hi
	$ xdd output_file > ho
	$ diff hi ho > diffs

Осторожно! Файлы получаются больше исходных. Файл diffs просматривал в mc с помощью F3. Проверял случайные смещения в hex-редакторе.

По поводу исполнения. Писал в qtCreator, но библиотеки qt не использовал. Ранее с кодировками не работал, поэтому возникло желание сделать всё самому, на низком уровне, без использования библиотек для работы с кодировками.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 91.1%
  • Go 7.7%
  • QMake 1.2%