/* search-list.c

   Copyright (C) 2000-2021 Free Software Foundation, Inc.

   This file is part of GNU Binutils.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
   02110-1301, USA.  */

#include "gprof.h"
#include "libiberty.h"
#include "search_list.h"


void
search_list_append (Search_List *list, const char *paths)
{
  Search_List_Elem *new_el;
  const char *beg, *colon;
  unsigned int len;

  colon = paths - 1;
  do
    {
      beg = colon + 1;
      colon = strchr (beg, PATH_SEP_CHAR);

      if (colon)
	len = colon - beg;
      else
	len = strlen (beg);

      new_el = (Search_List_Elem *) xmalloc (sizeof (*new_el) + len);
      memcpy (new_el->path, beg, len);
      new_el->path[len] = '\0';

      /* Append new path at end of list.  */
      new_el->next = 0;

      if (list->tail)
	list->tail->next = new_el;
      else
	list->head = new_el;

      list->tail = new_el;
    }
  while (colon);
}
