*** ../qmail-1.03/qmail-local.c	Mon Jun 15 13:53:16 1998
--- qmail-local.c	Tue Nov 14 02:16:46 2000
***************
*** 1,4 ****
--- 1,8 ----
  #include <sys/types.h>
  #include <sys/stat.h>
+ #include <stdio.h>
+ #include <dirent.h>
+ #include <unistd.h>
+ #include <strings.h>
  #include "readwrite.h"
  #include "sig.h"
***************
*** 42,45 ****
--- 46,51 ----
  { strerr_die5x(111,"Unable to open ",fn,": ",error_str(errno),". (#4.3.0)"); }
  
+ void myreaddir(char *myhomedir);
+ 
  int flagdoit;
  int flag99;
***************
*** 53,56 ****
--- 59,65 ----
  char *sender;
  char *aliasempty;
+ long total_bytes;
+ long total_blocks;
+ char myuser_tmp[255];
  
  stralloc safeext = {0};
***************
*** 460,463 ****
--- 469,475 ----
   char *x;
  
+ total_bytes=0;
+ total_blocks=0;
+ 
   umask(077);
   sig_pipeignore();
***************
*** 489,495 ****
   if (homedir[0] != '/') usage();
   if (chdir(homedir) == -1)
!    strerr_die5x(111,"Unable to switch to ",homedir,": ",error_str(errno),". (#4.3.0)");
   checkhome();
! 
   if (!env_put2("HOST",host)) temp_nomem();
   if (!env_put2("HOME",homedir)) temp_nomem();
--- 501,510 ----
   if (homedir[0] != '/') usage();
   if (chdir(homedir) == -1)
!    strerr_die5x(100,"Unable to switch to ",homedir,": ",error_str(errno),". (#4.3.0)");
   checkhome();
! strcpy(myuser_tmp,homedir);
! strcat(myuser_tmp,"/Maildir");
! myreaddir(myuser_tmp);
! if (total_bytes >= 8196 ) {strerr_die5x(100,"This user exceeds quota !!!!!",homedir,":"," ","");}
   if (!env_put2("HOST",host)) temp_nomem();
   if (!env_put2("HOME",homedir)) temp_nomem();
***************
*** 696,698 ****
--- 711,752 ----
   count_print();
   _exit(0);
+ }
+ 
+ void myreaddir(char *myhomedir){
+ {
+ /********************************************
+ qmail-quota patch
+ written by Levent Serinol 
+ ver 1.0 
+ Nov 14 2000
+ lserinol@yahoo.com
+ ********************************************/
+ int mystatus;
+ DIR *mydir;
+ struct stat mystat;
+ struct dirent *mydirent;
+ char mytmp[255];
+ mydir=opendir(myhomedir);
+ if (mydir == NULL) { return; }; /* Can't read, give up this file */
+ mydirent=readdir(mydir);
+ while ( mydirent != NULL )
+ {
+ mystatus=lstat(mydirent->d_name,&mystat);
+ if (mystatus != 0) { return; }; /* Can't get status, give up this file */
+ total_blocks=total_blocks+mystat.st_blksize;                      /* BLOCK SIZE OR BYTES */
+ total_bytes=total_bytes+mystat.st_size;
+ if ( S_ISDIR(mystat.st_mode)) {
+   if ( ( strncmp(mydirent->d_name,".",2) && strcmp(mydirent->d_name,"..") ) ) { 
+   strcpy(mytmp,myhomedir);
+   strcat(mytmp,"/");
+   strcat(mytmp,mydirent->d_name);
+  printf ("%s\n",mytmp); 
+   myreaddir(mytmp);
+   }
+ }
+ mydirent=readdir(mydir); 
+ }
+ closedir(mydir);
+ }
+ return;
  }

