- struct stat statb;
- DIR *dirp;
- char c;
- char *s;
- struct _dircontents *dp;
- char nbuf[MAXPATHLEN + 1];
-
- if (stat (name, &statb) < 0 || (statb.st_mode & S_IFMT) != S_IFDIR)
- return (DIR *) NULL;
- if (Newisnull (dirp, DIR))
- return (DIR *) NULL;
- if (*name && (c = name[strlen (name) - 1]) != '\\' && c != '/')
- (void) strcat (strcpy (nbuf, name), "\\*.*");
- else
- (void) strcat (strcpy (nbuf, name), "*.*");
- dirp->dd_loc = 0;
- mysetdta ();
- dirp->dd_contents = dirp->dd_cp = (struct _dircontents *) NULL;
- if ((s = getdirent (nbuf)) == (char *) NULL)
- return dirp;
- do
- {
- if (Newisnull (dp, struct _dircontents) || (dp->_d_entry =
- malloc ((unsigned) (strlen (s) + 1))) == (char *) NULL)
- {
- if (dp)
- free ((char *) dp);
- free_dircontents (dirp->dd_contents);
- return (DIR *) NULL;
- }
- if (dirp->dd_contents)
- dirp->dd_cp = dirp->dd_cp->_d_next = dp;
- else
- dirp->dd_contents = dirp->dd_cp = dp;
- (void) strcpy (dp->_d_entry, s);
- dp->_d_next = (struct _dircontents *) NULL;
- }
- while ((s = getdirent ((char *) NULL)) != (char *) NULL);
- dirp->dd_cp = dirp->dd_contents;
-
- return dirp;
+ struct stat statb;
+ DIR *dirp;
+ char c;
+ char *s;
+ struct _dircontents *dp;
+ char nbuf[MAXPATHLEN + 1];
+
+ if (stat(name, &statb) < 0 || (statb.st_mode & S_IFMT) != S_IFDIR)
+ return (DIR *) NULL;
+ if (Newisnull(dirp, DIR))
+ return (DIR *) NULL;
+ if (*name && (c = name[strlen(name) - 1]) != '\\' && c != '/')
+ (void) strcat(strcpy(nbuf, name), "\\*.*");
+ else
+ (void) strcat(strcpy(nbuf, name), "*.*");
+ dirp->dd_loc = 0;
+ mysetdta();
+ dirp->dd_contents = dirp->dd_cp = (struct _dircontents *) NULL;
+ if ((s = getdirent(nbuf)) == (char *) NULL)
+ return dirp;
+ do {
+ if (Newisnull(dp, struct _dircontents) || (dp->_d_entry =
+ malloc((unsigned) (strlen(s) + 1))) == (char *) NULL)
+ {
+ if (dp)
+ free((char *) dp);
+ free_dircontents(dirp->dd_contents);
+ return (DIR *) NULL;
+ }
+ if (dirp->dd_contents)
+ dirp->dd_cp = dirp->dd_cp->_d_next = dp;
+ else
+ dirp->dd_contents = dirp->dd_cp = dp;
+ (void) strcpy(dp->_d_entry, s);
+ dp->_d_next = (struct _dircontents *) NULL;
+ } while ((s = getdirent((char *) NULL)) != (char *) NULL);
+ dirp->dd_cp = dirp->dd_contents;
+
+ return dirp;