busybox源码剖析(2)---pwd.c

时间:2022-06-18 18:48:39

     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()得到当前路径。

       这个命令的实现很简单。记录一下。