pwd命令是列出当前的路径。
1 extern int pwd_main(int argc, char **argv)
2 {
3 static char *buf;
4
5 buf = xgetcwd(buf);
6
7 if (buf != NULL) {
8 puts(buf);
9 return EXIT_SUCCESS;
10 }
11 return EXIT_FAILURE;
12 }
通过xgetcwd函数将路径保存到buf中。
char *
xgetcwd (char *cwd)
{
char *ret;
unsigned path_max;
errno = 0;
path_max = (unsigned) PATH_MAX;
path_max += 2; /* The getcwd docs say to do this. */
if(cwd==0)
cwd = xmalloc (path_max);
errno = 0;
while ((ret = getcwd (cwd, path_max)) == NULL && errno == ERANGE) {
path_max += PATH_INCR;
cwd = xrealloc (cwd, path_max);
errno = 0;
}
if (ret == NULL) {
int save_errno = errno;
free (cwd);
errno = save_errno;
perror_msg("getcwd()");
return NULL;
}
return cwd;
}
通过getcwd()得到当前路径。
这个命令的实现很简单。记录一下。