GETCWD(3) BSD Programmer's Manual GETCWD(3) NNAAMMEE ggeettwwdd - get working directory pathname SSYYNNOOPPSSIISS ##iinncclluuddee <<ssttddiioo..hh>> _c_h_a_r _* ggeettccwwdd(_c_h_a_r _*_b_u_f, _s_i_z_e___t _s_i_z_e); _c_h_a_r _* ggeettwwdd(_c_h_a_r _*_b_u_f); DDEESSCCRRIIPPTTIIOONN The ggeettccwwdd() function copies the absolute pathname of the current working directory into the memory referenced by _b_u_f and returns a pointer to _b_u_f. The _s_i_z_e argument is the size, in bytes, of the array referenced by _b_u_f. If _b_u_f is NULL, space is allocated as necessary to store the pathname. This space may later be free(3)'d. The function ggeettwwdd() is a compatibility routine which calls ggeettccwwdd() with its _b_u_f argument and a size of MAXPATHLEN (as defined in the include file <_s_y_s_/_p_a_r_a_m_._h>). Obviously, _b_u_f should be at least MAXPATHLEN bytes in length. These routines have traditionally been used by programs to save the name of a working directory for the purpose of returning to it. A much faster and less error-prone method of accomplishing this is to open the current directory (`.') and use the fchdir(2) function to return. RREETTUURRNN VVAALLUUEESS Upon successful completion, a pointer to the pathname is returned. Oth- erwise a NULL pointer is returned and the global variable _e_r_r_n_o is set to indicate the error. In addition, ggeettwwdd() copies the error message asso- ciated with _e_r_r_n_o into the memory referenced by _b_u_f. EERRRROORRSS The ggeettccwwdd() function will fail if: [EACCESS] Read or search permission was denied for a component of the pathname. [EINVAL] The _s_i_z_e argument is zero. [ENOENT] A component of the pathname no longer exists. [ENOMEM] Insufficient memory is available. [ERANGE] The _s_i_z_e argument is greater than zero but smaller than the length of the pathname plus 1. SSEEEE AALLSSOO chdir(2), fchdir(2), malloc(3), strerror(3) SSTTAANNDDAARRDDSS The ggeettccwwdd() function conforms to ANSI C X3.159-1989 (``ANSI C ''). The ability to specify a NULL pointer and have ggeettccwwdd() allocate memory as necessary is an extension. HHIISSTTOORRYY The ggeettwwdd() function appeared in 4.0BSD. BBUUGGSS The ggeettwwdd() function does not do sufficient error checking and is not able to return very long, but valid, paths. It is provided for compati- bility. 4.2 Berkeley Distribution June 4, 1993 2