- case '.':
- if (strcmp(cp, DOT) == 0) {
- if (cp > f + 1)
- cp--;
- *cp = '\0';
- break;
- }
- if (strcmp(cp, DOTDOT) == 0) {
- for (cp -= 2; cp > f; cp--)
- if (*cp == '/')
- break;
- if (cp <= f)
- cp = f + 1;
- *cp = '\0';
- break;
- }
- if (strncmp(cp, PWD, NPWD) == 0) {
- for (dp = cp - 2; dp > f; dp--)
- if (*dp == '/')
- break;
- if (dp <= f)
- dp = f;
- strcpy(dp, cp + NPWD - 1);
- cp = dp;
- continue;
- }
- if (strncmp(cp, CWD, NCWD) == 0) {
- strcpy(cp - 1, cp + NCWD - 1);
- cp--;
- continue;
- }
- continue;