platform independent file open