int open_stream(mpg123_handle *fr, const char *bs_filenam, int fd) { int filept_opened = 1; int filept; /* descriptor of opened file/stream */ clear_icy(&fr->icy); /* can be done inside frame_clear ...? */ if(!bs_filenam) /* no file to open, got a descriptor (stdin) */ { filept = fd; filept_opened = 0; /* and don't try to close it... */ } #ifndef O_BINARY #define O_BINARY (0) #endif else if((filept = compat_open(bs_filenam, O_RDONLY|O_BINARY)) < 0) /* a plain old file to open... */ { if(NOQUIET) error2("Cannot open file %s: %s", bs_filenam, strerror(errno)); fr->err = MPG123_BAD_FILE; return MPG123_ERR; /* error... */ } /* now we have something behind filept and can init the reader */ fr->rdat.filelen = -1; fr->rdat.filept = filept; fr->rdat.flags = 0; if(filept_opened) fr->rdat.flags |= READER_FD_OPENED; return open_finish(fr); }
int open_stream_handle( mpg123_handle_t *fr, void *iohandle ) { fr->rdat.filelen = -1; fr->rdat.filept = -1; fr->rdat.iohandle = iohandle; fr->rdat.flags = 0; fr->rdat.flags |= READER_HANDLEIO; return open_finish( fr ); }
int open_stream_handle(mpg123_handle *fr, void *iohandle) { clear_icy(&fr->icy); /* can be done inside frame_clear ...? */ fr->rdat.filelen = -1; fr->rdat.filept = -1; fr->rdat.iohandle = iohandle; fr->rdat.flags = 0; fr->rdat.flags |= READER_HANDLEIO; return open_finish(fr); }