This patch fixes a problem with readdir() not correctly creating
pseudo-directories for mount paths which include our path.  For
instance, if you have a mount path of the console driver to /dev/cons,
when you chdir to /dev and list files, you should get "cons".  This
worked for chdir'ing to / and seeing "dev", but not for the former.
This patch fixes that.
*** c:/tmp/T0AA.AAA	Mon Aug 16 18:20:04 1993
--- libc/dir.c	Mon Aug 16 18:14:02 1993
***************
*** 21,52 ****
--- 21,76 ----
  DIR *
  opendir(char *path)
  {
          DIR *d;
          char *p;
          extern char *__cwd;
  
          /*
+ 	 * Bogus.
+ 	 */
+ 	if (!path || !path[0]) {
+ 		return(0);
+ 	}
+ 
+ 	/*
           * Get private, writable copy of path.  Flatten to absolute.
           */
          if (path[0] == '/') {
                  p = strdup(path);
          } else {
                  p = malloc(strlen(path) + strlen(__cwd) + 1);
                  if (p ) {
                          sprintf(p, "%s/%s", __cwd, path);
                  }
          }
+ 
          if (p == 0) {
                  return(0);
          }
          if (__dotdot(p)) {
                  free(p);
                  return(0);
+ 	}
+ 
+ 	/*
+ 	 * All directory paths should end in "/".  Add one if
+ 	 * it isn't present.
+ 	 */
+ 	if (p && (p[strlen(p)-1] != '/')) {
+ 		char *q;
+ 
+ 		q = realloc(p, strlen(p)+2);
+ 		if (!q) {
+ 			free(p);
+ 			return(0);
+ 		}
+ 		p = q;
+ 		strcat(p, "/");
          }
  
          /*
           * Get a DIR
           */
          d = malloc(sizeof(DIR));
          if (d == 0) {
                  free(p);
Received on Tue Aug 17 21:26:40 1993
This archive was generated by hypermail 2.1.8 : Wed Sep 21 2005 - 19:37:12 PDT