in source/linux/network.c [103:143]
int read_proc_net_from_file(
struct aws_byte_buf *out_buf,
struct aws_allocator *allocator,
size_t size_hint,
const char *filename) {
AWS_ZERO_STRUCT(*out_buf);
int return_value = AWS_OP_ERR;
if (aws_byte_buf_init(out_buf, allocator, size_hint)) {
return aws_raise_error(aws_last_error());
}
FILE *fp = fopen(filename, "r");
if (fp) {
size_t read = fread(out_buf->buffer, 1, out_buf->capacity, fp);
out_buf->len += read;
while (read == size_hint) {
int aws_error = 0;
if (AWS_OP_SUCCESS != (aws_error = aws_byte_buf_reserve_relative(out_buf, size_hint))) {
return_value = aws_error;
goto cleanup;
}
read = fread(out_buf->buffer + out_buf->len, 1, size_hint, fp);
size_hint += size_hint;
}
if (ferror(fp)) {
return_value = aws_translate_and_raise_io_error(errno);
goto cleanup;
}
return_value = AWS_OP_SUCCESS;
}
cleanup:
fclose(fp);
if (AWS_OP_SUCCESS != return_value) {
aws_byte_buf_clean_up_secure(out_buf);
return aws_raise_error(return_value);
}
return return_value;
}