fgetln() doesn't nul terminate, and thus requires malloc/copy for each interation (actually, *two* for whatis(1)).