root/replace/strndup.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. strndup

   1 #include <crm_internal.h>
   2 #include <stdlib.h>
   3 #include <string.h>
   4 /*
   5  * Copyright (C) 2004 Matt Soffen <sirgeek-ha@mrsucko.org>
   6  * This software licensed under the GNU LGPL.
   7  *
   8  * This library is free software; you can redistribute it and/or
   9  * modify it under the terms of the GNU Lesser General Public
  10  * License as published by the Free Software Foundation; either
  11  * version 2.1 of the License, or (at your option) any later version.
  12  * 
  13  * This library is distributed in the hope that it will be useful,
  14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16  * Lesser General Public License for more details.
  17  * 
  18  * You should have received a copy of the GNU Lesser General Public
  19  * License along with this library; if not, write to the Free Software
  20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  21  *
  22  */
  23 
  24 /* Taken from the GlibC implementation of strndup */
  25 
  26 char *
  27 strndup(const char *str, size_t len)
     /* [previous][next][first][last][top][bottom][index][help] */
  28 {
  29     size_t n = strnlen(str, len);
  30     char *new = (char *)malloc(len + 1);
  31 
  32     if (NULL == new) {
  33         return NULL;
  34     }
  35 
  36     new[n] = '\0';
  37     return (char *)memcpy(new, str, len);
  38 }

/* [previous][next][first][last][top][bottom][index][help] */