set the contents of a str (char */int)

crux-00011: $SRC/str/str_set.c

#include "str/str.h"

void
str_set (struct str * s, int l, char * c)
{
  struct str tmp = {0,};
  int x;

  if (str_overlaps (s, l, c))
    {
      tmp = *s;
      *s = (struct str){0,};
    }

  str_set_length (s, l);
  for (x = 0; x < l; ++x) s->s[x] = c[x];

  str_set_length (&tmp, 0);
  str_trim (&tmp);
}

/*

    This file is part of Crux.

    Crux 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.

    Crux 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 Crux.  If not, see <http://www.gnu.org/licenses/>.

*/