lcd_erase_line() is called with argument, but the argument is ignored by lcd_erase_line().
If comparison between signed char(-128 ~ +127) and DIR_NAME_DELETED(uint8_t const 0XE5, it's +229), it makes incorrect result.
diagonal_rod hadn't been used anywhere.