- for(offset=0 ; offset < dirsize ; offset += BUFSIZ) { /* each block */
- dsize = BUFSIZ<(dirsize-offset)? BUFSIZ: (dirsize-offset);
- if(!dir) {
- if((dir=open(".", 0))<0) {
- fprintf(stderr, "find: cannot open < %s >\n",
- name);
- rv = 0;
- goto ret;
- }
- if(offset) lseek(dir, (long)offset, 0);
- if(read(dir, (char *)dentry, dsize)<0) {
- fprintf(stderr, "find: cannot read < %s >\n",
- name);
- rv = 0;
- goto ret;
- }
- if(dir > 10) {
- close(dir);
- dir = 0;
- }
- } else
- if(read(dir, (char *)dentry, dsize)<0) {
- fprintf(stderr, "find: cannot read < %s >\n",
- name);
- rv = 0;
- goto ret;
- }
- for(dp=dentry, entries=dsize>>4; entries; --entries, ++dp) { /* each directory entry */
- if(dp->d_ino==0
- || (dp->d_name[0]=='.' && dp->d_name[1]=='\0')
- || (dp->d_name[0]=='.' && dp->d_name[1]=='.' && dp->d_name[2]=='\0'))
- continue;
- c1 = endofname;
- *c1++ = '/';
- c2 = dp->d_name;
- for(i=0; i<14; ++i)
- if(*c2)
- *c1++ = *c2++;
- else
- break;
- *c1 = '\0';
- if(c1 == endofname) { /* ?? */
- rv = 0;
- goto ret;
- }
- Fname = endofname+1;
- if(!descend(name, Fname, exlist)) {
- *endofname = '\0';
- chdir(Home);
- if(chdir(Pathname) == -1) {
- fprintf(stderr, "find: bad directory tree\n");
- exit(1);
- }
+ if ((dir = opendir(".")) == NULL) {
+ fprintf(stderr, "find: cannot open < %s >\n", name);
+ rv = 0;
+ goto ret;
+ }
+ for (dp = readdir(dir); dp != NULL; dp = readdir(dir)) {
+ if ((dp->d_name[0]=='.' && dp->d_name[1]=='\0') ||
+ (dp->d_name[0]=='.' && dp->d_name[1]=='.' && dp->d_name[2]=='\0'))
+ continue;
+ c1 = endofname;
+ *c1++ = '/';
+ strcpy(c1, dp->d_name);
+ Fname = endofname+1;
+ if(!descend(name, Fname, exlist)) {
+ *endofname = '\0';
+ chdir(Home);
+ if(chdir(Pathname) == -1) {
+ fprintf(stderr, "find: bad directory tree\n");
+ exit(1);