Rev 3461 | Rev 3481 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3461 | Rev 3480 | ||
|---|---|---|---|
| Line 73... | Line 73... | ||
| 73 | /* |
73 | /* |
| 74 | * Take a previously allocated string (s1), re-size it to accept s2 and copy |
74 | * Take a previously allocated string (s1), re-size it to accept s2 and copy |
| 75 | * the contents of s2 into s1. |
75 | * the contents of s2 into s1. |
| 76 | * Return -1 on failure, or the length of the copied string on success. |
76 | * Return -1 on failure, or the length of the copied string on success. |
| 77 | */ |
77 | */ |
| 78 | int cli_redup(char **s1, const char *s2) |
78 | size_t cli_redup(char **s1, const char *s2) |
| 79 | { |
79 | { |
| 80 | size_t len = strlen(s2) + 1; |
80 | size_t len = strlen(s2) + 1; |
| 81 | 81 | ||
| 82 | if (! len) |
82 | if (! len) |
| 83 | return -1; |
83 | return -1; |
| Line 90... | Line 90... | ||
| 90 | } |
90 | } |
| 91 | 91 | ||
| 92 | memset(*s1, 0, sizeof(*s1)); |
92 | memset(*s1, 0, sizeof(*s1)); |
| 93 | memcpy(*s1, s2, len); |
93 | memcpy(*s1, s2, len); |
| 94 | cli_errno = CL_EOK; |
94 | cli_errno = CL_EOK; |
| 95 | return (int) len; |
95 | return len; |
| 96 | } |
96 | } |
| 97 | 97 | ||
| 98 | /* An asprintf() for formatting paths, similar to asprintf() but ensures |
98 | /* An asprintf() for formatting paths, similar to asprintf() but ensures |
| 99 | * the returned allocated string is <= PATH_MAX. On failure, an attempt |
99 | * the returned allocated string is <= PATH_MAX. On failure, an attempt |
| 100 | * is made to return the original string (if not null) unmodified. |
100 | * is made to return the original string (if not null) unmodified. |