int count;
int print;
-void
-lookup(char *cp) {
- register char *dp;
-
- for (dp = cp; *dp; dp++)
- continue;
- for (; dp > cp; dp--) {
- if (*dp == '.') {
- *dp = 0;
- break;
- }
- }
- for (dp = cp; *dp; dp++)
- if (*dp == '/')
- cp = dp + 1;
- if (uflag) {
- print = 0;
- count = 0;
- } else
- print = 1;
-again:
+int
+print_again(char *cp)
+{
if (print)
printf("%s:", cp);
if (sflag) {
looksrc(cp);
if (uflag && print == 0 && count != 1) {
print = 1;
- goto again;
+ return 1;
}
}
count = 0;
lookbin(cp);
if (uflag && print == 0 && count != 1) {
print = 1;
- goto again;
+ return 1;
}
}
count = 0;
lookman(cp);
if (uflag && print == 0 && count != 1) {
print = 1;
- goto again;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+void
+lookup(char *cp) {
+ register char *dp;
+
+ for (dp = cp; *dp; dp++)
+ continue;
+ for (; dp > cp; dp--) {
+ if (*dp == '.') {
+ *dp = 0;
+ break;
}
}
+ for (dp = cp; *dp; dp++)
+ if (*dp == '/')
+ cp = dp + 1;
+ if (uflag) {
+ print = 0;
+ count = 0;
+ } else
+ print = 1;
+
+ while (print_again(cp))
+ /* all in print_again() */ ;
+
if (print)
printf("\n");
}
struct stat statbuf;
dd = strchr(dir, '*');
- if (!dd)
- goto noglob;
+ if (!dd) {
+ dirp = opendir(dir);
+ if (dirp == NULL)
+ return;
+ while ((dp = readdir(dirp)) != NULL) {
+ if (itsit(cp, dp->d_name)) {
+ count++;
+ if (print)
+ printf(" %s/%s", dir, dp->d_name);
+ }
+ }
+ closedir(dirp);
+ return;
+ }
l = strlen(dir);
if (l < sizeof(dirbuf)) { /* refuse excessively long names */
}
return;
- noglob:
- dirp = opendir(dir);
- if (dirp == NULL)
- return;
- while ((dp = readdir(dirp)) != NULL) {
- if (itsit(cp, dp->d_name)) {
- count++;
- if (print)
- printf(" %s/%s", dir, dp->d_name);
- }
- }
- closedir(dirp);
}
int