-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathvstruti.cpp
More file actions
66 lines (54 loc) · 1.66 KB
/
vstruti.cpp
File metadata and controls
66 lines (54 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/****************************************************************************
#
# VSTRING Library
#
# Copyright (c) 1996-2026 Vladi Belperchinov-Shabanski "Cade"
# http://cade.noxrun.com/ <cade@noxrun.com> <cade@bis.bg> <cade@cpan.org>
#
# Distributed under the GPL license, you should receive copy of GPLv2!
#
# SEE 'README', 'LICENSE' OR 'COPYING' FILE FOR LICENSE AND OTHER DETAILS!
#
# VSTRING library provides wide set of string manipulation features
# including dynamic string object that can be freely exchanged with
# standard char* (or wchar_t*) type, so there is no need to change
# function calls nor the implementation when you change from
# char* to VString (and from wchar_t* to WString).
#
***************************************************************************/
#include "vstruti.h"
char* strncpyz( char *dst, const char *src, size_t dst_size )
{
if( dst_size == 0 )
return dst;
size_t len = strlen( src );
size_t cz = len < dst_size ? len : dst_size - 1;
memmove( dst, src, cz );
dst[cz] = '\0';
return dst;
}
char* strncatz( char *dst, const char *src, size_t dst_size )
{
if( dst_size == 0 ) return dst;
size_t dlen = strnlen( dst, dst_size );
if( dlen >= dst_size - 1 ) return dst;
return strncat( dst, src, dst_size - 1 - dlen );
}
VString& str_padw( VString& target, int len, char ch )
{
WString str;
str = target;
str_pad( str, len, wchar_t( ch ) );
target = str;
return target;
}
char* str_padw( char* target, int len, char ch )
{
WString str;
VString vvv;
str = target;
str_pad( str, len, wchar_t( ch ) );
vvv = str;
strcpy( target, vvv.data() );
return target;
}