|
|
1.1 ! root 1: #ifndef lint ! 2: static char *sccsid = "@(#)scandir.c 1.3 (Berkeley) 6/26/87"; ! 3: #endif ! 4: ! 5: #include "common.h" ! 6: ! 7: /* ! 8: * scan_dir -- scan the current directory for news articles, ! 9: * loading the article numbers into art_array. Return ! 10: * number of articles loaded. ! 11: * ! 12: * Paramaters: "low_msg", "high_msg" are the low ! 13: * and high messages numbers in this ! 14: * group; we ignore numbers outside this ! 15: * range. ! 16: * ! 17: * Returns: Number of articles loaded into ! 18: * array. ! 19: * ! 20: * Side effects: Changes "art_array". ! 21: */ ! 22: ! 23: extern int intcmp(); ! 24: ! 25: scan_dir(low_msg, high_msg) ! 26: int low_msg, high_msg; ! 27: { ! 28: register struct direct *dirent; ! 29: register DIR *dirp; ! 30: int artnum; ! 31: ! 32: num_arts = 0; ! 33: ! 34: dirp = opendir("."); ! 35: ! 36: if (dirp == NULL) ! 37: return (0); ! 38: ! 39: while ((dirent = readdir(dirp)) != NULL) { ! 40: artnum = atoi(dirent->d_name); ! 41: if (artnum != 0 && artnum >= low_msg && artnum <= high_msg) ! 42: art_array[num_arts++] = artnum; ! 43: } ! 44: ! 45: closedir(dirp); ! 46: ! 47: qsort((char *) art_array, num_arts, sizeof(int), intcmp); ! 48: ! 49: return (num_arts); ! 50: } ! 51: ! 52: ! 53: /* ! 54: * intcmp -- compare to integers. ! 55: * ! 56: * Parameters: "x", "y" point to the integers to be compared. ! 57: * ! 58: * Returns: -1 if "x" is less than "y", ! 59: * 0 if "x" equals "y", and ! 60: * 1 if "x" is greater than "y". ! 61: * ! 62: * Side effects: None. ! 63: */ ! 64: ! 65: intcmp(x, y) ! 66: register int *x, *y; ! 67: { ! 68: return (*x - *y); ! 69: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.