8 static int has_dot_or_dotdot(char *path) {
18 if (*path == '.') path++;
27 while (*path && *path != '/') {
34 static void fillcwd(char *s, size_t n) {
38 fprintf(stderr, "pwd: path too long\n");
47 int main(int ac, char *av[]) {
54 for (arg=1; arg < ac; arg++) {
55 if (av[arg][0] == '-') {
56 if (av[arg][1] == 'P' && av[arg][2] == 0) {
58 } else if (av[arg][1] == 'L' && av[arg][2] == 0) {
62 fprintf(stderr, "usage: pwd [-L|-P]\n");
67 if (!getcwd(cwd, sizeof cwd)) {
70 fprintf(stderr, "pwd: path too long\n");
80 envpwd = getenv("PWD");
81 if (envpwd && !has_dot_or_dotdot(envpwd)) {
82 if (chdir(envpwd) != -1) {
83 fillcwd(cwd, sizeof cwd);
84 if (strcmp(cwd, envpwd)) {