gstr.c
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <int.h>
00022
00023
00024
00025
00026
00027
00028
00029 void _asn1_str_cat( char* dest, size_t dest_tot_size, const char* src) {
00030 size_t str_size = strlen(src);
00031 size_t dest_size = strlen(dest);
00032
00033 if ( dest_tot_size - dest_size > str_size) {
00034 strcat( dest, src);
00035 } else {
00036 if ( dest_tot_size - dest_size > 0) {
00037 strncat( dest, src, (dest_tot_size - dest_size) -1);
00038 dest[dest_tot_size-1] = 0;
00039 }
00040 }
00041 }
00042
00043 void _asn1_str_cpy( char* dest, size_t dest_tot_size, const char* src) {
00044 size_t str_size = strlen(src);
00045
00046 if ( dest_tot_size > str_size) {
00047 strcpy( dest, src);
00048 } else {
00049 if ( dest_tot_size > 0) {
00050 strncpy( dest, src, (dest_tot_size) -1);
00051 dest[dest_tot_size-1] = 0;
00052 }
00053 }
00054 }
00055
00056 void _asn1_mem_cpy( char* dest, size_t dest_tot_size, const char* src, size_t src_size)
00057 {
00058
00059 if ( dest_tot_size >= src_size) {
00060 memcpy( dest, src, src_size);
00061 } else {
00062 if ( dest_tot_size > 0) {
00063 memcpy( dest, src, dest_tot_size);
00064 }
00065 }
00066 }
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077