xref: /onnv-gate/usr/src/lib/libast/common/string/strdup.c (revision 12068:08a39a083754)
1  /***********************************************************************
2  *                                                                      *
3  *               This software is part of the ast package               *
4  *          Copyright (c) 1985-2010 AT&T Intellectual Property          *
5  *                      and is licensed under the                       *
6  *                  Common Public License, Version 1.0                  *
7  *                    by AT&T Intellectual Property                     *
8  *                                                                      *
9  *                A copy of the License is available at                 *
10  *            http://www.opensource.org/licenses/cpl1.0.txt             *
11  *         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
12  *                                                                      *
13  *              Information and Software Systems Research               *
14  *                            AT&T Research                             *
15  *                           Florham Park NJ                            *
16  *                                                                      *
17  *                 Glenn Fowler <gsf@research.att.com>                  *
18  *                  David Korn <dgk@research.att.com>                   *
19  *                   Phong Vo <kpv@research.att.com>                    *
20  *                                                                      *
21  ***********************************************************************/
22  #pragma prototyped
23  
24  #undef	VMDEBUG
25  #define	VMDEBUG		0
26  
27  #include <ast.h>
28  
29  /*
30   * return a copy of s using malloc
31   */
32  
33  #if defined(__EXPORT__)
34  #define extern	__EXPORT__
35  #endif
36  
37  extern char*
strdup(register const char * s)38  strdup(register const char* s)
39  {
40  	register char*	t;
41  	register int	n;
42  
43  	return (s && (t = newof(0, char, n = strlen(s) + 1, 0))) ? (char*)memcpy(t, s, n) : (char*)0;
44  }
45