Andreas Schwab schrieb am Sa., 23. Sep. 2017 um 13:30 Uhr: > On Sep 23 2017, Eli Zaretskii wrote: > > >> +/* Return the current working directory. The result should be freed > >> + with 'free'. Return NULL on errors. */ > >> +char * > >> +emacs_get_current_dir_name (void) > >> +{ > >> + char *dir = emacs_get_current_dir_name_1 (); > >> + if (dir == NULL) > >> + return NULL; > >> + /* On Linux, getcwd and get_current_dir_name return a string > >> + starting with "(unreachable)" if the current directory doesn't > >> + exist, e.g. because it was unmounted. Treat that as an error. > >> + See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27871. */ > >> + const char *prefix = "(unreachable)"; > >> + size_t dir_len = strlen (dir); > >> + size_t prefix_len = strlen (prefix); > >> + if (dir_len >= prefix_len && strncmp (dir, prefix, prefix_len) == 0) > >> + { > >> + errno = ENOTCONN; > >> + return NULL; > > > > What if there's a directory called literally "(unreachable)SOMETHING"? > > An absolute file name cannot start with "(unreachable)". > > Yes, and getcwd and friends only return absolute filenames, and we only use $PWD if it's absolute, so anything except '/' or a drive letter can't be a prefix in the success case. I'll add a comment to that effect.