- int speclen, len = prefixlen;
- char *n;
-
- for (;;) {
- if (!strcmp(entry, ".")) {
- entry++;
- break;
- }
- if (!strncmp(entry, "./", 2)) {
- entry += 2;
- continue;
- }
- if (!strncmp(entry, "../", 3)) {
- do {
- if (!len)
- die("'%s' is outside repository", *p);
- len--;
- } while (len && prefix[len-1] != '/');
- entry += 3;
- continue;
- }
- break;
- }
- speclen = strlen(entry);
- n = xmalloc(speclen + len + 1);
-
- memcpy(n, prefix, len);
- memcpy(n + len, entry, speclen+1);
- *p = n;