| 163 | if (n <= 0) |
| 164 | break; |
| 165 | |
| 166 | offset += n; |
| 167 | str->append(buffer.data(), n); |
| 168 | } |
| 169 | |
| 170 | return _error == 0; |
| 171 | } |
| 172 | |
| 173 | bool KittyIOFile::readToBuffer(std::vector<char> *buf) |
| 174 | { |
| 175 | _error = 0; |
| 176 | |
| 177 | if (!buf) |
| 178 | return false; |
| 179 | |
| 180 | buf->clear(); |
| 181 | |
| 182 | auto s = info(); |
| 183 | if (_error == 0 && s.st_size > 0) |
| 184 | { |
| 185 | buf->resize(static_cast<size_t>(s.st_size)); |
| 186 | ssize_t n = pread(0, buf->data(), static_cast<size_t>(s.st_size)); |
| 187 | if (n > 0) |
| 188 | { |
| 189 | if (n != static_cast<ssize_t>(s.st_size)) |
| 190 | { |
| 191 | buf->resize(static_cast<size_t>(n)); |
| 192 | } |
| 193 | return true; |
| 194 | } |
| 195 | |
| 196 | buf->clear(); |
| 197 | } |
no test coverage detected