home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / unixtools / ls / ls_c < prev   
Text File  |  1992-07-21  |  1KB  |  77 lines

  1. static char sccs_id[] = "@(#) ls.c (c) James Noad 12-April-1991";
  2.  
  3. #include <stdio.h>
  4. #include <dirent.h>
  5. #include <sys/dirent.h>
  6.  
  7. int showdir(char *dir);
  8.  
  9. int main(int argc,char **argv)
  10. {
  11. DIR *currdir;
  12. struct direct *ch;
  13.  
  14. int objects = 0,size = 0, tmp,tmpp;
  15. int count = 0, grandcount = 0;
  16.  
  17. if(argc < 2)
  18. {
  19. printf("\nDirectory %s contains %d objects\n", "@", showdir("@"));
  20. return(0);
  21. }
  22.  
  23. for(tmpp=1;tmpp<argc;tmpp++)
  24. {
  25. if((count = showdir(argv[tmpp])) < 0)
  26. {
  27. count = 0;
  28. printf("Can't open directory %s\n",argv[tmpp]);
  29. }
  30. else
  31. {
  32. printf("\nDirectory %s contains %d objects\n", argv[tmpp], count);
  33. grandcount = grandcount + count;
  34. }
  35. }
  36. if(argc > 2)
  37. {
  38. printf("Grand total of %d objects\n",grandcount);
  39. }
  40. return(0);
  41. }
  42.  
  43. int showdir(char *dir)
  44. {
  45. DIR *currdir;
  46. struct direct *ch;
  47. int tmp,objects = 0;
  48. printf("\n");
  49. if((currdir = opendir(dir)) == NULL)
  50. {
  51. return(-1);
  52. }
  53.  
  54. while((ch = readdir(currdir)) != NULL)
  55. {
  56. objects++;
  57. printf("%s",ch->d_name);
  58. if(!(objects % 7))
  59. {
  60. printf("\n");
  61. }
  62. else
  63. {
  64. for(tmp = MAXNAMLEN - strlen(ch->d_name) + 1; tmp > 0; tmp--)
  65. {
  66. printf(" ");
  67. }
  68. }
  69. }
  70. if(objects % 7)
  71. {
  72. printf("\n");
  73. }
  74. closedir(currdir);
  75. return(objects);
  76. }
  77.