// returns 0 if everything's OK // return -1 if error int AmAudioFile::open(const string& filename, OpenMode mode, bool is_tmp) { close(); this->close_on_exit = true; on_close_done = false; FILE* n_fp = NULL; string f_name = filename; string subtype = getSubtype(f_name); if(!is_tmp){ n_fp = fopen(f_name.c_str(),mode == AmAudioFile::Read ? "r" : "w+"); if(!n_fp){ if(mode == AmAudioFile::Read) ERROR("file not found: %s\n",f_name.c_str()); else ERROR("could not create/overwrite file: %s\n",f_name.c_str()); return -1; } } else { n_fp = tmpfile(); if(!n_fp){ ERROR("could not create temporary file: %s\n",strerror(errno)); return -1; } } return fpopen_int(f_name, mode, n_fp, subtype); }
int AmAudioFile::fpopen(const string& filename, OpenMode mode, FILE* n_fp) { close(); on_close_done = false; string f_name = filename; string subtype = getSubtype(f_name); return fpopen_int(f_name, mode, n_fp, subtype); }
int AmAudioFile::fpopen(const string& filename, OpenMode mode, FILE* n_fp) { close(); on_close_done = false; return fpopen_int(filename, mode, n_fp); }