home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / sarg1221.zip / totday.c < prev    next >
C/C++ Source or Header  |  2002-10-08  |  2KB  |  109 lines

  1. /*
  2.  * sarg - Squid user management log
  3.  * Mar/98 - Pedro L Orso - orso@onda.com.br
  4.  */
  5.  
  6. #include "include/conf.h"
  7.  
  8. void totaliza_day(const char *dirname, char *user, int indexonly)
  9. {
  10.  
  11.    FILE *fp_in, *fp_ou;
  12.       
  13.    char data[20];
  14.    char hora[20];
  15.    char min[20];
  16.    char elap[20];
  17.    char odata[20];
  18.    char ohora[20];
  19.    char oelap[20];
  20.    char hm[20];
  21.    char ohm[20];
  22.    char csort[255];
  23.    char wdirname[MAXLEN];
  24.    char sortout[MAXLEN];
  25.    char arqout[MAXLEN];
  26.    int  regs=0;
  27.    long long int telap=0;
  28.    long long int tused=0;
  29.  
  30.    if(indexonly) return;
  31.    if(strstr(ReportType,"users_sites") == 0) return;
  32.  
  33.    sprintf(wdirname,"%s/%s.htmp",dirname,user);
  34.    sprintf(arqout,"%s/%s.day",dirname,user);
  35.    sprintf(sortout,"%s/%s.sort",dirname,user);
  36.  
  37.    sprintf(csort, SORT" -k 1,1 -k 2,2 -o %s %s",sortout,wdirname);
  38.    system(csort);
  39.  
  40.    unlink(wdirname);
  41.  
  42.    if((fp_in=fopen(sortout,"r"))==NULL) {
  43.      fprintf(stderr, "SARG: (totday) %s: %s\n",text[8],sortout);
  44.      exit(1);
  45.    }
  46.  
  47.    if((fp_ou=fopen(arqout,"w"))==NULL) {
  48.      fprintf(stderr, "SARG: (totday) %s: %s\n",text[8],arqout);
  49.      exit(1);
  50.    }
  51.  
  52.    while(fgets(buf,sizeof(buf),fp_in)!=NULL) {
  53.       if(strstr(buf,"\n") != 0)
  54.          buf[strlen(buf)-1]='\0';
  55.          
  56.       getword(data,buf,' ');
  57.       getword(hora,buf,':');
  58.       getword(min,buf,':');
  59.       getword(elap,buf,' ');
  60.       strcpy(elap,buf);
  61.       sprintf(hm,"%s%s",hora,min);
  62.  
  63.       if(!regs) {
  64.          strcpy(odata,data);
  65.          strcpy(ohora,hora);
  66.          strcpy(oelap,elap);
  67.          strcpy(ohm,hm);
  68.          regs++;
  69.       }
  70.  
  71.       if(strcmp(hora,ohora) != 0) {
  72. //         if(tused > telap)
  73. //            tused=telap;
  74.  
  75.          my_lltoa(telap,val1,15);
  76.          sprintf(buf,"%s %s %s\n",odata,ohora,val1);
  77.          fputs(buf, fp_ou);
  78.          strcpy(odata,data);
  79.          strcpy(ohora,hora);
  80.          strcpy(ohm,hm);
  81.          telap=0;
  82.          tused=0;
  83.       }
  84.  
  85.       if(strcmp(ohm,hm) != 0) {
  86.          tused+=60000;
  87.          strcpy(ohm,hm);
  88.       }
  89.  
  90.       telap+=my_atoll(elap);
  91.           
  92.    }
  93.  
  94.    if(tused > telap)
  95.       tused=telap;
  96.  
  97.    my_lltoa(telap,val1,15);
  98.    sprintf(buf,"%s %s %s\n",data,hora,val1);
  99.    fputs(buf, fp_ou);
  100.  
  101.    fclose(fp_in);
  102.    fclose(fp_ou);
  103.  
  104.    unlink(sortout);
  105.  
  106.    return;
  107.  
  108. }
  109.