wp-includes/ID3/getid3.php:2326string|false protected function fgets() { // must be able to handle CR/LF/CRLF but not read more than one lineend $buffer = ''; // final string we will return $prevchar = ''; // save previously-read character for end-of-line checking if ($this->data_string_flag) { while (true) { $thischar = substr($this->data_string, $this->data_string_position++, 1); if (($prevchar == "\r") && ($thischar != "\n")) { // read one byte too many, back up $this->data_string_position--; break; } $buffer .= $thischar; if ($thischar == "\n") { break; } if ($this->data_string_position >= $this->data_string_length) { // EOF break; } $prevchar = $thischar; } } else { // Ideally we would just use PHP's fgets() function, however... // it does not behave consistently with regards to mixed line endings, may be system-dependent // and breaks entirely when given a file with mixed \r vs \n vs \r\n line endings (e.g. some PDFs) //return fgets($this->getid3->fp); while (true) { $thischar = fgetc($this->getid3->fp); if (($prevchar == "\r") && ($thischar != "\n")) { // read one byte too many, back up fseek($this->getid3->fp, -1, SEEK_CUR); break; } $buffer .= $thischar; if ($thischar == "\n") { break; } if (feof($this->getid3->fp)) { break; } $prevchar = $thischar; } } return $buffer; }Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
src/wp-includes/ID3/getid3.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.