|
|
|
@ -1477,3 +1477,44 @@ void dev_error(struct cgpu_info *dev, enum dev_reason reason)
@@ -1477,3 +1477,44 @@ void dev_error(struct cgpu_info *dev, enum dev_reason reason)
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Calloc enough memory to fit string s, rounding up to 4 byte alignment */ |
|
|
|
|
void *calloc_str(char *s) |
|
|
|
|
{ |
|
|
|
|
size_t len = strlen(s); |
|
|
|
|
void *ptr = NULL; |
|
|
|
|
|
|
|
|
|
if (!len) |
|
|
|
|
goto out; |
|
|
|
|
|
|
|
|
|
len += 1; |
|
|
|
|
if (len % 4) |
|
|
|
|
len += 4 - (len % 4); |
|
|
|
|
ptr = calloc(len, 1); |
|
|
|
|
if (unlikely(!ptr)) |
|
|
|
|
quit(1, "Failed to calloc ptr in calloc_str"); |
|
|
|
|
out: |
|
|
|
|
return ptr; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Realloc an existing string to fit an extra string s, appending s to it. */ |
|
|
|
|
void *realloc_strcat(char *ptr, char *s) |
|
|
|
|
{ |
|
|
|
|
size_t old = strlen(ptr), len = strlen(s); |
|
|
|
|
char *ret; |
|
|
|
|
|
|
|
|
|
if (!len) |
|
|
|
|
return ptr; |
|
|
|
|
|
|
|
|
|
len += old + 1; |
|
|
|
|
if (len % 4) |
|
|
|
|
len += 4 - (len % 4); |
|
|
|
|
|
|
|
|
|
ret = malloc(len); |
|
|
|
|
if (unlikely(!ret)) |
|
|
|
|
quit(1, "Failed to malloc in realloc_strcat"); |
|
|
|
|
|
|
|
|
|
sprintf(ret, "%s%s", ptr, s); |
|
|
|
|
free(ptr); |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|