mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 14:04:26 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			908 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			908 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
| --- a/backport-include/linux/string.h
 | |
| +++ b/backport-include/linux/string.h
 | |
| @@ -25,4 +25,8 @@ extern void *memdup_user_nul(const void
 | |
|  void memzero_explicit(void *s, size_t count);
 | |
|  #endif
 | |
|  
 | |
| +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0))
 | |
| +ssize_t strscpy(char *dest, const char *src, size_t count);
 | |
| +#endif
 | |
| +
 | |
|  #endif /* __BACKPORT_LINUX_STRING_H */
 | |
| --- a/compat/backport-4.3.c
 | |
| +++ b/compat/backport-4.3.c
 | |
| @@ -57,3 +57,29 @@ void seq_hex_dump(struct seq_file *m, co
 | |
|  	}
 | |
|  }
 | |
|  EXPORT_SYMBOL_GPL(seq_hex_dump);
 | |
| +
 | |
| +ssize_t strscpy(char *dest, const char *src, size_t count)
 | |
| +{
 | |
| +	long res = 0;
 | |
| +
 | |
| +	if (count == 0)
 | |
| +		return -E2BIG;
 | |
| +
 | |
| +	while (count) {
 | |
| +		char c;
 | |
| +
 | |
| +		c = src[res];
 | |
| +		dest[res] = c;
 | |
| +		if (!c)
 | |
| +			return res;
 | |
| +		res++;
 | |
| +		count--;
 | |
| +	}
 | |
| +
 | |
| +	/* Hit buffer length without finding a NUL; force NUL-termination. */
 | |
| +	if (res)
 | |
| +		dest[res-1] = '\0';
 | |
| +
 | |
| +	return -E2BIG;
 | |
| +}
 | |
| +EXPORT_SYMBOL_GPL(strscpy);
 |