"Fossies" - the Fresh Open Source Software Archive

Member "cpio-2.13/gnu/strdup.c" (2 Jan 2017, 1336 Bytes) of package /linux/misc/cpio-2.13.tar.bz2:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "strdup.c" see the Fossies "Dox" file reference documentation and the latest Fossies "Diffs" side-by-side code changes report: 2.12_vs_2.13.

    1 /* Copyright (C) 1991, 1996-1998, 2002-2004, 2006-2007, 2009-2017 Free Software
    2    Foundation, Inc.
    3 
    4    This file is part of the GNU C Library.
    5 
    6    This program is free software; you can redistribute it and/or modify
    7    it under the terms of the GNU General Public License as published by
    8    the Free Software Foundation; either version 3, or (at your option)
    9    any later version.
   10 
   11    This program is distributed in the hope that it will be useful,
   12    but WITHOUT ANY WARRANTY; without even the implied warranty of
   13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   14    GNU General Public License for more details.
   15 
   16    You should have received a copy of the GNU General Public License along
   17    with this program; if not, see <http://www.gnu.org/licenses/>.  */
   18 
   19 #ifndef _LIBC
   20 # include <config.h>
   21 #endif
   22 
   23 /* Get specification.  */
   24 #include <string.h>
   25 
   26 #include <stdlib.h>
   27 
   28 #undef __strdup
   29 #ifdef _LIBC
   30 # undef strdup
   31 #endif
   32 
   33 #ifndef weak_alias
   34 # define __strdup strdup
   35 #endif
   36 
   37 /* Duplicate S, returning an identical malloc'd string.  */
   38 char *
   39 __strdup (const char *s)
   40 {
   41   size_t len = strlen (s) + 1;
   42   void *new = malloc (len);
   43 
   44   if (new == NULL)
   45     return NULL;
   46 
   47   return (char *) memcpy (new, s, len);
   48 }
   49 #ifdef libc_hidden_def
   50 libc_hidden_def (__strdup)
   51 #endif
   52 #ifdef weak_alias
   53 weak_alias (__strdup, strdup)
   54 #endif