Требуется провести сравнение двух путей (к файлам). Пути к файлам задаются в стиле ОС Unix. Корневой каталог – /. Домашний и текущий каталог вводятся как абсолютные пути (например, домашний каталог может иметь вид «/home/user»). В каждом из анализируемых путей могут встречаться символы:
- символ ‘.’ – обозначает текущий каталог. Если ‘.’ встретилась в начале пути, то она заменится на абсолютный путь текущего каталога. Если ‘.’ встречается внутри пути, то этот символ игнорируется, т.е. «/tmp/./ttt» эквивалентно «/tmp/ttt»;
- символы «..» – обозначают переход к родительскому каталогу (для корневого каталога родительским для него является он сам же, т.е. «/../..» эквивалентно «/»);
- символ «~» в начале пути заменяется на абсолютный путь домашнего каталога. Если этот символ встречается внутри пути, то он ничем не отличается от «обычных» символов.
Дублируемые символы ‘/’ игнорируются, т.е. «/var///tmp» эквивалентно «/var/tmp».
Все имена являются регистрозависимыми, т.е. «/tmp» не эквивалентно «/Tmp».
Формат входного файла
С клавиатуры вводятся 4 строки.
Первая строка (не более 100 символов) – абсолютный путь домашнего каталога.
Вторая строка (не более 100 символов) – абсолютный путь текущего каталога.
Третья и четвертая строки (не более 1000 символов каждая) – сравниваемые пути.
Формат выходного файла
Требуется вывести на экран YES в случае эквивалентности анализируемых путей (пути эквивалентны, если указывают на один и тот же файл), NO – в случае неэквивалентности. В случае ошибки (например, домашний каталог задан не абсолютным путем) на экран вывести сообщение ERROR, а в стандартный поток ошибок – описание возникшей ошибки в произвольной форме на английском языке не транслитом (для вывода воспользуйтесь вызовом fprintf(stderr, const char *format, …), описанной также в stdio.h).
Примеры
Ввод | Вывод |
/home/user /tmp ./../../home/user/D ~/D |
YES |