commit - e6b8b8905c5a1967c31bf6b8abed6d6b05fbff14
commit + 9bdd68dd5c8e79a94fa4a5a69064ba33acd0b27a
blob - 2cd2c5fefcbd23e58b1bef2416f1cf6133544a8e
blob + 61d4adb174d110fe882057a3c36a2e479560f756
--- lib/reference.c
+++ lib/reference.c
{
const struct got_error *err = NULL;
char *abs_refname;
- char *line;
- size_t len;
- const char delim[3] = {'\0', '\0', '\0'};
+ char *line = NULL;
+ size_t linesize = 0;
+ ssize_t linelen;
int i, ref_is_absolute = (strncmp(refname, "refs/", 5) == 0);
*ref = NULL;
if (ref_is_absolute)
abs_refname = (char *)refname;
do {
- line = fparseln(f, &len, NULL, delim, 0);
- if (line == NULL) {
+ linelen = getline(&line, &linesize, f);
+ if (linelen == -1) {
if (feof(f))
break;
err = got_ferror(f, GOT_ERR_BAD_REF_DATA);
break;
}
+ if (linelen > 0 && line[linelen - 1] == '\n')
+ line[linelen - 1] = '\0';
for (i = 0; i < nsubdirs; i++) {
if (!ref_is_absolute &&
asprintf(&abs_refname, "refs/%s/%s", subdirs[i],
if (err || *ref != NULL)
break;
}
- free(line);
if (err)
break;
} while (*ref == NULL);
+ free(line);
return err;
}
char *packed_refs_path, *path_refs = NULL;
char *abs_namespace = NULL;
char *buf = NULL, *ondisk_ref_namespace = NULL;
+ char *line = NULL;
FILE *f = NULL;
struct got_reference *ref;
struct got_reflist_entry *new;
f = fopen(packed_refs_path, "r");
free(packed_refs_path);
if (f) {
- char *line;
- size_t len;
- const char delim[3] = {'\0', '\0', '\0'};
+ size_t linesize;
+ ssize_t linelen;
for (;;) {
- line = fparseln(f, &len, NULL, delim, 0);
- if (line == NULL) {
+ linelen = getline(&line, &linesize, f);
+ if (linelen == -1) {
if (feof(f))
break;
err = got_ferror(f, GOT_ERR_BAD_REF_DATA);
goto done;
}
+ if (linelen > 0 && line[linelen - 1] == '\n')
+ line[linelen - 1] = '\0';
err = parse_packed_ref_line(&ref, NULL, line);
- free(line);
if (err)
goto done;
if (ref) {
done:
free(abs_namespace);
free(buf);
+ free(line);
free(path_refs);
if (f && fclose(f) != 0 && err == NULL)
err = got_error_from_errno("fclose");
const struct got_error *err = NULL, *unlock_err = NULL;
struct got_lockfile *lf = NULL;
FILE *f = NULL, *tmpf = NULL;
- char *packed_refs_path, *tmppath = NULL;
+ char *line = NULL, *packed_refs_path, *tmppath = NULL;
struct got_reflist_head refs;
int found_delref = 0;
goto done;
}
for (;;) {
- char *line;
- size_t len;
- const char delim[3] = {'\0', '\0', '\0'};
+ size_t linesize;
+ ssize_t linelen;
struct got_reference *ref;
struct got_reflist_entry *new;
- line = fparseln(f, &len, NULL, delim, 0);
- if (line == NULL) {
+ linelen = getline(&line, &linesize, f);
+ if (linelen == -1) {
if (feof(f))
break;
err = got_ferror(f, GOT_ERR_BAD_REF_DATA);
goto done;
}
+ if (linelen > 0 && line[linelen - 1] == '\n')
+ line[linelen - 1] = '\0';
err = parse_packed_ref_line(&ref, NULL, line);
- free(line);
if (err)
goto done;
if (ref == NULL)
}
free(tmppath);
free(packed_refs_path);
+ free(line);
got_ref_list_free(&refs);
return err ? err : unlock_err;
}
blob - 38c6dc6f1c93d31c2b51ea0514de0fbd09d5dfc3
blob + 5dfe5fbfdef7f0419e78c3302df7d292acfa2f2e
--- lib/worktree.c
+++ lib/worktree.c
GOT_DIFF_CONFLICT_MARKER_END
};
int i = 0;
- char *line;
- size_t len;
- const char delim[3] = {'\0', '\0', '\0'};
+ char *line = NULL;
+ size_t linesize = 0;
+ ssize_t linelen;
while (*status == GOT_STATUS_MODIFY) {
- line = fparseln(f, &len, NULL, delim, 0);
- if (line == NULL) {
+ linelen = getline(&line, &linesize, f);
+ if (linelen == -1) {
if (feof(f))
break;
err = got_ferror(f, GOT_ERR_IO);
i++;
}
}
+ free(line);
return err;
}