Se você stat
um descritor de arquivo e o tamanho for reportado como 0, o arquivo estará vazio ou o tamanho será desconhecido. Se o arquivo estiver vazio, não há muito sentido em jogar para lê-lo com mais eficiência.
Assim, se o tamanho for desconhecido, você terá que usar seu caminho de código alternativo e, se o arquivo estiver vazio, não será um problema usar o caminho de código alternativo.
Eu alertaria contra a tentativa de diagnosticar o tipo de arquivo apenas com base no nome do arquivo, já que isso o abrirá a um ataque (ou bug) de isca e comutador. Você não deve tentar descobrir nada até abrir o arquivo com êxito e, em seguida, certifique-se de usar o descritor de arquivo, direta ou indiretamente, em vez do nome, porque o nome pode não estar mais associado ao arquivo. mesmo arquivo.
Espero que ajude.