modify error output API: use perror() instead of fprintf()+strerror()