25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
26 * POSSIBILITY OF SUCH DAMAGE. |
26 * POSSIBILITY OF SUCH DAMAGE. |
27 */ |
27 */ |
28 |
28 |
29 #include "utils.h" |
29 #include "utils.h" |
30 #include "math.h" |
30 #include <math.h> |
31 |
31 |
32 /* COPY FUCNTIONS */ |
32 /* COPY FUCNTIONS */ |
33 void* ucx_strcpy(void* s, void* data) { |
33 void* ucx_strcpy(void* s, void* data) { |
34 char *str = (char*) s; |
34 char *str = (char*) s; |
35 size_t n = 1+strlen(str); |
35 size_t n = 1+strlen(str); |
41 void* ucx_memcpy(void* m, void* n) { |
41 void* ucx_memcpy(void* m, void* n) { |
42 size_t k = *((size_t*)n); |
42 size_t k = *((size_t*)n); |
43 void *cpy = malloc(k); |
43 void *cpy = malloc(k); |
44 memcpy(cpy, m, k); |
44 memcpy(cpy, m, k); |
45 return cpy; |
45 return cpy; |
|
46 } |
|
47 |
|
48 size_t ucx_stream_copy(void *src, void *dest, read_func readfnc, |
|
49 write_func writefnc, char* buf, size_t bufsize, size_t n) { |
|
50 if(n == 0 || bufsize == 0) { |
|
51 return 0; |
|
52 } |
|
53 |
|
54 size_t ncp = 0; |
|
55 if (!buf) { |
|
56 buf = (char*)malloc(bufsize); |
|
57 if(buf == NULL) { |
|
58 return 0; |
|
59 } |
|
60 } |
|
61 |
|
62 size_t r; |
|
63 size_t rn = bufsize > n ? n : bufsize; |
|
64 while((r = readfnc(buf, 1, rn, src)) != 0) { |
|
65 r = writefnc(buf, 1, r, dest); |
|
66 ncp += r; |
|
67 n -= r; |
|
68 rn = bufsize > n ? n : bufsize; |
|
69 if(r == 0 || n == 0) { |
|
70 break; |
|
71 } |
|
72 } |
|
73 |
|
74 free(buf); |
|
75 return ncp; |
46 } |
76 } |
47 |
77 |
48 /* COMPARE FUNCTION */ |
78 /* COMPARE FUNCTION */ |
49 |
79 |
50 int ucx_strcmp(void *s1, void *s2, void *data) { |
80 int ucx_strcmp(void *s1, void *s2, void *data) { |