updated errno handling