- char *t = raw_line + start;
-
- /* Remove the zsh history prefix */
-
- if(zsh_history && *t == ':') {
- while(*t && *t != ';') t++;
- if(*t == ';') t++;
- }
-
- /* Remove the bash history prefix */
-
- if(bash_history) {
- while(*t == ' ') t++;
- while(*t >= '0' && *t <= '9') t++;
- while(*t == ' ') t++;
- }
-
- /* Check for duplicates with the hash table and insert the line in
- the list if necessary */
-
- int dup;
-
- if(hash_table) {
- dup = test_and_add(t, *nb_lines, lines, hash_table, hash_table_size);
- } else {
- dup = -1;
- }
-
- if(dup < 0) {
- lines[*nb_lines] = (char *) malloc((strlen(t) + 1) * sizeof(char));
- strcpy(lines[*nb_lines], t);
- } else {
- /* The string was already in there, so we do not allocate a new
- string but use the pointer to the first occurence of it */
- lines[*nb_lines] = lines[dup];
- lines[dup] = 0;
- }
-
- (*nb_lines)++;
+ store_line(hash_table, raw_line + start,
+ nb_lines_max, nb_lines, lines);