Removing some code duplication.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5550 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
master
Benno Schulenberg 2016-01-12 19:07:01 +00:00
parent 583b67bad2
commit cb832bef1b
2 changed files with 19 additions and 21 deletions

View File

@ -1,6 +1,7 @@
2016-01-12 Benno Schulenberg <bensberg@justemail.net>
* NEWS: Fix some typos and whitespace, and normalize the dates.
* src/files.c (load_poshistory): Rename a variable.
* src/files.c (load_poshistory): Remove some code duplication.
GNU nano 2.5.1 - 2016.01.11

View File

@ -3216,11 +3216,10 @@ void load_poshistory(void)
} else {
char *line = NULL, *lineptr, *xptr;
size_t buf_len = 0;
ssize_t read, lineno, xno;
poshiststruct *posptr;
ssize_t read;
poshiststruct *posptr, *newrecord;
/* Read and parse each line, and put the data into the
* positions history structure. */
/* Read and parse each line, and store the extracted data. */
while ((read = getline(&line, &buf_len, hist)) >= 0) {
if (read > 0 && line[read - 1] == '\n') {
read--;
@ -3230,25 +3229,23 @@ void load_poshistory(void)
unsunder(line, read);
lineptr = parse_next_word(line);
xptr = parse_next_word(lineptr);
lineno = atoi(lineptr);
xno = atoi(xptr);
if (poshistory == NULL) {
poshistory = (poshiststruct *)nmalloc(sizeof(poshiststruct));
poshistory->filename = mallocstrcpy(NULL, line);
poshistory->lineno = lineno;
poshistory->xno = xno;
poshistory->next = NULL;
} else {
for (posptr = poshistory; posptr->next != NULL; posptr = posptr->next)
;
posptr->next = (poshiststruct *)nmalloc(sizeof(poshiststruct));
posptr->next->filename = mallocstrcpy(NULL, line);
posptr->next->lineno = lineno;
posptr->next->xno = xno;
posptr->next->next = NULL;
/* Create a new position record. */
newrecord = (poshiststruct *)nmalloc(sizeof(poshiststruct));
newrecord->filename = mallocstrcpy(NULL, line);
newrecord->lineno = atoi(lineptr);
newrecord->xno = atoi(xptr);
newrecord->next = NULL;
/* Add the record to the list. */
if (poshistory == NULL)
poshistory = newrecord;
else {
for (posptr = poshistory; posptr->next != NULL;)
posptr = posptr->next;
posptr->next = newrecord;
}
}
fclose(hist);
free(line);
}