mirror of
				https://gitlab.com/sortix/sortix.git
				synced 2023-02-13 20:55:38 -05:00 
			
		
		
		
	Add strndup(3).
This commit is contained in:
		
							parent
							
								
									fd088903dd
								
							
						
					
					
						commit
						e80f765fbf
					
				
					 3 changed files with 41 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -111,6 +111,7 @@ strncasecmp.o \
 | 
			
		|||
strncat.o \
 | 
			
		||||
strncmp.o \
 | 
			
		||||
strncpy.o \
 | 
			
		||||
strndup.o \
 | 
			
		||||
strnlen.o \
 | 
			
		||||
strpbrk.o \
 | 
			
		||||
strrchr.o \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,6 +52,7 @@ size_t strlen(const char*);
 | 
			
		|||
char* strncat(char* restrict, const char* restrict, size_t);
 | 
			
		||||
int strncmp(const char*, const char*, size_t);
 | 
			
		||||
char* strncpy(char* restrict, const char* restrict, size_t);
 | 
			
		||||
char* strndup(const char*, size_t);
 | 
			
		||||
size_t strnlen(const char*, size_t);
 | 
			
		||||
char* strpbrk(const char*, const char*);
 | 
			
		||||
char* strrchr(const char*, int);
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +67,6 @@ void* memccpy(void* restrict, const void* restrict, int, size_t);
 | 
			
		|||
int strcoll_l(const char*, const char*, locale_t);
 | 
			
		||||
char* strerror_l(int, locale_t);
 | 
			
		||||
int strerror_r(int, char*, size_t);
 | 
			
		||||
char* strndup(const char*, size_t);
 | 
			
		||||
char* strsignal(int);
 | 
			
		||||
size_t strxfrm(char* restrict, const char* restrict, size_t);
 | 
			
		||||
size_t strxfrm_l(char* restrict, const char* restrict, size_t, locale_t);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										39
									
								
								libc/strndup.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								libc/strndup.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,39 @@
 | 
			
		|||
/*******************************************************************************
 | 
			
		||||
 | 
			
		||||
	Copyright(C) Jonas 'Sortie' Termansen 2011, 2012.
 | 
			
		||||
 | 
			
		||||
	This file is part of the Sortix C Library.
 | 
			
		||||
 | 
			
		||||
	The Sortix C Library is free software: you can redistribute it and/or modify
 | 
			
		||||
	it under the terms of the GNU Lesser General Public License as published by
 | 
			
		||||
	the Free Software Foundation, either version 3 of the License, or (at your
 | 
			
		||||
	option) any later version.
 | 
			
		||||
 | 
			
		||||
	The Sortix C Library 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 Lesser General Public
 | 
			
		||||
	License for more details.
 | 
			
		||||
 | 
			
		||||
	You should have received a copy of the GNU Lesser General Public License
 | 
			
		||||
	along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
	strndup.cpp
 | 
			
		||||
	Creates a copy of a string.
 | 
			
		||||
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
extern "C" char* strndup(const char* input, size_t n)
 | 
			
		||||
{
 | 
			
		||||
	size_t inputsize = strlen(input);
 | 
			
		||||
	if ( n < inputsize )
 | 
			
		||||
		inputsize = n;
 | 
			
		||||
	char* result = (char*) malloc(inputsize + 1);
 | 
			
		||||
	if ( !result )
 | 
			
		||||
		return NULL;
 | 
			
		||||
	memcpy(result, input, inputsize);
 | 
			
		||||
	result[inputsize] = 0;
 | 
			
		||||
	return result;
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue