| 106 | static char *xstrdup(const char *s) { |
| 107 | size_t n = strlen(s); |
| 108 | char *p = xmalloc(n + 1); |
| 109 | memcpy(p, s, n + 1); |
| 110 | return p; |
| 111 | } |
| 112 | |
| 113 | static char *xstrndup(const char *s, size_t n) { |
| 114 | char *p = xmalloc(n + 1); |
| 115 | memcpy(p, s, n); |
| 116 | p[n] = '\0'; |
| 117 | return p; |
| 118 | } |
| 119 | |
| 120 | static char *path_join(const char *a, const char *b) { |
| 121 | const size_t na = strlen(a); |
no test coverage detected