static int read_file_fgetc_psb(char* filename) { FILE* fp = fopen_or_die(filename); char* irs = "\n"; int irs_len = strlen(irs); string_builder_t sb; string_builder_t* psb = &sb; sb_init(&sb, STRING_BUILDER_INIT_SIZE); int bc = 0; while (TRUE) { char* line = read_line_fgetc_psb(fp, psb, irs, irs_len); if (line == NULL) break; bc += strlen(line); } fclose(fp); return bc; }
static int read_file_fgetc_psb(char* filename, int do_write) { FILE* fp = fopen_or_die(filename); string_builder_t* psb = sb_alloc(STRING_BUILDER_INIT_SIZE); char* irs = "\n"; int bc = 0; while (TRUE) { char* line = read_line_fgetc_psb(fp, psb, irs); if (line == NULL) break; if (do_write) { fputs(line, stdout); fputc('\n', stdout); } bc += strlen(line); free(line); } sb_free(psb); fclose(fp); return bc; }