Fossil SCM

Add fossil_strndup() function to duplicate a string that is not necessarily NUL-terminated

andygoth 2016-11-05 05:45 andygoth-timeline-ms
Commit b98776679e613d1a85dd2150e4b991f4ab654c7d
1 file changed +10 -2
+10 -2
--- src/import.c
+++ src/import.c
@@ -76,18 +76,26 @@
7676
} gg;
7777
7878
/*
7979
** Duplicate a string.
8080
*/
81
-char *fossil_strdup(const char *zOrig){
81
+char *fossil_strndup(const char *zOrig, int len){
8282
char *z = 0;
8383
if( zOrig ){
84
- int n = strlen(zOrig);
84
+ int n;
85
+ if( len<0 ){
86
+ n = strlen(zOrig);
87
+ }else{
88
+ for( n=0; zOrig[n] && n<len; ++n );
89
+ }
8590
z = fossil_malloc( n+1 );
8691
memcpy(z, zOrig, n+1);
8792
}
8893
return z;
94
+}
95
+char *fossil_strdup(const char *zOrig){
96
+ return fossil_strndup(zOrig, -1);
8997
}
9098
9199
/*
92100
** A no-op "xFinish" method
93101
*/
94102
--- src/import.c
+++ src/import.c
@@ -76,18 +76,26 @@
76 } gg;
77
78 /*
79 ** Duplicate a string.
80 */
81 char *fossil_strdup(const char *zOrig){
82 char *z = 0;
83 if( zOrig ){
84 int n = strlen(zOrig);
 
 
 
 
 
85 z = fossil_malloc( n+1 );
86 memcpy(z, zOrig, n+1);
87 }
88 return z;
 
 
 
89 }
90
91 /*
92 ** A no-op "xFinish" method
93 */
94
--- src/import.c
+++ src/import.c
@@ -76,18 +76,26 @@
76 } gg;
77
78 /*
79 ** Duplicate a string.
80 */
81 char *fossil_strndup(const char *zOrig, int len){
82 char *z = 0;
83 if( zOrig ){
84 int n;
85 if( len<0 ){
86 n = strlen(zOrig);
87 }else{
88 for( n=0; zOrig[n] && n<len; ++n );
89 }
90 z = fossil_malloc( n+1 );
91 memcpy(z, zOrig, n+1);
92 }
93 return z;
94 }
95 char *fossil_strdup(const char *zOrig){
96 return fossil_strndup(zOrig, -1);
97 }
98
99 /*
100 ** A no-op "xFinish" method
101 */
102

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button