ЛР3. Копирование, перемещение, удаление файлов, создание ссылок.

Задание

Создать утилиту cml (упрощенный аналог утилит cp, mv, ln) для копирования/перемещения файлов и создания ссылок. Общий вид:
 cml [-h|-l|-m] исходный_файл результирующий_файл
Поведение утилиты:
  1. Считается, что синтаксис утилиты всегда верен.
  2. Если исходный файл не существует - сообщить об этом и остановить программу.
  3. Если исходный файл существует, но не является регулярным файлом или ссылкой - сообщить об этом и остановить программу.
  4. Если результирующий файл существует, но не является регулярным файлом или ссылкой - сообщить об этом и остановить программу.
  5. Если результирующий файл не существует, то утилита либо копирует исходный файл (без опций), либо перемещает/переименовывает исходный файл (опция -m), либо создает жесткую ссылку (опция -h), либо создает символическую ссылку (опция -l)
  6. Если результирующий файл существует, то утилита сначала удаляет результирующий файл, а затем выполняет предыдущий пункт