27
27
D. J. Bernstein's reference implementation.
28
28
29
29
Example:
30
- if (netstring_read("3:foo,", 6 , &str, &len) < 0) explode_and_die ();
30
+ if (netstring_read(&buf, &buflen , &str, &len) < 0) failed ();
31
31
*/
32
32
int netstring_read (char * * pbuffer , size_t * pbuffer_length ,
33
33
char * * netstring_start , size_t * netstring_length ) {
@@ -93,52 +93,28 @@ size_t netstring_buffer_size(size_t data_length) {
93
93
return (size_t )numdigits (data_length ) + data_length + 2 ;
94
94
}
95
95
96
- /* Allocate and create a netstring containing the first `len` bytes of
97
- `data`. This must be manually freed by the client. If `len` is 0
98
- then no data will be read from `data`, and it may be NULL. */
99
- size_t netstring_encode_new (char * * netstring , char * data , size_t len ) {
100
- char * ns ;
101
- size_t num_len = 1 ;
102
-
103
- if (len == 0 ) {
104
- ns = malloc (3 );
105
- ns [0 ] = '0' ;
106
- ns [1 ] = ':' ;
107
- ns [2 ] = ',' ;
108
- } else {
109
- num_len = numdigits (len );
110
- ns = malloc (num_len + len + 2 );
111
- sprintf (ns , "%lu:" , (unsigned long )len );
112
- memcpy (ns + num_len + 1 , data , len );
113
- ns [num_len + len + 1 ] = ',' ;
114
- }
115
-
116
- * netstring = ns ;
117
- return num_len + len + 2 ;
118
- }
119
-
120
96
/* Allocate and create a netstring containing the first `len` bytes of
121
97
`data`. This must be manually freed by the client. If `len` is 0
122
98
then no data will be read from `data`, and it may be NULL.
123
99
Returns the netstring size not including the null terminator */
124
- size_t netstring_add_ex (char * * list , char * str , size_t len ) {
100
+ size_t netstring_add_ex (char * * netstring , char * data , size_t len ) {
125
101
size_t num_len , size_prev = 0 , size_next ;
126
102
char * ptr ;
127
103
128
- if (list == 0 || (len > 0 && str == 0 )) return 0 ;
104
+ if (netstring == 0 || (len > 0 && data == 0 )) return 0 ;
129
105
130
106
num_len = numdigits (len );
131
107
size_next = num_len + len + 2 ;
132
108
133
- if (* list == 0 ) {
109
+ if (* netstring == 0 ) {
134
110
ptr = malloc (size_next + 1 );
135
111
if (ptr == 0 ) return 0 ;
136
- * list = ptr ;
112
+ * netstring = ptr ;
137
113
} else {
138
- size_prev = strlen (* list );
139
- ptr = realloc (* list , size_prev + size_next + 1 );
114
+ size_prev = strlen (* netstring );
115
+ ptr = realloc (* netstring , size_prev + size_next + 1 );
140
116
if (ptr == 0 ) return 0 ;
141
- * list = ptr ;
117
+ * netstring = ptr ;
142
118
ptr += size_prev ;
143
119
}
144
120
@@ -147,13 +123,13 @@ size_t netstring_add_ex(char **list, char *str, size_t len) {
147
123
} else {
148
124
sprintf (ptr , "%lu:" , (unsigned long )len );
149
125
ptr += num_len + 1 ;
150
- memcpy (ptr , str , len );
126
+ memcpy (ptr , data , len );
151
127
ptr += len ; * ptr = ',' ;
152
128
ptr ++ ; * ptr = 0 ;
153
129
}
154
130
return size_prev + size_next ;
155
131
}
156
132
157
- size_t netstring_add (char * * list , char * str ) {
158
- return netstring_add_ex (list , str , strlen (str ));
133
+ size_t netstring_add (char * * netstring , char * data ) {
134
+ return netstring_add_ex (netstring , data , strlen (data ));
159
135
}
0 commit comments