On Wednesday 17 May 2017 05:08 PM, Rajula Vineet wrote:
Hi all,
I am working on improving pharo command line as a part of my GSoC project. I have been looking at different current working directory implementations. I have written a blog post <https://vineetreddy.wordpress.com/2017/05/17/pwd-vs-getcwd/> on it. It would be of great help, if you can take a look and give your feedback. Vineet,
Don't depend on getenv(). It is the parent (e.g. sh) which sets PWD to the current working directory before exec-ing your program. When a child process is spawned, the parent can decide not to pass this down to child. e.g. $ env -u PWD ./try Or, if the child process changes its working directory using chdir(), PWD will not change. e.g. --- try.c --- #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <limits.h> int main(int argc, char *argv[]) { char cwd[PATH_MAX]; for(;;) { if (getcwd(cwd, sizeof(cwd)) != NULL) printf("getcwd: %s\n", cwd); else perror("getcwd() error"); printf("PWD: %s\n", getenv("PWD")); if (argv[1]) { printf("chdir %s\n", argv[1]); chdir(argv[1]); argc--; argv++; } else break; } return 0; } ------- Regards .. Subbu