]> git.pld-linux.org Git - packages/webalizer.git/blob - 05_apache_logio.diff
- rel 2; add gettext back (from debian); someone could merge it to master
[packages/webalizer.git] / 05_apache_logio.diff
1 From: Jose Carlos Medeiros <debian@psabs.com.br>
2 Subject: Added logio support for new apache2 mod_logio logfiles
3
4 Origin: http://www.rexursive.com/software/apache.html
5
6 This is based on previous patch [1] already adapted from the original patch [2]
7 to integrate with other patches in debian package.
8 A fix for upstream patch [3] is integrated.
9 The patch was ported to webalizer 2.21-02
10 by Julien Viard de Galbert <julien@vdg.blogsite.org>
11 And later adapted to webalizer 2.23-03 with the help
12 from Pim van den Berg <pim@nethuis.nl>, Thanks !
13
14  1: 05_apache_logio.dpatch by Jose Carlos Medeiros <debian@psabs.com.br>
15  2: ftp://ftp.rexursive.com/pub/webalizer/webalizer-in-out.patch.gz
16  3: ftp://ftp.rexursive.com/pub/webalizer/webalizer-in-out-fix.patch.gz
17
18 Index: webalizer/README.FIRST
19 ===================================================================
20 --- webalizer.orig/README.FIRST 2011-04-18 23:54:32.000000000 +0200
21 +++ webalizer/README.FIRST      2011-04-18 23:56:44.000000000 +0200
22 @@ -19,3 +19,12 @@
23  in the subject. Please do not send HTML formatted e-mails or e-mail
24  containing HTML tags as my mail server will reject them.  Thanks!
25  
26 +###################  SUMMARY 05_apache_logio  ##########################
27 +
28 +##################
29 +# This Webalizer 2.01-10 patch intoduces necessary logic for presenting the
30 +# numbers collected by mod_logio in the reports. There are no special
31 +# configuration options required, just patch the Webalizer, configure it 
32 +# with the options you prefer, build it, install it and use it.
33 +##################
34 +
35 Index: webalizer/graphs.c
36 ===================================================================
37 --- webalizer.orig/graphs.c     2011-04-18 23:54:32.000000000 +0200
38 +++ webalizer/graphs.c  2011-04-18 23:56:44.000000000 +0200
39 @@ -51,6 +51,8 @@
40  #define FILECOLOR  file_or_blue            /* files               */
41  #define SITECOLOR  site_or_orange          /* sites               */
42  #define KBYTECOLOR kbyte_or_red            /* KBytes              */
43 +#define IKBYTECOLOR file_or_blue           /* In KBytes           */
44 +#define OKBYTECOLOR hit_or_green           /* Out KBytes          */
45  #define PAGECOLOR  page_or_cyan            /* Files               */
46  #define VISITCOLOR visit_or_yellow         /* Visits              */
47  
48 @@ -106,7 +108,7 @@
49  {
50  
51     /* local variables */
52 -   int i,j,x1,y1,x2;
53 +   int i,j,k,x1,y1,x2;
54     int s_mth,s_year=0;
55     float cw,cs,co,ci;
56  
57 @@ -139,10 +141,24 @@
58     {
59        /* Kbytes Legend */
60        i = (strlen(msg_h_xfer)*6);
61 -      gdImageString(im,gdFontSmall,491-i,237,
62 +      j = (strlen(msg_h_ixfer)*6);
63 +      k = (strlen(msg_h_oxfer)*6);
64 +      gdImageString(im,gdFontSmall,491-i-j-k-24,237,
65                      (unsigned char *)msg_h_xfer,dkgrey);
66 -      gdImageString(im,gdFontSmall,490-i,236,
67 +      gdImageString(im,gdFontSmall,490-i-j-k-24,236,
68                      (unsigned char *)msg_h_xfer,KBYTECOLOR);
69 +      gdImageString(im,gdFontSmall,491-k-j-21,237,"/",dkgrey);
70 +      gdImageString(im,gdFontSmall,490-k-j-21,236,"/",black);
71 +      gdImageString(im,gdFontSmall,491-k-j-12,237,
72 +                    (unsigned char *)msg_h_ixfer,dkgrey);
73 +      gdImageString(im,gdFontSmall,490-k-j-12,236,
74 +                    (unsigned char *)msg_h_ixfer,IKBYTECOLOR);
75 +      gdImageString(im,gdFontSmall,491-k-9,237,"/",dkgrey);
76 +      gdImageString(im,gdFontSmall,490-k-9,236,"/",black);
77 +      gdImageString(im,gdFontSmall,491-k,237,
78 +                    (unsigned char *)msg_h_oxfer,dkgrey);
79 +      gdImageString(im,gdFontSmall,490-k,236,
80 +                    (unsigned char *)msg_h_oxfer,OKBYTECOLOR);
81  
82        /* Sites/Visits Legend */
83        i = (strlen(msg_h_visits)*6);
84 @@ -303,28 +319,56 @@
85     }
86  
87     fmaxval=0.0;
88 -   for (i=s_mth; i<HISTSIZE; i++)
89 +   for (i=s_mth; i<HISTSIZE; i++){
90         if (data[i].xfer > fmaxval) fmaxval = data[i].xfer;
91 +       if (data[i].ixfer > fmaxval) fmaxval = data[i].ixfer;
92 +       if (data[i].oxfer > fmaxval) fmaxval = data[i].oxfer;
93 +   }
94     if (fmaxval <= 0.0) fmaxval = 1.0;
95     sprintf(maxvaltxt, "%.0f", fmaxval);
96     gdImageStringUp(im, gdFontSmall,493,130+(strlen(maxvaltxt)*6),
97                     (unsigned char *)maxvaltxt,black);
98  
99 -   cs = 180.0/graph_mths; cw = (cs/2)+(co/2);
100 -   ci = 308+((cw-co)/2);
101 +   cs = 180.0/graph_mths; cw = (cs/2);
102 +   co = (36/graph_mths<1)?1:36/graph_mths;
103 +   ci = 308+((cw-2*co)/2);
104  
105     /* xfer */
106     for (i=s_mth; i<HISTSIZE; i++)
107     {
108        percent = ((float)data[i].xfer / (float)fmaxval);
109        if (percent <= 0.0) continue;
110 -      x1 = ci+ ((i-s_mth)*cs);
111 +      x1 = ci + ((i-s_mth)*cs);
112        x2 = x1 + cw;
113        y1 = 232 - (percent * 98);
114        gdImageFilledRectangle(im, x1, y1, x2, 232, KBYTECOLOR);
115        if (cw>2) gdImageRectangle(im, x1, y1, x2, 232, black);
116     }
117  
118 +   /* ixfer */
119 +   for (i=s_mth; i<HISTSIZE; i++)
120 +   {
121 +      percent = ((float)data[i].ixfer / (float)fmaxval);
122 +      if (percent <= 0.0) continue;
123 +      x1 = ci + co + ((i-s_mth)*cs);
124 +      x2 = x1 + cw;
125 +      y1 = 232 - (percent * 98);
126 +      gdImageFilledRectangle(im, x1, y1, x2, 232, IKBYTECOLOR);
127 +      if (cw>2) gdImageRectangle(im, x1, y1, x2, 232, black);
128 +   }
129 +
130 +   /* oxfer */
131 +   for (i=s_mth; i<HISTSIZE; i++)
132 +   {
133 +      percent = ((float)data[i].oxfer / (float)fmaxval);
134 +      if (percent <= 0.0) continue;
135 +      x1 = ci + co + co + ((i-s_mth)*cs);
136 +      x2 = x1 + cw;
137 +      y1 = 232 - (percent * 98);
138 +      gdImageFilledRectangle(im, x1, y1, x2, 232, OKBYTECOLOR);
139 +      if (cw>2) gdImageRectangle(im, x1, y1, x2, 232, black);
140 +   }
141 +
142     /* stat the file */
143     if ( !(lstat(fname, &out_stat)) )
144     {
145 @@ -365,8 +409,10 @@
146                   u_int64_t  data2[31],     /* data2 (files)      */
147                   u_int64_t  data3[31],     /* data3 (sites)      */
148                   double     data4[31],     /* data4 (kbytes)     */
149 -                 u_int64_t  data5[31],     /* data5 (views)      */
150 -                 u_int64_t  data6[31])     /* data6 (visits)     */
151 +                 double     data5[31],     /* data4 (kbytes)     */
152 +                 double     data6[31],     /* data4 (kbytes)     */
153 +                 u_int64_t  data7[31],     /* data5 (views)      */
154 +                 u_int64_t  data8[31])     /* data6 (visits)     */
155  {
156  
157     /* local variables */
158 @@ -415,7 +461,7 @@
159     {
160         if (data1[i] > maxval) maxval = data1[i];           /* get max val    */
161         if (data2[i] > maxval) maxval = data2[i];
162 -       if (data5[i] > maxval) maxval = data5[i];
163 +       if (data7[i] > maxval) maxval = data7[i];
164     }
165     if (maxval <= 0) maxval = 1;
166     sprintf(maxvaltxt, "%llu", maxval);
167 @@ -425,22 +471,36 @@
168     if (graph_legend)                           /* Print color coded legends? */
169     {
170        /* Kbytes Legend */
171 +      i=(strlen(msg_h_xfer)*6);
172 +      j=(strlen(msg_h_ixfer)*6);
173        gdImageStringUp(im,gdFontSmall,494,376,
174                        (unsigned char *)msg_h_xfer,dkgrey);
175        gdImageStringUp(im,gdFontSmall,493,375,
176                        (unsigned char *)msg_h_xfer,KBYTECOLOR);
177 +      gdImageStringUp(im,gdFontSmall,494,376-i-3,"/",dkgrey);
178 +      gdImageStringUp(im,gdFontSmall,493,375-i-3,"/",black);
179 +      gdImageStringUp(im,gdFontSmall,494,376-i-12,
180 +                      (unsigned char *)msg_h_ixfer,dkgrey);
181 +      gdImageStringUp(im,gdFontSmall,493,375-i-12,
182 +                      (unsigned char *)msg_h_ixfer,IKBYTECOLOR);
183 +      gdImageStringUp(im,gdFontSmall,494,376-i-j-15,"/",dkgrey);
184 +      gdImageStringUp(im,gdFontSmall,493,375-i-j-15,"/",black);
185 +      gdImageStringUp(im,gdFontSmall,494,376-i-j-24,
186 +                      (unsigned char *)msg_h_oxfer,dkgrey);
187 +      gdImageStringUp(im,gdFontSmall,493,375-i-j-24,
188 +                      (unsigned char *)msg_h_oxfer,OKBYTECOLOR);
189  
190        /* Sites/Visits Legend */
191        i = (strlen(msg_h_sites)*6);
192 -      gdImageStringUp(im,gdFontSmall,494,276,
193 +      gdImageStringUp(im,gdFontSmall,494,256,
194                        (unsigned char *)msg_h_sites,dkgrey);
195 -      gdImageStringUp(im,gdFontSmall,493,275,
196 +      gdImageStringUp(im,gdFontSmall,493,255,
197                        (unsigned char *)msg_h_sites,SITECOLOR);
198 -      gdImageStringUp(im,gdFontSmall,494,276-i-3,(unsigned char *)"/",dkgrey);
199 -      gdImageStringUp(im,gdFontSmall,493,275-i-3,(unsigned char *)"/",black);
200 -      gdImageStringUp(im,gdFontSmall,494,276-i-12,
201 +      gdImageStringUp(im,gdFontSmall,494,256-i-3,(unsigned char *)"/",dkgrey);
202 +      gdImageStringUp(im,gdFontSmall,493,255-i-3,(unsigned char *)"/",black);
203 +      gdImageStringUp(im,gdFontSmall,494,256-i-12,
204                        (unsigned char *)msg_h_visits,dkgrey);
205 -      gdImageStringUp(im,gdFontSmall,493,275-i-12,
206 +      gdImageStringUp(im,gdFontSmall,493,255-i-12,
207                        (unsigned char *)msg_h_visits,VISITCOLOR);
208  
209        /* Pages/Files/Hits Legend */
210 @@ -489,11 +549,11 @@
211        gdImageRectangle(im, x1, y1, x2, 176, black);
212     }
213  
214 -   /* data5 */
215 +   /* data7 */
216     for (i=0; i<31; i++)
217     {
218 -      if (data5[i]==0) continue;
219 -      percent = ((float)data5[i] / (float)maxval);
220 +      if (data7[i]==0) continue;
221 +      percent = ((float)data7[i] / (float)maxval);
222        if (percent <= 0.0) continue;
223        x1 = 29 + (i*15);
224        x2 = x1 + 7;
225 @@ -507,7 +567,7 @@
226     for (i=0; i<31; i++)
227     {
228        if (data3[i]>maxval) maxval = data3[i];
229 -      if (data6[i]>maxval) maxval = data6[i];
230 +      if (data8[i]>maxval) maxval = data8[i];
231     }
232     if (maxval <= 0) maxval = 1;
233     sprintf(maxvaltxt, "%llu", maxval);
234 @@ -517,7 +577,7 @@
235     /* data 6 */
236     for (i=0; i<31; i++)
237     {
238 -      percent = ((float)data6[i] / (float)maxval);
239 +      percent = ((float)data8[i] / (float)maxval);
240        if (percent <= 0.0) continue;
241        x1 = 25 + (i*15);
242        x2 = x1 + 8;
243 @@ -538,26 +598,55 @@
244        gdImageRectangle(im, x1, y1, x2, 276, black);
245     }
246  
247 -   /* data4 */
248 +   /* xfer */
249     fmaxval=0.0;
250 -   for (i=0; i<31; i++)
251 +   for (i=0; i<31; i++){
252        if (data4[i]>fmaxval) fmaxval = data4[i];
253 +      if (data5[i]>fmaxval) fmaxval = data5[i];
254 +      if (data6[i]>fmaxval) fmaxval = data6[i];
255 +   }
256     if (fmaxval <= 0.0) fmaxval = 1.0;
257     sprintf(maxvaltxt, "%.0f", fmaxval/1024);
258     gdImageStringUp(im, gdFontSmall,8,280+(strlen(maxvaltxt)*6),
259                     (unsigned char *)maxvaltxt, black);
260     
261 +   /* data4 */
262     for (i=0; i<31; i++)
263     {
264        percent = data4[i] / fmaxval;
265        if (percent <= 0.0) continue;
266 -      x1 = 26 + (i*15);
267 -      x2 = x1 + 10;
268 +      x1 = 25 + (i*15);
269 +      x2 = x1 + 7;
270        y1 = 375 - ( percent * 91 );
271        gdImageFilledRectangle(im, x1, y1, x2, 375, KBYTECOLOR);
272        gdImageRectangle(im, x1, y1, x2, 375, black);
273     }
274  
275 +   /* data5 */
276 +   for (i=0; i<31; i++)
277 +   {
278 +      percent = data5[i] / fmaxval;
279 +      if (percent <= 0.0) continue;
280 +      x1 = 27 + (i*15);
281 +      x2 = x1 + 7;
282 +      y1 = 375 - ( percent * 91 );
283 +      gdImageFilledRectangle(im, x1, y1, x2, 375, IKBYTECOLOR);
284 +      gdImageRectangle(im, x1, y1, x2, 375, black);
285 +   }
286 +
287 +   /* data6 */
288 +   for (i=0; i<31; i++)
289 +   {
290 +      percent = data6[i] / fmaxval;
291 +      if (percent <= 0.0) continue;
292 +      x1 = 29 + (i*15);
293 +      x2 = x1 + 7;
294 +      y1 = 375 - ( percent * 91 );
295 +      gdImageFilledRectangle(im, x1, y1, x2, 375, OKBYTECOLOR);
296 +      gdImageRectangle(im, x1, y1, x2, 375, black);
297 +   }
298 +
299 +
300     /* stat the file */
301     if ( !(lstat(fname, &out_stat)) )
302     {
303 Index: webalizer/graphs.h
304 ===================================================================
305 --- webalizer.orig/graphs.h     2011-04-18 23:54:32.000000000 +0200
306 +++ webalizer/graphs.h  2011-04-18 23:56:44.000000000 +0200
307 @@ -2,7 +2,8 @@
308  #define _GRAPHS_H
309  
310  extern int  month_graph6(char *, char *, int, int, u_int64_t *,
311 -             u_int64_t *, u_int64_t *, double *, u_int64_t *, u_int64_t *);
312 +             u_int64_t *, u_int64_t *, double *, double *, double *, u_int64_t *,
313 +             u_int64_t *);
314  extern int  year_graph6x(char *, char *, struct hist_rec *);
315  extern int  day_graph3(char *, char *, u_int64_t *, u_int64_t *, u_int64_t *);
316  extern int  pie_chart(char *, char *, u_int64_t, u_int64_t *, char **);
317 Index: webalizer/hashtab.c
318 ===================================================================
319 --- webalizer.orig/hashtab.c    2011-04-18 23:54:39.000000000 +0200
320 +++ webalizer/hashtab.c 2011-04-18 23:56:44.000000000 +0200
321 @@ -155,6 +155,8 @@
322                 u_int64_t count, /* hit count */
323                 u_int64_t file,  /* File flag */
324                 double    xfer,  /* xfer size */
325 +               double    ixfer, /* in xfer size */
326 +               double    oxfer, /* out xfer size */
327                 u_int64_t *ctr,  /* counter   */
328                 u_int64_t visit, /* visits    */
329                 u_int64_t tstamp,/* timestamp */
330 @@ -177,6 +179,8 @@
331           nptr->count = count;
332           nptr->files = file;
333           nptr->xfer  = xfer;
334 +         nptr->ixfer = ixfer;
335 +         nptr->oxfer = oxfer;
336           nptr->next  = NULL;
337           htab[hval] = nptr;
338           if (type!=OBJ_GRP) (*ctr)++;
339 @@ -219,9 +223,11 @@
340              if ((type==cptr->flag)||((type!=OBJ_GRP)&&(cptr->flag!=OBJ_GRP)))
341              {
342                 /* found... bump counter */
343 -               cptr->count+=count;
344 -               cptr->files+=file;
345 -               cptr->xfer +=xfer;
346 +               cptr->count +=count;
347 +               cptr->files +=file;
348 +               cptr->xfer  +=xfer;
349 +               cptr->ixfer +=ixfer;
350 +               cptr->oxfer +=oxfer;
351  
352                 if (ispage(log_rec.url))
353                 {
354 @@ -253,6 +259,8 @@
355           nptr->count = count;
356           nptr->files = file;
357           nptr->xfer  = xfer;
358 +         nptr->ixfer = ixfer;
359 +         nptr->oxfer = oxfer;
360           nptr->next  = htab[hval];
361           htab[hval]=nptr;
362           if (type!=OBJ_GRP) (*ctr)++;
363 @@ -361,6 +369,7 @@
364  /*********************************************/
365  
366  int put_unode(char *str, int type, u_int64_t count, double xfer,
367 +              double ixfer, double oxfer,
368                u_int64_t *ctr, u_int64_t entry, u_int64_t exit, UNODEPTR *htab)
369  {
370     UNODEPTR cptr,nptr;
371 @@ -378,6 +387,8 @@
372           nptr->flag = type;
373           nptr->count= count;
374           nptr->xfer = xfer;
375 +         nptr->ixfer= ixfer;
376 +         nptr->oxfer= oxfer;
377           nptr->next = NULL;
378           nptr->entry= entry;
379           nptr->exit = exit;
380 @@ -395,8 +406,10 @@
381              if ((type==cptr->flag)||((type!=OBJ_GRP)&&(cptr->flag!=OBJ_GRP)))
382              {
383                 /* found... bump counter */
384 -               cptr->count+=count;
385 -               cptr->xfer += xfer;
386 +               cptr->count +=count;
387 +               cptr->xfer  += xfer;
388 +               cptr->ixfer += ixfer;
389 +               cptr->oxfer += oxfer;
390                 return 0;
391              }
392           }
393 @@ -408,6 +421,8 @@
394           nptr->flag = type;
395           nptr->count= count;
396           nptr->xfer = xfer;
397 +         nptr->ixfer= ixfer;
398 +         nptr->oxfer= oxfer;
399           nptr->next = htab[hval];
400           nptr->entry= entry;
401           nptr->exit = exit;
402 @@ -846,6 +861,8 @@
403                 u_int64_t count, /* hit count */
404                 u_int64_t file,  /* File flag */
405                 double    xfer,  /* xfer size */
406 +               double    ixfer, /* in xfer size */
407 +               double    oxfer, /* out xfer size */
408                 u_int64_t *ctr,  /* counter   */
409                 u_int64_t visit, /* visits    */
410                 u_int64_t tstamp,/* timestamp */
411 @@ -867,6 +884,8 @@
412           nptr->count = count;
413           nptr->files = file;
414           nptr->xfer  = xfer;
415 +         nptr->ixfer = ixfer;
416 +         nptr->oxfer = oxfer;
417           nptr->next  = NULL;
418           htab[hval] = nptr;
419           if (type!=OBJ_GRP) (*ctr)++;
420 @@ -893,9 +912,11 @@
421              if ((type==cptr->flag)||((type!=OBJ_GRP)&&(cptr->flag!=OBJ_GRP)))
422              {
423                 /* found... bump counter */
424 -               cptr->count+=count;
425 -               cptr->files+=file;
426 -               cptr->xfer +=xfer;
427 +               cptr->count +=count;
428 +               cptr->files +=file;
429 +               cptr->xfer  +=xfer;
430 +               cptr->ixfer +=ixfer;
431 +               cptr->oxfer +=oxfer;
432  
433                 if (ispage(log_rec.url))
434                 {
435 @@ -915,6 +936,8 @@
436           nptr->count = count;
437           nptr->files = file;
438           nptr->xfer  = xfer;
439 +         nptr->ixfer = ixfer;
440 +         nptr->oxfer = oxfer;
441           nptr->next  = htab[hval];
442           htab[hval]  = nptr;
443           if (type!=OBJ_GRP) (*ctr)++;
444 Index: webalizer/hashtab.h
445 ===================================================================
446 --- webalizer.orig/hashtab.h    2011-04-18 23:54:32.000000000 +0200
447 +++ webalizer/hashtab.h 2011-04-18 23:56:44.000000000 +0200
448 @@ -32,6 +32,8 @@
449             u_int64_t tstamp;
450                  char *lasturl;
451                double xfer;
452 +              double ixfer;
453 +              double oxfer;
454                struct hnode *next; };
455  
456  struct unode {  char *string;              /* url hash table structure     */
457 @@ -41,6 +43,8 @@
458             u_int64_t entry;                /* entry page counter           */
459             u_int64_t exit;                 /* exit page counter            */
460                double xfer;                 /* xfer size in bytes           */
461 +              double ixfer;                /* in xfer size in bytes        */
462 +              double oxfer;                /* out xfer size in bytes       */
463                struct unode *next; };       /* pointer to next node         */
464  
465  struct rnode {  char *string;              /* referrer hash table struct   */
466 @@ -64,6 +68,8 @@
467             u_int64_t visit;
468             u_int64_t tstamp;
469                double xfer;
470 +              double ixfer;
471 +              double oxfer;
472                struct inode *next; };
473  
474  extern HNODEPTR sm_htab[MAXHASH];             /* hash tables               */
475 @@ -77,11 +83,11 @@
476  extern DNODEPTR host_table[MAXHASH];          /* DNS resolver table        */
477  #endif
478  
479 -extern int    put_hnode(char *, int, u_int64_t, u_int64_t, double,
480 +extern int    put_hnode(char *, int, u_int64_t, u_int64_t, double, double, double,
481                          u_int64_t *, u_int64_t, u_int64_t, char *, HNODEPTR *);
482 -extern int    put_unode(char *, int, u_int64_t, double, u_int64_t *,
483 +extern int    put_unode(char *, int, u_int64_t, double, double, double, u_int64_t *,
484                          u_int64_t, u_int64_t, UNODEPTR *);
485 -extern int    put_inode(char *, int, u_int64_t, u_int64_t, double,
486 +extern int    put_inode(char *, int, u_int64_t, u_int64_t, double, double, double,
487                          u_int64_t *, u_int64_t, u_int64_t, INODEPTR *);
488  extern int    put_rnode(char *, int, u_int64_t, u_int64_t *, RNODEPTR *);
489  extern int    put_anode(char *, int, u_int64_t, u_int64_t *, ANODEPTR *);
490 Index: webalizer/lang.h
491 ===================================================================
492 --- webalizer.orig/lang.h       2011-04-18 23:54:32.000000000 +0200
493 +++ webalizer/lang.h    2011-04-18 23:56:44.000000000 +0200
494 @@ -108,6 +108,8 @@
495  extern char *msg_h_files ;
496  extern char *msg_h_sites ;
497  extern char *msg_h_xfer  ;
498 +extern char *msg_h_ixfer ;
499 +extern char *msg_h_oxfer ;
500  extern char *msg_h_hname ;
501  extern char *msg_h_url   ;
502  extern char *msg_h_agent ;
503 @@ -132,6 +134,8 @@
504  extern char *msg_mtot_th ;
505  extern char *msg_mtot_tf ;
506  extern char *msg_mtot_tx ;
507 +extern char *msg_mtot_ix ;
508 +extern char *msg_mtot_ox ;
509  extern char *msg_mtot_us ;
510  extern char *msg_mtot_ur ;
511  extern char *msg_mtot_ua ;
512 @@ -144,6 +148,8 @@
513  extern char *msg_mtot_msd;
514  extern char *msg_mtot_mvd;
515  extern char *msg_mtot_mkd;
516 +extern char *msg_mtot_ikd;
517 +extern char *msg_mtot_okd;
518  extern char *msg_mtot_rc ;
519  
520  extern char *msg_dtot_ds ;
521 Index: webalizer/lang/webalizer_lang.catalan
522 ===================================================================
523 --- webalizer.orig/lang/webalizer_lang.catalan  2011-04-18 23:54:39.000000000 +0200
524 +++ webalizer/lang/webalizer_lang.catalan       2011-04-18 23:56:44.000000000 +0200
525 @@ -224,7 +224,9 @@
526  char *msg_h_visits= "Visites";
527  char *msg_h_files = "Fitxers";
528  char *msg_h_sites = "Navegadors";
529 -char *msg_h_xfer  = "KBytes";
530 +char *msg_h_xfer  = "kB F";
531 +char *msg_h_ixfer = "kB In";
532 +char *msg_h_oxfer = "kB Out";
533  char *msg_h_hname = "Visitant";
534  char *msg_h_url   = "URL";
535  char *msg_h_agent = "Navegador";
536 @@ -251,6 +253,8 @@
537  char *msg_mtot_th = "Accessos totals";
538  char *msg_mtot_tf = "Fitxers totals";
539  char *msg_mtot_tx = "KBytes totals";
540 +char *msg_mtot_ix = "In KBytes totals";
541 +char *msg_mtot_ox = "Out KBytes totals";
542  char *msg_mtot_us = "Servidors totals";
543  char *msg_mtot_ur = "Referents totals";
544  char *msg_mtot_ua = "Navegadors totals";
545 @@ -263,6 +267,8 @@
546  char *msg_mtot_msd= "Servidors per dia";
547  char *msg_mtot_mvd= "Visites per dia";
548  char *msg_mtot_mkd= "KBytes per dia";
549 +char *msg_mtot_ikd= "In KBytes per dia";
550 +char *msg_mtot_okd= "Out KBytes per dia";
551  char *msg_mtot_rc = "Accessos segons codi de resposta";
552  
553  /* daily total table */
554 Index: webalizer/lang/webalizer_lang.chinese
555 ===================================================================
556 --- webalizer.orig/lang/webalizer_lang.chinese  2011-04-18 23:54:32.000000000 +0200
557 +++ webalizer/lang/webalizer_lang.chinese       2011-04-18 23:56:44.000000000 +0200
558 @@ -218,7 +218,9 @@
559  char *msg_h_visits= "Visits";
560  char *msg_h_files = "ÀÉ®×";
561  char *msg_h_sites = "ºô¯¸¼Æ";
562 -char *msg_h_xfer  = "¶Ç°e¶q¡]KB¡^";
563 +char *msg_h_xfer  = "kB F";
564 +char *msg_h_ixfer = "kB In";
565 +char *msg_h_oxfer = "kB Out";
566  char *msg_h_hname = "¥D¾÷¦WºÙ";
567  char *msg_h_url   = "ºô­¶¸ô®|";
568  char *msg_h_agent = "ÂsÄý¾¹";
569 @@ -245,6 +247,8 @@
570  char *msg_mtot_th = "Á`Ū¨ú¼Æ";
571  char *msg_mtot_tf = "Á`ÀÉ®×¼Æ";
572  char *msg_mtot_tx = "Á`¶Ç°e¶q¡]KB¡^";
573 +char *msg_mtot_ix = "Total kB In";
574 +char *msg_mtot_ox = "Total kB Out";
575  char *msg_mtot_us = "¨Ó·½ºô¯¸Á`¼Æ¡]¤£¥]§t­«ÂЪ̡^";
576  char *msg_mtot_ur = "¨Ó·½ºô­¶Á`¼Æ¡]¤£¥]§t­«ÂЪ̡^";
577  char *msg_mtot_ua = "¨Ó·½ÂsÄý¾¹Á`¼Æ¡]¤£¥]§t­«ÂЪ̡^";
578 @@ -256,7 +260,9 @@
579  char *msg_mtot_mpd= "Pages per Day";
580  char *msg_mtot_msd= "Sites per Day";
581  char *msg_mtot_mvd= "Visits per Day";
582 -char *msg_mtot_mkd= "KBytes per Day";
583 +char *msg_mtot_mkd= "kB Files per Day";
584 +char *msg_mtot_ikd= "kB In per Day";
585 +char *msg_mtot_okd= "kB Out per Day";
586  char *msg_mtot_rc = "ºô­¶Åª¨ú®É¤§¦^À³¥N½X";
587  
588  /* daily total table */
589 Index: webalizer/lang/webalizer_lang.croatian
590 ===================================================================
591 --- webalizer.orig/lang/webalizer_lang.croatian 2011-04-18 23:54:32.000000000 +0200
592 +++ webalizer/lang/webalizer_lang.croatian      2011-04-18 23:56:44.000000000 +0200
593 @@ -215,7 +215,9 @@
594  char *msg_h_visits= "Posjeta";
595  char *msg_h_files = "Datoteka";
596  char *msg_h_sites = "Kompjutera";
597 -char *msg_h_xfer  = "KB";
598 +char *msg_h_xfer  = "kB D";
599 +char *msg_h_ixfer = "kB U";
600 +char *msg_h_oxfer = "kB Van";
601  char *msg_h_hname = "Kompjuter";
602  char *msg_h_url   = "URL";
603  char *msg_h_agent = "Korisnicki program";
604 @@ -241,7 +243,9 @@
605  char *msg_mtot_ms = "Mjesecna statistika za";
606  char *msg_mtot_th = "Ukupno pristupa";
607  char *msg_mtot_tf = "Ukupno datoteka";
608 -char *msg_mtot_tx = "Ukupno KBajta";
609 +char *msg_mtot_tx = "Ukupno kB datoteka";
610 +char *msg_mtot_ix = "Ukupno kB unutra";
611 +char *msg_mtot_ox = "Ukupno kB van";
612  char *msg_mtot_us = "Ukupno razlicitih kompjutera";
613  char *msg_mtot_ur = "Ukupno razlicitih referiranja";
614  char *msg_mtot_ua = "Ukupno razlicitih browsera";
615 @@ -253,7 +257,9 @@
616  char *msg_mtot_mpd= "Datoteka na sat";
617  char *msg_mtot_msd= "Kompjutera na dan";
618  char *msg_mtot_mvd= "Posjeta na dan";
619 -char *msg_mtot_mkd= "KBajta na dan";
620 +char *msg_mtot_mkd= "kB Datatoka na dan";
621 +char *msg_mtot_ikd= "kB Unutra na dan";
622 +char *msg_mtot_okd= "kB Van na dan";
623  char *msg_mtot_rc = "Pristupa po kodu";
624  
625  /* daily total table */
626 Index: webalizer/lang/webalizer_lang.czech
627 ===================================================================
628 --- webalizer.orig/lang/webalizer_lang.czech    2011-04-18 23:54:32.000000000 +0200
629 +++ webalizer/lang/webalizer_lang.czech 2011-04-18 23:56:44.000000000 +0200
630 @@ -226,7 +226,9 @@
631  char *msg_h_visits= "Náv¹tìv";
632  char *msg_h_files = "Souborù";
633  char *msg_h_sites = "Míst";
634 -char *msg_h_xfer  = "KBytù";
635 +char *msg_h_xfer  = "kB S";
636 +char *msg_h_oxfer = "kB In";
637 +char *msg_h_ixfer = "kB Out";
638  char *msg_h_hname = "Poèítaè";
639  char *msg_h_url   = "URL";
640  char *msg_h_agent = "Prohlí¾eè";
641 @@ -252,7 +254,9 @@
642  char *msg_mtot_ms = "Mìsíèní statistiky za";
643  char *msg_mtot_th = "Celkem náv¹tìv";
644  char *msg_mtot_tf = "Celkem souborù";
645 -char *msg_mtot_tx = "Celkem KBytù";
646 +char *msg_mtot_tx = "Celkem kB souborù";
647 +char *msg_mtot_ix = "Celkem kB In";
648 +char *msg_mtot_ox = "Celkem kB Out";
649  char *msg_mtot_us = "Celkem jedineèných míst";
650  char *msg_mtot_ur = "Celkem jedineèných odkazovaèù";
651  char *msg_mtot_ua = "Celkem jedineèných Prohlí¾eèù";
652 @@ -265,6 +269,8 @@
653  char *msg_mtot_msd= "Míst za den";
654  char *msg_mtot_mvd= "Náv¹tìv za den";
655  char *msg_mtot_mkd= "KBytù za den";
656 +char *msg_mtot_ikd= "kBytù In za den";
657 +char *msg_mtot_okd= "kBytù Out za den";
658  char *msg_mtot_rc = "Náv¹tìvy podle kódu odpovìdi";
659  
660  /* daily total table */
661 Index: webalizer/lang/webalizer_lang.danish
662 ===================================================================
663 --- webalizer.orig/lang/webalizer_lang.danish   2011-04-18 23:54:32.000000000 +0200
664 +++ webalizer/lang/webalizer_lang.danish        2011-04-18 23:56:44.000000000 +0200
665 @@ -218,7 +218,9 @@
666  char *msg_h_visits= "Besøg";
667  char *msg_h_files = "Filer";
668  char *msg_h_sites = "Gæster";
669 -char *msg_h_xfer  = "kB";
670 +char *msg_h_xfer  = "kB F";
671 +char *msg_h_ixfer = "kB In";
672 +char *msg_h_oxfer = "kB Out";
673  char *msg_h_hname = "Navn/IP-adresse";
674  char *msg_h_url   = "URL";
675  char *msg_h_agent = "Browser";
676 @@ -244,7 +246,9 @@
677  char *msg_mtot_ms = "Månedlig statistik for";
678  char *msg_mtot_th = "Forespørgsler";
679  char *msg_mtot_tf = "Filer";
680 -char *msg_mtot_tx = "kB";
681 +char *msg_mtot_tx = "kB Filer";
682 +char *msg_mtot_ix = "kB In";
683 +char *msg_mtot_ox = "kB Out";
684  char *msg_mtot_us = "Unikke gæster";
685  char *msg_mtot_ur = "Unikke henvisende sider";
686  char *msg_mtot_ua = "Unikke browsere";
687 @@ -256,7 +260,9 @@
688  char *msg_mtot_mpd= "Sider pr. dag";
689  char *msg_mtot_msd= "Gæster pr. dag";
690  char *msg_mtot_mvd= "Besøg pr. dag";
691 -char *msg_mtot_mkd= "kB pr. dag";
692 +char *msg_mtot_mkd= "kB Filer pr. dag";
693 +char *msg_mtot_ikd= "kB Out pr. dag";
694 +char *msg_mtot_okd= "kB In pr. dag";
695  char *msg_mtot_rc = "Forespørgsler fordelt på svarkoder";
696  
697  /* daily total table */
698 Index: webalizer/lang/webalizer_lang.dutch
699 ===================================================================
700 --- webalizer.orig/lang/webalizer_lang.dutch    2011-04-18 23:54:32.000000000 +0200
701 +++ webalizer/lang/webalizer_lang.dutch 2011-04-18 23:56:44.000000000 +0200
702 @@ -234,7 +234,9 @@
703  char *msg_h_visits= "Bezoeken";
704  char *msg_h_files = "Bestanden";
705  char *msg_h_sites = "Hosts";
706 -char *msg_h_xfer  = "kB"; /* afgekort i.v.m. onderschrift grafiek */
707 +char *msg_h_xfer  = "kB B"; /* afgekort i.v.m. onderschrift grafiek */
708 +char *msg_h_ixfer = "kB In";
709 +char *msg_h_oxfer = "kB Out";
710  char *msg_h_hname = "Host(naam)";
711  char *msg_h_url   = "URL";
712  char *msg_h_agent = "Browser";
713 @@ -260,7 +262,9 @@
714  char *msg_mtot_ms = "Maandoverzicht -";
715  char *msg_mtot_th = "Totaal hits";
716  char *msg_mtot_tf = "Totaal bestanden";
717 -char *msg_mtot_tx = "Totaal kilobytes";
718 +char *msg_mtot_tx = "Totaal kB bestanden";
719 +char *msg_mtot_ix = "Totaal kB In";
720 +char *msg_mtot_ox = "Totaal kB Out";
721  char *msg_mtot_us = "Totaal verschillende hosts";
722  char *msg_mtot_ur = "Totaal verschillende verwijzers";
723  char *msg_mtot_ua = "Totaal verschillende browsers";
724 @@ -272,7 +276,9 @@
725  char *msg_mtot_mpd= "Pagina's per dag";
726  char *msg_mtot_msd= "Hosts per dag";
727  char *msg_mtot_mvd= "Bezoeken per dag";
728 -char *msg_mtot_mkd= "Kilobytes per dag";
729 +char *msg_mtot_mkd= "kB Bestanden per dag";
730 +char *msg_mtot_ikd= "kB In per dag";
731 +char *msg_mtot_okd= "kB Out per dag";
732  char *msg_mtot_rc = "Hits per 'Response Code'";
733  
734  /* daily total table */
735 Index: webalizer/lang/webalizer_lang.english
736 ===================================================================
737 --- webalizer.orig/lang/webalizer_lang.english  2011-04-18 23:54:32.000000000 +0200
738 +++ webalizer/lang/webalizer_lang.english       2011-04-18 23:56:44.000000000 +0200
739 @@ -219,7 +219,9 @@
740  char *msg_h_visits= "Visits";
741  char *msg_h_files = "Files";
742  char *msg_h_sites = "Sites";
743 -char *msg_h_xfer  = "KBytes";
744 +char *msg_h_xfer  = "kB F";
745 +char *msg_h_ixfer = "kB In";
746 +char *msg_h_oxfer = "kB Out";
747  char *msg_h_hname = "Hostname";
748  char *msg_h_url   = "URL";
749  char *msg_h_agent = "User Agent";
750 @@ -245,7 +247,9 @@
751  char *msg_mtot_ms = "Monthly Statistics for";
752  char *msg_mtot_th = "Total Hits";
753  char *msg_mtot_tf = "Total Files";
754 -char *msg_mtot_tx = "Total KBytes";
755 +char *msg_mtot_tx = "Total kB Files";
756 +char *msg_mtot_ix = "Total kB In";
757 +char *msg_mtot_ox = "Total kB Out";
758  char *msg_mtot_us = "Total Unique Sites";
759  char *msg_mtot_ur = "Total Unique Referrers";
760  char *msg_mtot_ua = "Total Unique User Agents";
761 @@ -257,7 +261,9 @@
762  char *msg_mtot_mpd= "Pages per Day";
763  char *msg_mtot_msd= "Sites per Day";
764  char *msg_mtot_mvd= "Visits per Day";
765 -char *msg_mtot_mkd= "KBytes per Day";
766 +char *msg_mtot_mkd= "kB Files per Day";
767 +char *msg_mtot_ikd= "kB In per Day";
768 +char *msg_mtot_okd= "kB Out per Day";
769  char *msg_mtot_rc = "Hits by Response Code";
770  
771  /* daily total table */
772 Index: webalizer/lang/webalizer_lang.estonian
773 ===================================================================
774 --- webalizer.orig/lang/webalizer_lang.estonian 2011-04-18 23:54:32.000000000 +0200
775 +++ webalizer/lang/webalizer_lang.estonian      2011-04-18 23:56:44.000000000 +0200
776 @@ -218,7 +218,9 @@
777  char *msg_h_visits= "Külastusi";
778  char *msg_h_files = "Faile";
779  char *msg_h_sites = "Arvuteid";
780 -char *msg_h_xfer  = "KBaite";
781 +char *msg_h_xfer  = "kB F";
782 +char *msg_h_ixfer = "kB In";
783 +char *msg_h_oxfer = "kB Out";
784  char *msg_h_hname = "Server";
785  char *msg_h_url   = "Aadress";
786  char *msg_h_agent = "Lehitseja";
787 @@ -244,7 +246,9 @@
788  char *msg_mtot_ms = "Kuu statistika";
789  char *msg_mtot_th = "Kokku Pöördumisi";
790  char *msg_mtot_tf = "Kokku Faile";
791 -char *msg_mtot_tx = "Kokku KBaite";
792 +char *msg_mtot_tx = "Kokku kB Faile";
793 +char *msg_mtot_ix = "Kokku kB In";
794 +char *msg_mtot_ox = "Kokku kB Out";
795  char *msg_mtot_us = "Kokku Erinevaid Kasutajaid";
796  char *msg_mtot_ur = "Kokku Erinevaid Viitajaid";
797  char *msg_mtot_ua = "Kokku Erinevaid Lehitsejaid";
798 @@ -256,7 +260,9 @@
799  char *msg_mtot_mpd= "Lehekülgi Päevas";
800  char *msg_mtot_msd= "Külastajaarvutist Päevas";
801  char *msg_mtot_mvd= "Visiite Päevas";
802 -char *msg_mtot_mkd= "KBaite Päevas";
803 +char *msg_mtot_mkd= "kB Faile Päevas";
804 +char *msg_mtot_ikd= "kB In Päevas";
805 +char *msg_mtot_okd= "kB Out Päevas";
806  char *msg_mtot_rc = "Pöördumisi vastusetüüpide kaupa";
807  
808  /* daily total table */
809 Index: webalizer/lang/webalizer_lang.finnish
810 ===================================================================
811 --- webalizer.orig/lang/webalizer_lang.finnish  2011-04-18 23:54:32.000000000 +0200
812 +++ webalizer/lang/webalizer_lang.finnish       2011-04-18 23:56:44.000000000 +0200
813 @@ -226,7 +226,9 @@
814  char *msg_h_visits= "vierailuja";
815  char *msg_h_files = "tiedostoja";
816  char *msg_h_sites = "koneita";
817 -char *msg_h_xfer  = "kilotavuja";
818 +char *msg_h_xfer  = "kB T";
819 +char *msg_h_ixfer = "kB In";
820 +char *msg_h_oxfer = "kB Out";
821  char *msg_h_hname = "Välityspalvelin";
822  char *msg_h_url   = "URL";
823  char *msg_h_agent = "Käytetyt selaimet";
824 @@ -252,7 +254,9 @@
825  char *msg_mtot_ms = "Kuukausitilastot";
826  char *msg_mtot_th = "Osumia yhteensä";
827  char *msg_mtot_tf = "Tiedostoja yhteensä";
828 -char *msg_mtot_tx = "Kilotavuja yhteensä";
829 +char *msg_mtot_tx = "kB Tiedostoja yhteensä";
830 +char *msg_mtot_ix = "kB In yhteensä";
831 +char *msg_mtot_ox = "kB Out yhteensä";
832  char *msg_mtot_us = "Yhteensä erilaisia koneita";
833  char *msg_mtot_ur = "Yhteensä erilaisia hakupalvelimia";
834  char *msg_mtot_ua = "Yhteensä erilaisia selaimia";
835 @@ -264,7 +268,9 @@
836  char *msg_mtot_mpd= "Sivuja / päivä";
837  char *msg_mtot_msd= "Koneita / päivä";
838  char *msg_mtot_mvd= "Vierailuja / päivä";
839 -char *msg_mtot_mkd= "Kilotavuja / päivä";
840 +char *msg_mtot_mkd= "kB Tiedostoja / päivä";
841 +char *msg_mtot_ikd= "kB In / päivä";
842 +char *msg_mtot_okd= "kB Out / päivä";
843  char *msg_mtot_rc = "Osumien vastauskoodit";
844  
845  /* daily total table */
846 Index: webalizer/lang/webalizer_lang.french
847 ===================================================================
848 --- webalizer.orig/lang/webalizer_lang.french   2011-04-18 23:54:32.000000000 +0200
849 +++ webalizer/lang/webalizer_lang.french        2011-04-18 23:56:44.000000000 +0200
850 @@ -253,7 +253,9 @@
851  char *msg_h_visits= "Visites";
852  char *msg_h_files = "Fichiers";
853  char *msg_h_sites = "Sites";
854 -char *msg_h_xfer  = "Ko";
855 +char *msg_h_xfer  = "kB F";
856 +char *msg_h_ixfer = "kB In";
857 +char *msg_h_oxfer = "kB Out";
858  char *msg_h_hname = "Nom d'h&ocirc;te";
859  char *msg_h_url   = "URL";
860  char *msg_h_agent = "Navigateur";
861 @@ -279,7 +281,9 @@
862  char *msg_mtot_ms = "Statistiques mensuelles pour";
863  char *msg_mtot_th = "Total des Hits";
864  char *msg_mtot_tf = "Total des Fichiers";
865 -char *msg_mtot_tx = "Total des Ko";
866 +char *msg_mtot_tx = "Total des kB Fichiers";
867 +char *msg_mtot_ix = "Total des kB In";
868 +char *msg_mtot_ox = "Total des kB Out";
869  char *msg_mtot_us = "Total des Sites uniques";
870  char *msg_mtot_ur = "Total des R&eacute;f&eacute;rents uniques";
871  char *msg_mtot_ua = "Total des Navigateurs";
872 @@ -291,7 +295,9 @@
873  char *msg_mtot_mpd= "Pages par Jour";
874  char *msg_mtot_msd= "Sites par Jour";
875  char *msg_mtot_mvd= "Visites par Jour";
876 -char *msg_mtot_mkd= "KOctets par Jour";
877 +char *msg_mtot_mkd= "kB Fichiers par Jour";
878 +char *msg_mtot_ikd= "kB In par Jour";
879 +char *msg_mtot_okd= "kB Out par Jour";
880  char *msg_mtot_rc = "Hits par code de r&eacute;ponse";
881  
882  /* daily total table */
883 Index: webalizer/lang/webalizer_lang.galician
884 ===================================================================
885 --- webalizer.orig/lang/webalizer_lang.galician 2011-04-18 23:54:32.000000000 +0200
886 +++ webalizer/lang/webalizer_lang.galician      2011-04-18 23:56:44.000000000 +0200
887 @@ -223,7 +223,9 @@
888  char *msg_h_visits= "Visitas";
889  char *msg_h_files = "Arquivos";
890  char *msg_h_sites = "Clientes";
891 -char *msg_h_xfer  = "KBytes";
892 +char *msg_h_xfer  = "kB A";
893 +char *msg_h_ixfer = "kB In";
894 +char *msg_h_oxfer = "kB Out";
895  char *msg_h_hname = "Máquina";
896  char *msg_h_url   = "URL";
897  char *msg_h_agent = "Programa cliente";
898 @@ -249,7 +251,9 @@
899  char *msg_mtot_ms = "Estatísticas mensuais de";
900  char *msg_mtot_th = "Total Accesos";
901  char *msg_mtot_tf = "Total Arquivos";
902 -char *msg_mtot_tx = "Total KBytes";
903 +char *msg_mtot_tx = "Total kB Arquivos";
904 +char *msg_mtot_ix = "Total kB In";
905 +char *msg_mtot_ox = "Total kB Out";
906  char *msg_mtot_us = "Total Clientes";
907  char *msg_mtot_ur = "Total Ligazóns orixe";
908  char *msg_mtot_ua = "Total Programas visores";
909 @@ -261,7 +265,9 @@
910  char *msg_mtot_mpd= "Páxinas por Día";
911  char *msg_mtot_msd= "Clientes por Día";
912  char *msg_mtot_mvd= "Visitas por Día";
913 -char *msg_mtot_mkd= "KBytes por Día";
914 +char *msg_mtot_mkd= "kB Arquivos por Día";
915 +char *msg_mtot_ikd= "kB In por Día";
916 +char *msg_mtot_okd= "kB Out por Día";
917  char *msg_mtot_rc = "Accesos por código de resposta";
918  
919  /* daily total table */
920 Index: webalizer/lang/webalizer_lang.german
921 ===================================================================
922 --- webalizer.orig/lang/webalizer_lang.german   2011-04-18 23:54:32.000000000 +0200
923 +++ webalizer/lang/webalizer_lang.german        2011-04-18 23:56:44.000000000 +0200
924 @@ -243,7 +243,9 @@
925  char *msg_h_visits= "Besuche";
926  char *msg_h_files = "Dateien";
927  char *msg_h_sites = "Rechner";
928 -char *msg_h_xfer  = "kb";
929 +char *msg_h_xfer  = "kB D";
930 +char *msg_h_ixfer = "kB In";
931 +char *msg_h_oxfer = "kB Out";
932  char *msg_h_hname = "Rechnername";
933  char *msg_h_url   = "URL";
934  char *msg_h_agent = "Anwenderprogramm";
935 @@ -269,7 +271,9 @@
936  char *msg_mtot_ms = "Monats-Statistik f&uuml;r";
937  char *msg_mtot_th = "Summe der Anfragen";
938  char *msg_mtot_tf = "Summe der Dateien";
939 -char *msg_mtot_tx = "Summe in kb";
940 +char *msg_mtot_tx = "Summe kB Dateien";
941 +char *msg_mtot_ix = "Summe kB In";
942 +char *msg_mtot_ox = "Summe kB Out";
943  char *msg_mtot_us = "Summe der unterschiedlichen Rechner (IP-Adressen)";
944  char *msg_mtot_ur = "Summe der unterschiedlichen Verweise";
945  char *msg_mtot_ua = "Summe der unterschiedlichen Anwenderprogramme";
946 @@ -281,7 +285,9 @@
947  char *msg_mtot_mpd= "Seiten pro Tag";
948  char *msg_mtot_msd= "Rechner (IP-Adressen) pro Tag";
949  char *msg_mtot_mvd= "Besuche pro Tag";
950 -char *msg_mtot_mkd= "kb pro Tag";
951 +char *msg_mtot_mkd= "kB Dateien pro Tag";
952 +char *msg_mtot_ikd= "kB In pro Tag";
953 +char *msg_mtot_okd= "kB Out pro Tag";
954  char *msg_mtot_rc = "Anfragen nach Status-Codes";
955  
956  /* daily total table */
957 Index: webalizer/lang/webalizer_lang.greek
958 ===================================================================
959 --- webalizer.orig/lang/webalizer_lang.greek    2011-04-18 23:54:32.000000000 +0200
960 +++ webalizer/lang/webalizer_lang.greek 2011-04-18 23:56:44.000000000 +0200
961 @@ -217,7 +217,9 @@
962  char *msg_h_visits= "ÅðéóêÝøåéò";
963  char *msg_h_files = "Áñ÷åßá";
964  char *msg_h_sites = "ÓõóôÞìáôá";
965 -char *msg_h_xfer  = "KBytes";
966 +char *msg_h_xfer  = "kB F";
967 +char *msg_h_ixfer = "kB In";
968 +char *msg_h_oxfer = "kB Out";
969  char *msg_h_hname = "Óýóôçìá";
970  char *msg_h_url   = "URL";
971  char *msg_h_agent = "Ðñüãñáììá";
972 @@ -243,7 +245,9 @@
973  char *msg_mtot_ms = "ÓõãêåíôñùôéêÜ óôïé÷åßá ãéá ôï ìÞíá";
974  char *msg_mtot_th = "ÓõíïëéêÜ Hits";
975  char *msg_mtot_tf = "Óýíïëï áñ÷åßùí";
976 -char *msg_mtot_tx = "Óýíïëï KBytes";
977 +char *msg_mtot_tx = "Óýíïëï kB áñ÷åßùí";
978 +char *msg_mtot_ix = "Óýíïëï kB In";
979 +char *msg_mtot_ox = "Óýíïëï kB Out";
980  char *msg_mtot_us = "Óýíïëï äéáöïñåôéêþí óõóôçìÜôùí";
981  char *msg_mtot_ur = "Óýíïëï äéáöïñåôéêþí áíáöåñüíôùí";
982  char *msg_mtot_ua = "Óýíïëï äéáöïñåôéêþí ðñïãñáììÜôùí";
983 @@ -255,7 +259,9 @@
984  char *msg_mtot_mpd= "Óåëßäåò áíÜ çìÝñá";
985  char *msg_mtot_msd= "Sites per Day";
986  char *msg_mtot_mvd= "ÅðéóêÝøåéò áíÜ çìÝñá";
987 -char *msg_mtot_mkd= "KBytes áíÜ çìÝñá";
988 +char *msg_mtot_mkd= "kB Áñ÷åßá áíÜ çìÝñá";
989 +char *msg_mtot_ikd= "kB In áíÜ çìÝñá";
990 +char *msg_mtot_okd= "kB Out áíÜ çìÝñá";
991  char *msg_mtot_rc = "Hits áðü ôï áðïôÝëåóìá";
992  
993  /* daily total table */
994 Index: webalizer/lang/webalizer_lang.hungarian
995 ===================================================================
996 --- webalizer.orig/lang/webalizer_lang.hungarian        2011-04-18 23:54:32.000000000 +0200
997 +++ webalizer/lang/webalizer_lang.hungarian     2011-04-18 23:56:44.000000000 +0200
998 @@ -224,7 +224,9 @@
999  char *msg_h_visits= "Látogatók";
1000  char *msg_h_files = "File-ok";
1001  char *msg_h_sites = "Oldalak";
1002 -char *msg_h_xfer  = "KByte";
1003 +char *msg_h_xfer  = "kB F";
1004 +char *msg_h_ixfer = "kB In";
1005 +char *msg_h_oxfer = "kB Out";
1006  char *msg_h_hname = "Hostnév";
1007  char *msg_h_url   = "URL";
1008  char *msg_h_agent = "Felhasználó böngészõje";
1009 @@ -250,7 +252,9 @@
1010  char *msg_mtot_ms = "Havi Statisztika:";
1011  char *msg_mtot_th = "Összes Találat";
1012  char *msg_mtot_tf = "Összes File";
1013 -char *msg_mtot_tx = "Összes KByte";
1014 +char *msg_mtot_tx = "Összes kB File";
1015 +char *msg_mtot_ix = "Összes kB In";
1016 +char *msg_mtot_ox = "Összes kB Out";
1017  char *msg_mtot_us = "Összes különbözõ Oldal";
1018  char *msg_mtot_ur = "Összes különbözõ Hivatkozás";
1019  char *msg_mtot_ua = "Összes különbözõ Felhasználó böngészõje";
1020 @@ -262,7 +266,9 @@
1021  char *msg_mtot_mpd= "Lap/nap";
1022  char *msg_mtot_msd= "Oldal/nap";
1023  char *msg_mtot_mvd= "Látogató/nap";
1024 -char *msg_mtot_mkd= "KByte/nap";
1025 +char *msg_mtot_mkd= "kB File/nap";
1026 +char *msg_mtot_ikd= "kB In/nap";
1027 +char *msg_mtot_okd= "kB Out/nap";
1028  char *msg_mtot_rc = "Válaszkódok általi találatok";
1029  
1030  /* daily total table */
1031 Index: webalizer/lang/webalizer_lang.icelandic
1032 ===================================================================
1033 --- webalizer.orig/lang/webalizer_lang.icelandic        2011-04-18 23:54:32.000000000 +0200
1034 +++ webalizer/lang/webalizer_lang.icelandic     2011-04-18 23:56:44.000000000 +0200
1035 @@ -226,7 +226,9 @@
1036  char *msg_h_visits= "Heimsóknir";
1037  char *msg_h_files = "Skrár";
1038  char *msg_h_sites = "Sites";
1039 -char *msg_h_xfer  = "KBæti";
1040 +char *msg_h_xfer  = "kB S";
1041 +char *msg_h_ixfer = "kB In";
1042 +char *msg_h_oxfer = "kB Out";
1043  char *msg_h_hname = "Host nafn";
1044  char *msg_h_url   = "Slóð";
1045  char *msg_h_agent = "User Agent";
1046 @@ -252,7 +254,9 @@
1047  char *msg_mtot_ms = "Mánaðar Samtölur fyrir";
1048  char *msg_mtot_th = "Samtals Beiðnir";
1049  char *msg_mtot_tf = "Samtals Skrár";
1050 -char *msg_mtot_tx = "Samtals KBæti";
1051 +char *msg_mtot_tx = "Samtals kB Skrár";
1052 +char *msg_mtot_ix = "Samtals kB In";
1053 +char *msg_mtot_ox = "Samtals kB Out";
1054  char *msg_mtot_us = "Samtals Einstakar Síður";
1055  char *msg_mtot_ur = "Samtals Unique Referrers";
1056  char *msg_mtot_ua = "Samtals Unique User Agents";
1057 @@ -264,7 +268,9 @@
1058  char *msg_mtot_mpd= "Síður á Dag";
1059  char *msg_mtot_msd= "Síður (sites) á Dag";
1060  char *msg_mtot_mvd= "Heimsóknir á Dag";
1061 -char *msg_mtot_mkd= "KBæti á Dag";
1062 +char *msg_mtot_mkd= "kB Skrár á Dag";
1063 +char *msg_mtot_ikd= "kB In á Dag";
1064 +char *msg_mtot_okd= "kB Out á Dag";
1065  char *msg_mtot_rc = "Hits by Response Code";
1066  
1067  /* daily total table */
1068 Index: webalizer/lang/webalizer_lang.indonesian
1069 ===================================================================
1070 --- webalizer.orig/lang/webalizer_lang.indonesian       2011-04-18 23:54:32.000000000 +0200
1071 +++ webalizer/lang/webalizer_lang.indonesian    2011-04-18 23:56:44.000000000 +0200
1072 @@ -222,7 +222,9 @@
1073  char *msg_h_visits= "Kunjungan";
1074  char *msg_h_files = "File";
1075  char *msg_h_sites = "Situs";
1076 -char *msg_h_xfer  = "KByte";
1077 +char *msg_h_xfer  = "kB F";
1078 +char *msg_h_ixfer = "kB In";
1079 +char *msg_h_oxfer = "kB Out";
1080  char *msg_h_hname = "Nama Host";
1081  char *msg_h_url   = "URL";
1082  char *msg_h_agent = "Browser/User Agent";
1083 @@ -248,7 +250,9 @@
1084  char *msg_mtot_ms = "Statistik bulanan untuk";
1085  char *msg_mtot_th = "Jumlah Hit";
1086  char *msg_mtot_tf = "Jumlah File";
1087 -char *msg_mtot_tx = "Jumlah KByte";
1088 +char *msg_mtot_tx = "Jumlah kB File";
1089 +char *msg_mtot_ix = "Jumlah kB In";
1090 +char *msg_mtot_ox = "Jumlah kB Out";
1091  char *msg_mtot_us = "Jumlah Situs unik";
1092  char *msg_mtot_ur = "Jumlah Acuan unik";
1093  char *msg_mtot_ua = "Jumlah Browser unik";
1094 @@ -260,7 +264,9 @@
1095  char *msg_mtot_mpd= "Halaman per hari";
1096  char *msg_mtot_msd= "Situs per hari";
1097  char *msg_mtot_mvd= "Kunjungan per hari";
1098 -char *msg_mtot_mkd= "KByte per hari";
1099 +char *msg_mtot_mkd= "kB File per hari";
1100 +char *msg_mtot_ikd= "kB In per hari";
1101 +char *msg_mtot_okd= "kB Out per hari";
1102  char *msg_mtot_rc = "Hit oleh kode respon";
1103  
1104  /* daily total table */
1105 Index: webalizer/lang/webalizer_lang.italian
1106 ===================================================================
1107 --- webalizer.orig/lang/webalizer_lang.italian  2011-04-18 23:54:32.000000000 +0200
1108 +++ webalizer/lang/webalizer_lang.italian       2011-04-18 23:56:44.000000000 +0200
1109 @@ -221,7 +221,9 @@
1110  char *msg_h_visits= "Visite";
1111  char *msg_h_files = "File";
1112  char *msg_h_sites = "Siti";
1113 -char *msg_h_xfer  = "KBytes";
1114 +char *msg_h_xfer  = "kB F";
1115 +char *msg_h_ixfer = "kB In";
1116 +char *msg_h_oxfer = "kB Out";
1117  char *msg_h_hname = "Nomi di Host";
1118  char *msg_h_url   = "URL";
1119  char *msg_h_agent = "Browser";
1120 @@ -247,7 +249,9 @@
1121  char *msg_mtot_ms = "Statistiche Mensili per";
1122  char *msg_mtot_th = "Contatti";
1123  char *msg_mtot_tf = "File";
1124 -char *msg_mtot_tx = "KBytes";
1125 +char *msg_mtot_tx = "kB File";
1126 +char *msg_mtot_ix = "kB In";
1127 +char *msg_mtot_ox = "kB Out";
1128  char *msg_mtot_us = "Nomi di Host";
1129  char *msg_mtot_ur = "Referrer";
1130  char *msg_mtot_ua = "Browser";
1131 @@ -259,7 +263,9 @@
1132  char *msg_mtot_mpd= "Pagine Giornaliere";
1133  char *msg_mtot_msd= "Host Giornaliere";
1134  char *msg_mtot_mvd= "Visite Giornaliere";
1135 -char *msg_mtot_mkd= "KBytes Giornalieri";
1136 +char *msg_mtot_mkd= "kB File Giornalieri";
1137 +char *msg_mtot_ikd= "kB In Giornalieri";
1138 +char *msg_mtot_okd= "kB Out Giornalieri";
1139  char *msg_mtot_rc = "Contatti per Codice di Risposta";
1140  
1141  /* daily total table */
1142 Index: webalizer/lang/webalizer_lang.japanese
1143 ===================================================================
1144 --- webalizer.orig/lang/webalizer_lang.japanese 2011-04-18 23:54:32.000000000 +0200
1145 +++ webalizer/lang/webalizer_lang.japanese      2011-04-18 23:56:44.000000000 +0200
1146 @@ -215,7 +215,9 @@
1147  char *msg_h_visits= "Visits";
1148  char *msg_h_files = "Files";
1149  char *msg_h_sites = "Sites";
1150 -char *msg_h_xfer  = "KBytes";
1151 +char *msg_h_xfer  = "kB F";
1152 +char *msg_h_ixfer = "kB In";
1153 +char *msg_h_oxfer = "kB Out";
1154  char *msg_h_hname = "¥Û¥¹¥È̾";
1155  char *msg_h_url   = "URL";
1156  char *msg_h_agent = "¥æ¡¼¥¶¥¨¡¼¥¸¥§¥ó¥È";
1157 @@ -242,6 +244,8 @@
1158  char *msg_mtot_th = "Á´¥Ò¥Ã¥È¿ô";
1159  char *msg_mtot_tf = "Á´¥Õ¥¡¥¤¥ë¿ô";
1160  char *msg_mtot_tx = "Á´ KBytes¿ô";
1161 +char *msg_mtot_ix = "Total kB In";
1162 +char *msg_mtot_ox = "Total kB Out";
1163  char *msg_mtot_us = "¸ÄÊÌ¥µ¥¤¥È¿ô";
1164  char *msg_mtot_ur = "¸ÄÊÌ¥ê¥Õ¥¡¥é¡¼¿ô";
1165  char *msg_mtot_ua = "¸ÄÊ̥桼¥¶¥¨¡¼¥¸¥§¥ó¥È¿ô";
1166 @@ -254,6 +258,8 @@
1167  char *msg_mtot_msd= "Sites per Day";
1168  char *msg_mtot_mvd= "°ìÆü¤¢¤¿¤ê¤ÎˬÌä¼Ô¿ô";
1169  char *msg_mtot_mkd= "°ìÆü¤¢¤¿¤ê¤ÎKBytes¿ô";
1170 +char *msg_mtot_ikd= "kB In per day";
1171 +char *msg_mtot_okd= "kB Out per day";
1172  char *msg_mtot_rc = "¥ì¥¹¥Ý¥ó¥¹¥³¡¼¥É¤´¤È¤Î¥Ò¥Ã¥È¿ô";
1173  
1174  /* daily total table */
1175 Index: webalizer/lang/webalizer_lang.korean
1176 ===================================================================
1177 --- webalizer.orig/lang/webalizer_lang.korean   2011-04-18 23:54:32.000000000 +0200
1178 +++ webalizer/lang/webalizer_lang.korean        2011-04-18 23:56:44.000000000 +0200
1179 @@ -219,7 +219,9 @@
1180  char *msg_h_visits= "Visits";
1181  char *msg_h_files = "Files";
1182  char *msg_h_sites = "Sites";
1183 -char *msg_h_xfer  = "KBytes";
1184 +char *msg_h_xfer  = "kB F";
1185 +char *msg_h_ixfer = "kB In";
1186 +char *msg_h_oxfer = "kB Out";
1187  char *msg_h_hname = "È£½ºÆ®¸í";
1188  char *msg_h_url   = "URL";
1189  char *msg_h_agent = "¿¡ÀÌÀüÆ®";
1190 @@ -245,7 +247,9 @@
1191  char *msg_mtot_ms = "¿ùº° Åë°è";
1192  char *msg_mtot_th = "ÃÑ È÷Æ®¼ö";
1193  char *msg_mtot_tf = "ÃÑ ÆÄÀϼö";
1194 -char *msg_mtot_tx = "ÃÑ KByte";
1195 +char *msg_mtot_tx = "ÃÑ kB ÆÄÀϼö";
1196 +char *msg_mtot_ix = "ÃÑ kB In";
1197 +char *msg_mtot_ox = "ÃÑ kB Out";
1198  char *msg_mtot_us = "ÃÑ °³º° »çÀÌÆ®";
1199  char *msg_mtot_ur = "ÃÑ °³º° ·¹ÆÛ·²";
1200  char *msg_mtot_ua = "ÃÑ °³º° ¿¡ÀÌÀüÆ®";
1201 @@ -257,7 +261,9 @@
1202  char *msg_mtot_mpd= "Pages per Day";
1203  char *msg_mtot_msd= "Sites per Day";
1204  char *msg_mtot_mvd= "Visits per Day";
1205 -char *msg_mtot_mkd= "KBytes per Day";
1206 +char *msg_mtot_mkd= "kB Files per Day";
1207 +char *msg_mtot_ikd= "kB In per Day";
1208 +char *msg_mtot_okd= "kB Out per Day";
1209  char *msg_mtot_rc = "ÀÀ´ä Äڵ庰 È÷Æ®¼ö";
1210  
1211  /* daily total table */
1212 Index: webalizer/lang/webalizer_lang.latvian
1213 ===================================================================
1214 --- webalizer.orig/lang/webalizer_lang.latvian  2011-04-18 23:54:32.000000000 +0200
1215 +++ webalizer/lang/webalizer_lang.latvian       2011-04-18 23:56:44.000000000 +0200
1216 @@ -220,7 +220,9 @@
1217  char *msg_h_visits= "Apmeklçjumi";
1218  char *msg_h_files = "Faili";
1219  char *msg_h_sites = "Sites";
1220 -char *msg_h_xfer  = "KBytes";
1221 +char *msg_h_xfer  = "kB F";
1222 +char *msg_h_ixfer = "kB In";
1223 +char *msg_h_oxfer = "kB Out";
1224  char *msg_h_hname = "Hostname";
1225  char *msg_h_url   = "URL";
1226  char *msg_h_agent = "Lietotâja programma";
1227 @@ -246,7 +248,9 @@
1228  char *msg_mtot_ms = "Mçneðu pârskats pâr";
1229  char *msg_mtot_th = "Kopçjie Apmeklçjumi";
1230  char *msg_mtot_tf = "Kopçjie Faili";
1231 -char *msg_mtot_tx = "Kopçjie KBaiti";
1232 +char *msg_mtot_tx = "Kopçjie kB Faili";
1233 +char *msg_mtot_ix = "Kopçjie kB In";
1234 +char *msg_mtot_ox = "Kopçjie kB Out";
1235  char *msg_mtot_us = "Kopçjâs Unikâlâs Saites";
1236  char *msg_mtot_ur = "Kopçjie Unikâlie Referreri";
1237  char *msg_mtot_ua = "Kopçjâs Unikâlâs Lietotâju Programmas";
1238 @@ -258,7 +262,9 @@
1239  char *msg_mtot_mpd= "Lapas Dienâ";
1240  char *msg_mtot_msd= "Saites Dienâ";
1241  char *msg_mtot_mvd= "Apmeklçjumi Dienâ";
1242 -char *msg_mtot_mkd= "KBaiti Dienâ";
1243 +char *msg_mtot_mkd= "kB Faili dienâ";
1244 +char *msg_mtot_ikd= "kB In dienâ";
1245 +char *msg_mtot_okd= "kB Out dienâ";
1246  char *msg_mtot_rc = "Hits by Response Code";
1247  
1248  /* daily total table */
1249 Index: webalizer/lang/webalizer_lang.malay
1250 ===================================================================
1251 --- webalizer.orig/lang/webalizer_lang.malay    2011-04-18 23:54:32.000000000 +0200
1252 +++ webalizer/lang/webalizer_lang.malay 2011-04-18 23:56:44.000000000 +0200
1253 @@ -220,7 +220,9 @@
1254  char *msg_h_visits= "Lawatan";
1255  char *msg_h_files = "Fail";
1256  char *msg_h_sites = "Halaman";
1257 -char *msg_h_xfer  = "KBait";
1258 +char *msg_h_xfer  = "kB F";
1259 +char *msg_h_ixfer = "kB In";
1260 +char *msg_h_oxfer = "kB Out";
1261  char *msg_h_hname = "Nama Hos";
1262  char *msg_h_url   = "URL";
1263  char *msg_h_agent = "Agen Pengguna";
1264 @@ -246,7 +248,9 @@
1265  char *msg_mtot_ms = "Statistik Bulanan Untuk";
1266  char *msg_mtot_th = "Jumlah Capaian";
1267  char *msg_mtot_tf = "Jumlah Fail";
1268 -char *msg_mtot_tx = "Jumlah KBait";
1269 +char *msg_mtot_tx = "Jumlah kB Fail";
1270 +char *msg_mtot_ix = "Jumlah kB In";
1271 +char *msg_mtot_ox = "Jumlah kB Out";
1272  char *msg_mtot_us = "Jumlah Halaman Unik";
1273  char *msg_mtot_ur = "Jumlah Perujuk Unik";
1274  char *msg_mtot_ua = "Jumlah Agen Pengguna Unik";
1275 @@ -258,7 +262,9 @@
1276  char *msg_mtot_mpd= "Purata Halaman Sehari";
1277  char *msg_mtot_msd= "Sites per Day";
1278  char *msg_mtot_mvd= "Purata Lawatan Sehari";
1279 -char *msg_mtot_mkd= "Purata KBait Sehari";
1280 +char *msg_mtot_mkd= "Purata kB Sehari Fail";
1281 +char *msg_mtot_ikd= "Purata kB Sehari In";
1282 +char *msg_mtot_okd= "Purata kB Sehari Out";
1283  char *msg_mtot_rc = "Purata Capaian mengikut Kod Respon";
1284  
1285  /* daily total table */
1286 Index: webalizer/lang/webalizer_lang.norwegian
1287 ===================================================================
1288 --- webalizer.orig/lang/webalizer_lang.norwegian        2011-04-18 23:54:32.000000000 +0200
1289 +++ webalizer/lang/webalizer_lang.norwegian     2011-04-18 23:56:44.000000000 +0200
1290 @@ -231,7 +231,9 @@
1291  char *msg_h_visits= "Besøk";
1292  char *msg_h_files = "Filer";
1293  char *msg_h_sites = "Klientadresser";
1294 -char *msg_h_xfer  = "kilobyte";
1295 +char *msg_h_xfer  = "kB F";
1296 +char *msg_h_ixfer = "kB In";
1297 +char *msg_h_oxfer = "kB Out";
1298  char *msg_h_hname = "Servernavn";
1299  char *msg_h_url   = "URL";
1300  char *msg_h_agent = "Klienttype";
1301 @@ -257,7 +259,9 @@
1302  char *msg_mtot_ms = "Månedlig statistikk for";
1303  char *msg_mtot_th = "Totalt antall treff";
1304  char *msg_mtot_tf = "Totalt antall filer";
1305 -char *msg_mtot_tx = "Totalt antall kilobytes";
1306 +char *msg_mtot_tx = "Totalt antall kB filer";
1307 +char *msg_mtot_ix = "Totalt antall kB in";
1308 +char *msg_mtot_ox = "Totalt antall kB out";
1309  char *msg_mtot_us = "Totalt antall unike klientadresser";
1310  char *msg_mtot_ur = "Totalt antall unike henvisninger";
1311  char *msg_mtot_ua = "Totalt antall unike klienttyper";
1312 @@ -269,7 +273,9 @@
1313  char *msg_mtot_mpd= "Sider per dag";
1314  char *msg_mtot_msd= "Klientadresser per dag";
1315  char *msg_mtot_mvd= "Besök per dag";
1316 -char *msg_mtot_mkd= "Kilobytes per dag";
1317 +char *msg_mtot_mkd= "kB Filer per dag";
1318 +char *msg_mtot_ikd= "kB In per dag";
1319 +char *msg_mtot_okd= "kB Out per dag";
1320  char *msg_mtot_rc = "Treff sortert etter responskode";
1321  
1322  /* daily total table */
1323 Index: webalizer/lang/webalizer_lang.polish
1324 ===================================================================
1325 --- webalizer.orig/lang/webalizer_lang.polish   2011-04-18 23:54:32.000000000 +0200
1326 +++ webalizer/lang/webalizer_lang.polish        2011-04-18 23:56:44.000000000 +0200
1327 @@ -226,7 +226,9 @@
1328  char *msg_h_visits= "Wizyty";
1329  char *msg_h_files = "Pliki";
1330  char *msg_h_sites = "Lokalizacje";
1331 -char *msg_h_xfer  = "KB";
1332 +char *msg_h_xfer  = "kB P";
1333 +char *msg_h_ixfer = "kB In";
1334 +char *msg_h_oxfer = "kB Out";
1335  char *msg_h_hname = "Nazwa hosta";
1336  char *msg_h_url   = "URL";
1337  char *msg_h_agent = "Przegl±darka";
1338 @@ -252,7 +254,9 @@
1339  char *msg_mtot_ms = "Statystyka w miesi±cu:";
1340  char *msg_mtot_th = "Ca³kowita liczba wywo³añ";
1341  char *msg_mtot_tf = "Ca³kowita liczba plików";
1342 -char *msg_mtot_tx = "Ca³kowita liczba KB";
1343 +char *msg_mtot_tx = "Ca³kowita liczba kB plików";
1344 +char *msg_mtot_ix = "Ca³kowita liczba kB in";
1345 +char *msg_mtot_ox = "Ca³kowita liczba kB out";
1346  char *msg_mtot_us = "Ca³kowita liczba unikalnych lokalizacji";
1347  char *msg_mtot_ur = "Ca³kowita liczba unikalnych odno¶ników";
1348  char *msg_mtot_ua = "Ca³kowita liczba unikalnych przegl±darek";
1349 @@ -264,7 +268,9 @@
1350  char *msg_mtot_mpd= "Stron dziennie";
1351  char *msg_mtot_msd= "Lokalizacji dziennie";
1352  char *msg_mtot_mvd= "Wizyt dziennie";
1353 -char *msg_mtot_mkd= "Kilobajtów dziennie";
1354 +char *msg_mtot_mkd= "kB Plików dziennie";
1355 +char *msg_mtot_ikd= "kB In dziennie";
1356 +char *msg_mtot_okd= "kB Out dziennie";
1357  char *msg_mtot_rc = "Wywo³ania wed³ug kodu odpowiedzi";
1358  
1359  /* daily total table */
1360 Index: webalizer/lang/webalizer_lang.portuguese
1361 ===================================================================
1362 --- webalizer.orig/lang/webalizer_lang.portuguese       2011-04-18 23:54:32.000000000 +0200
1363 +++ webalizer/lang/webalizer_lang.portuguese    2011-04-18 23:56:44.000000000 +0200
1364 @@ -225,7 +225,9 @@
1365  char *msg_h_visits= "Visitas";
1366  char *msg_h_files = "Ficheiros";
1367  char *msg_h_sites = "Sites";
1368 -char *msg_h_xfer  = "KBytes";
1369 +char *msg_h_xfer  = "kB F";
1370 +char *msg_h_ixfer = "kB In";
1371 +char *msg_h_oxfer = "kB Out";
1372  char *msg_h_hname = "Hostname";
1373  char *msg_h_url   = "URL";
1374  char *msg_h_agent = "User Agent";
1375 @@ -251,7 +253,9 @@
1376  char *msg_mtot_ms = "Estatística Mensal de";
1377  char *msg_mtot_th = "Total de Hits";
1378  char *msg_mtot_tf = "Total de Ficheiros";
1379 -char *msg_mtot_tx = "Total de KBytes";
1380 +char *msg_mtot_tx = "Total de kB Ficheiros";
1381 +char *msg_mtot_ix = "Total de kB In";
1382 +char *msg_mtot_ox = "Total de kB Out";
1383  char *msg_mtot_us = "Total de Sites Únicos";
1384  char *msg_mtot_ur = "Total de Referrers Únicos";
1385  char *msg_mtot_ua = "Total de User Agents Únicos";
1386 @@ -263,7 +267,9 @@
1387  char *msg_mtot_mpd= "Paginas por Dia";
1388  char *msg_mtot_msd= "Sites por Dia";
1389  char *msg_mtot_mvd= "Visitas por Dia";
1390 -char *msg_mtot_mkd= "KBytes por Dia";
1391 +char *msg_mtot_mkd= "kB Files por Dia";
1392 +char *msg_mtot_ikd= "kB In por Dia";
1393 +char *msg_mtot_okd= "kB Out por Dia";
1394  char *msg_mtot_rc = "Hits por Código de Resposta";
1395  
1396  /* daily total table */
1397 Index: webalizer/lang/webalizer_lang.portuguese_brazil
1398 ===================================================================
1399 --- webalizer.orig/lang/webalizer_lang.portuguese_brazil        2011-04-18 23:54:32.000000000 +0200
1400 +++ webalizer/lang/webalizer_lang.portuguese_brazil     2011-04-18 23:56:44.000000000 +0200
1401 @@ -226,7 +226,9 @@
1402  char *msg_h_visits= "Visitas";
1403  char *msg_h_files = "Arquivos";
1404  char *msg_h_sites = "Endereços";
1405 -char *msg_h_xfer  = "KBytes";
1406 +char *msg_h_xfer  = "kB A";
1407 +char *msg_h_ixfer = "kB In";
1408 +char *msg_h_oxfer = "kB Out";
1409  char *msg_h_hname = "Servidores";
1410  char *msg_h_url   = "URLs";
1411  char *msg_h_agent = "Programa cliente";
1412 @@ -252,7 +254,9 @@
1413  char *msg_mtot_ms = "Estatísticas Mensais para";
1414  char *msg_mtot_th = "Total de hits";
1415  char *msg_mtot_tf = "Total de arquivos";
1416 -char *msg_mtot_tx = "Total de KBytes";
1417 +char *msg_mtot_tx = "Total de kB arquivos";
1418 +char *msg_mtot_ix = "Total de kB in";
1419 +char *msg_mtot_ox = "Total de kB out";
1420  char *msg_mtot_us = "Total de servidores";
1421  char *msg_mtot_ur = "Total de refer&ecirc;ncias";
1422  char *msg_mtot_ua = "Total de programas clientes";
1423 @@ -264,7 +268,9 @@
1424  char *msg_mtot_mpd= "Páginas por Dia";
1425  char *msg_mtot_msd= "Servidores por Dia";
1426  char *msg_mtot_mvd= "Visitas por Dia";
1427 -char *msg_mtot_mkd= "KBytes por Dia";
1428 +char *msg_mtot_mkd= "kB Arquivos por Dia";
1429 +char *msg_mtot_ikd= "kB In por Dia";
1430 +char *msg_mtot_okd= "kB Out por Dia";
1431  char *msg_mtot_rc = "Hits por código de resposta";
1432  
1433  /* daily total table */
1434 Index: webalizer/lang/webalizer_lang.romanian
1435 ===================================================================
1436 --- webalizer.orig/lang/webalizer_lang.romanian 2011-04-18 23:54:32.000000000 +0200
1437 +++ webalizer/lang/webalizer_lang.romanian      2011-04-18 23:56:44.000000000 +0200
1438 @@ -219,7 +219,9 @@
1439  char *msg_h_visits= "Vizite";
1440  char *msg_h_files = "Fisiere";
1441  char *msg_h_sites = "Situri";
1442 -char *msg_h_xfer  = "KBytes";
1443 +char *msg_h_xfer  = "kB F";
1444 +char *msg_h_ixfer = "kB In";
1445 +char *msg_h_oxfer = "kB Out";
1446  char *msg_h_hname = "Nume";
1447  char *msg_h_url   = "URL";
1448  char *msg_h_agent = "Navigator";
1449 @@ -245,7 +247,9 @@
1450  char *msg_mtot_ms = "Statistici lunare pentru";
1451  char *msg_mtot_th = "Total accesari";
1452  char *msg_mtot_tf = "Total fisiere";
1453 -char *msg_mtot_tx = "Total Kbytes";
1454 +char *msg_mtot_tx = "Total kB fisiere";
1455 +char *msg_mtot_ix = "Total kB in";
1456 +char *msg_mtot_ox = "Total kB out";
1457  char *msg_mtot_us = "Total situri unice";
1458  char *msg_mtot_ur = "Total pagini referente unice";
1459  char *msg_mtot_ua = "Total navigatoare";
1460 @@ -257,7 +261,9 @@
1461  char *msg_mtot_mpd= "Pagini pe zi";
1462  char *msg_mtot_msd= "Situri pe zi";
1463  char *msg_mtot_mvd= "Vizite pe zi";
1464 -char *msg_mtot_mkd= "KBytes pe zi";
1465 +char *msg_mtot_mkd= "kB Fisiere pe zi";
1466 +char *msg_mtot_ikd= "kB In pe zi";
1467 +char *msg_mtot_okd= "kB Out pe zi";
1468  char *msg_mtot_rc = "Accesari dupa codul de raspuns";
1469  
1470  /* daily total table */
1471 Index: webalizer/lang/webalizer_lang.romanian-iso-8859-2
1472 ===================================================================
1473 --- webalizer.orig/lang/webalizer_lang.romanian-iso-8859-2      2011-04-18 23:54:32.000000000 +0200
1474 +++ webalizer/lang/webalizer_lang.romanian-iso-8859-2   2011-04-18 23:56:44.000000000 +0200
1475 @@ -220,7 +220,9 @@
1476  char *msg_h_visits= "Vizite";
1477  char *msg_h_files = "Fiºiere";
1478  char *msg_h_sites = "Situri";
1479 -char *msg_h_xfer  = "KBytes";
1480 +char *msg_h_xfer  = "kB F";
1481 +char *msg_h_ixfer = "kB In";
1482 +char *msg_h_oxfer = "kB Out";
1483  char *msg_h_hname = "Nume";
1484  char *msg_h_url   = "URL";
1485  char *msg_h_agent = "Navigator";
1486 @@ -246,7 +248,9 @@
1487  char *msg_mtot_ms = "Statistici lunare pentru";
1488  char *msg_mtot_th = "Total accesãri";
1489  char *msg_mtot_tf = "Total fiºiere";
1490 -char *msg_mtot_tx = "Total Kbytes";
1491 +char *msg_mtot_tx = "Total kB fiºiere";
1492 +char *msg_mtot_ix = "Total kB in";
1493 +char *msg_mtot_ox = "Total kB out";
1494  char *msg_mtot_us = "Total situri unice";
1495  char *msg_mtot_ur = "Total pagini referente unice";
1496  char *msg_mtot_ua = "Total navigatoare";
1497 @@ -258,7 +262,9 @@
1498  char *msg_mtot_mpd= "Pagini pe zi";
1499  char *msg_mtot_msd= "Situri pe zi";
1500  char *msg_mtot_mvd= "Vizite pe zi";
1501 -char *msg_mtot_mkd= "KBytes pe zi";
1502 +char *msg_mtot_mkd= "kB Fiºiere pe zi";
1503 +char *msg_mtot_ikd= "kB In pe zi";
1504 +char *msg_mtot_okd= "kB Out pe zi";
1505  char *msg_mtot_rc = "Accesãri dupã codul de rãspuns";
1506  
1507  /* daily total table */
1508 Index: webalizer/lang/webalizer_lang.russian
1509 ===================================================================
1510 --- webalizer.orig/lang/webalizer_lang.russian  2011-04-18 23:54:32.000000000 +0200
1511 +++ webalizer/lang/webalizer_lang.russian       2011-04-18 23:56:44.000000000 +0200
1512 @@ -232,7 +232,9 @@
1513  char *msg_h_visits= "ÐÏÓÅÝÅÎÉÊ";
1514  char *msg_h_files = "ÆÁÊÌÏ×";
1515  char *msg_h_sites = "ÓÁÊÔÏ×";
1516 -char *msg_h_xfer  = "ëÂÁÊÔ";
1517 +char *msg_h_xfer  = "kB Æ";
1518 +char *msg_h_ixfer = "kB In";
1519 +char *msg_h_oxfer = "kB Out";
1520  char *msg_h_hname = "éÍÑ ÈÏÓÔÁ";
1521  char *msg_h_url   = "URL";
1522  char *msg_h_agent = "âÒÏÕÚÅÒ";
1523 @@ -258,7 +260,9 @@
1524  char *msg_mtot_ms = "óÔÁÔÉÓÔÉËÁ ÚÁ ÍÅÓÑàÎÁ";
1525  char *msg_mtot_th = "÷ÓÅÇÏ ÚÁÐÒÏÓÏ×";
1526  char *msg_mtot_tf = "÷ÓÅÇÏ ÆÁÊÌÏ×";
1527 -char *msg_mtot_tx = "÷ÓÅÇÏ ËÉÌÏÂÁÊÔ";
1528 +char *msg_mtot_tx = "÷ÓÅÇÏ kB ÆÁÊÌÏ×";
1529 +char *msg_mtot_ix = "÷ÓÅÇÏ kB In";
1530 +char *msg_mtot_ox = "÷ÓÅÇÏ kB Out";
1531  char *msg_mtot_us = "÷ÓÅÇÏ ÕÎÉËÁÌØÎÙÈ ÓÁÊÔÏ×";
1532  char *msg_mtot_ur = "÷ÓÅÇÏ ÕÎÉËÁÌØÎÙÈ ÓÓÙÌÁÀÝÉÈÓÑ ÓÔÒÁÎÉÃ";
1533  char *msg_mtot_ua = "÷ÓÅÇÏ ÕÎÉËÁÌØÎÙÈ ÂÒÏÕÚÅÒÏ×";
1534 @@ -271,6 +275,8 @@
1535  char *msg_mtot_msd= "Sites per Day";
1536  char *msg_mtot_mvd= "ðÏÓÅÝÅÎÉÊ × ÄÅÎØ";
1537  char *msg_mtot_mkd= "ïÂߣ͠נÄÅÎØ (ëÂÁÊÔ)";
1538 +char *msg_mtot_ikd= "kB In per day";
1539 +char *msg_mtot_okd= "kB Out per day";
1540  char *msg_mtot_rc = "úÁÐÒÏÓÙ ÐÏ ËÏÄÁÍ ÏÔ×ÅÔÁ";
1541  
1542  /* daily total table */
1543 Index: webalizer/lang/webalizer_lang.serbian
1544 ===================================================================
1545 --- webalizer.orig/lang/webalizer_lang.serbian  2011-04-18 23:54:32.000000000 +0200
1546 +++ webalizer/lang/webalizer_lang.serbian       2011-04-18 23:56:44.000000000 +0200
1547 @@ -215,7 +215,9 @@
1548  char *msg_h_visits= "Poseta";
1549  char *msg_h_files = "Fajlova";
1550  char *msg_h_sites = "Racunara";
1551 -char *msg_h_xfer  = "KB";
1552 +char *msg_h_xfer  = "kB F";
1553 +char *msg_h_ixfer = "kB U";
1554 +char *msg_h_oxfer = "kB Van";
1555  char *msg_h_hname = "Racunar";
1556  char *msg_h_url   = "URL";
1557  char *msg_h_agent = "Korisnicki program";
1558 @@ -241,7 +243,9 @@
1559  char *msg_mtot_ms = "Mesecna statistika za";
1560  char *msg_mtot_th = "Ukupno pristupa";
1561  char *msg_mtot_tf = "Ukupno fajlova";
1562 -char *msg_mtot_tx = "Ukupno KBajta";
1563 +char *msg_mtot_tx = "Ukupno kB fajlova";
1564 +char *msg_mtot_ix = "Ukupno kB unutra";
1565 +char *msg_mtot_ox = "Ukupno kB van";
1566  char *msg_mtot_us = "Ukupno razlicitih racunara";
1567  char *msg_mtot_ur = "Ukupno razlicitih referisanja";
1568  char *msg_mtot_ua = "Ukupno razlicitih browsera";
1569 @@ -253,7 +257,9 @@
1570  char *msg_mtot_mpd= "Fajlova na sat";
1571  char *msg_mtot_msd= "Racunara na dan";
1572  char *msg_mtot_mvd= "Poseta na dan";
1573 -char *msg_mtot_mkd= "KBajta na dan";
1574 +char *msg_mtot_mkd= "kB Fajlova na dan";
1575 +char *msg_mtot_ikd= "kB unutra na dan";
1576 +char *msg_mtot_okd= "kB van na dan";
1577  char *msg_mtot_rc = "Pristupa po kodu";
1578  
1579  /* daily total table */
1580 Index: webalizer/lang/webalizer_lang.simplified_chinese
1581 ===================================================================
1582 --- webalizer.orig/lang/webalizer_lang.simplified_chinese       2011-04-18 23:54:32.000000000 +0200
1583 +++ webalizer/lang/webalizer_lang.simplified_chinese    2011-04-18 23:56:44.000000000 +0200
1584 @@ -214,7 +214,9 @@
1585  char *msg_h_visits= "·ÃÎÊ";
1586  char *msg_h_files = "Îļþ";
1587  char *msg_h_sites = "Õ¾µã";
1588 -char *msg_h_xfer  = "ǧ×Ö½Ú";
1589 +char *msg_h_xfer  = "kB F";
1590 +char *msg_h_ixfer = "kB In";
1591 +char *msg_h_oxfer = "kB Out";
1592  char *msg_h_hname = "Ö÷»úÃû";
1593  char *msg_h_url   = "URL";
1594  char *msg_h_agent = "Óû§´úÀí";
1595 @@ -241,6 +243,8 @@
1596  char *msg_mtot_th = "×ܵã»÷Êý";
1597  char *msg_mtot_tf = "×ÜÎļþÊý";
1598  char *msg_mtot_tx = "×Üǧ×Ö½ÚÊý";
1599 +char *msg_mtot_ix = "Total kB In";
1600 +char *msg_mtot_ox = "Total kB Out";
1601  char *msg_mtot_us = "×ÜÕ¾µãÊý£¨²»°üÀ¨Öظ´Õ¾µã£©";
1602  char *msg_mtot_ur = "×ÜÒýÓÃÕßÊý£¨²»°üÀ¨Öظ´ÒýÓÃÕߣ©";
1603  char *msg_mtot_ua = "×ÜÓû§´úÀíÊý£¨²»°üÀ¨Öظ´Óû§´úÀí£©";
1604 @@ -253,6 +257,8 @@
1605  char *msg_mtot_msd= "Sites per Day";
1606  char *msg_mtot_mvd= "ÿÌì·ÃÎÊÊý";
1607  char *msg_mtot_mkd= "ÿÌìÁ÷Á¿Êý£¨µ¥Î»£ºÇ§×Ö½Ú£©";
1608 +char *msg_mtot_ikd= "kB In per day";
1609 +char *msg_mtot_okd= "kB Out per day";
1610  char *msg_mtot_rc = "°´ÏìÓ¦ÂëµÄµã»÷Êý";
1611  
1612  /* daily total table */
1613 Index: webalizer/lang/webalizer_lang.slovak
1614 ===================================================================
1615 --- webalizer.orig/lang/webalizer_lang.slovak   2011-04-18 23:54:32.000000000 +0200
1616 +++ webalizer/lang/webalizer_lang.slovak        2011-04-18 23:56:44.000000000 +0200
1617 @@ -224,7 +224,9 @@
1618  char *msg_h_visits= "náv¹tev";
1619  char *msg_h_files = "súborov";
1620  char *msg_h_sites = "miest";
1621 -char *msg_h_xfer  = "kBytov";
1622 +char *msg_h_xfer  = "kB S";
1623 +char *msg_h_ixfer = "kB In";
1624 +char *msg_h_oxfer = "kB Out";
1625  char *msg_h_hname = "poèítaè";
1626  char *msg_h_url   = "URL";
1627  char *msg_h_agent = "prehliadaè";
1628 @@ -250,7 +252,9 @@
1629  char *msg_mtot_ms = "Mesaèné ¹tatistiky za";
1630  char *msg_mtot_th = "Celkom zásahov";
1631  char *msg_mtot_tf = "Celkom súborov";
1632 -char *msg_mtot_tx = "Celkom kBytov";
1633 +char *msg_mtot_tx = "Celkom kB súborov";
1634 +char *msg_mtot_ix = "Celkom kB in";
1635 +char *msg_mtot_ox = "Celkom kB out";
1636  char *msg_mtot_us = "Celkom jedineèných miest";
1637  char *msg_mtot_ur = "Celkom jedineèných odkazovaèov";
1638  char *msg_mtot_ua = "Celkom jedineèných Browsrov";
1639 @@ -262,7 +266,9 @@
1640  char *msg_mtot_mpd= "Stránok za deò";
1641  char *msg_mtot_msd= "Miest za deò";
1642  char *msg_mtot_mvd= "Náv¹tev za deò";
1643 -char *msg_mtot_mkd= "kBytov za deò";
1644 +char *msg_mtot_mkd= "kB Súborov za deò";
1645 +char *msg_mtot_ikd= "kB In za deò";
1646 +char *msg_mtot_okd= "kB Out za deò";
1647  char *msg_mtot_rc = "Zásahy podµa kódu odpovede";
1648  
1649  /* daily total table */
1650 Index: webalizer/lang/webalizer_lang.slovene
1651 ===================================================================
1652 --- webalizer.orig/lang/webalizer_lang.slovene  2011-04-18 23:54:32.000000000 +0200
1653 +++ webalizer/lang/webalizer_lang.slovene       2011-04-18 23:56:44.000000000 +0200
1654 @@ -215,7 +215,9 @@
1655  char *msg_h_visits= "Obiskov";
1656  char *msg_h_files = "Datotek";
1657  char *msg_h_sites = "Po podroèjih";
1658 -char *msg_h_xfer  = "KB";
1659 +char *msg_h_xfer  = "kB D";
1660 +char *msg_h_ixfer = "kB In";
1661 +char *msg_h_oxfer = "kB Out";
1662  char *msg_h_hname = "Gostitelj";
1663  char *msg_h_url   = "URL";
1664  char *msg_h_agent = "Brskalnik";
1665 @@ -241,7 +243,9 @@
1666  char *msg_mtot_ms = "Meseèno poroèilo za";
1667  char *msg_mtot_th = "Skupaj zahtevkov";
1668  char *msg_mtot_tf = "Skupaj datotek";
1669 -char *msg_mtot_tx = "Skupaj KB";
1670 +char *msg_mtot_tx = "Skupaj kB datotek";
1671 +char *msg_mtot_ix = "Skupaj kB in";
1672 +char *msg_mtot_ox = "Skupaj kB out";
1673  char *msg_mtot_us = "Skupaj enkr. podroèij";
1674  char *msg_mtot_ur = "Skupaj enkr. napotiteljev";
1675  char *msg_mtot_ua = "Skupaj enkr. brskalnikov";
1676 @@ -253,7 +257,9 @@
1677  char *msg_mtot_mpd= "Strani dnevno";
1678  char *msg_mtot_msd= "Podroèij dnevno";
1679  char *msg_mtot_mvd= "Obiskov dnevno";
1680 -char *msg_mtot_mkd= "KB dnevno";
1681 +char *msg_mtot_mkd= "kB Datotek dnevno";
1682 +char *msg_mtot_ikd= "kB In dnevno";
1683 +char *msg_mtot_okd= "kB Out dnevno";
1684  char *msg_mtot_rc = "Zahtevki po odzivnih kodah";
1685  
1686  /* daily Skupaj table */
1687 Index: webalizer/lang/webalizer_lang.spanish
1688 ===================================================================
1689 --- webalizer.orig/lang/webalizer_lang.spanish  2011-04-18 23:54:32.000000000 +0200
1690 +++ webalizer/lang/webalizer_lang.spanish       2011-04-18 23:56:44.000000000 +0200
1691 @@ -232,7 +232,9 @@
1692  char *msg_h_visits= "Visitas";
1693  char *msg_h_files = "Archivos";
1694  char *msg_h_sites = "Clientes";
1695 -char *msg_h_xfer  = "KBytes";
1696 +char *msg_h_xfer  = "kB A";
1697 +char *msg_h_ixfer = "kB In";
1698 +char *msg_h_oxfer = "kB Out";
1699  char *msg_h_hname = "Máquina";
1700  char *msg_h_url   = "URL";
1701  char *msg_h_agent = "Navegador";
1702 @@ -258,7 +260,9 @@
1703  char *msg_mtot_ms = "Estadísticas mensuales de";
1704  char *msg_mtot_th = "Total Accesos";
1705  char *msg_mtot_tf = "Total Archivos";
1706 -char *msg_mtot_tx = "Total KBytes";
1707 +char *msg_mtot_tx = "Total kB Archivos";
1708 +char *msg_mtot_ix = "Total kB In";
1709 +char *msg_mtot_ox = "Total kB Out";
1710  char *msg_mtot_us = "Total Clientes";
1711  char *msg_mtot_ur = "Total Enlaces origen";
1712  char *msg_mtot_ua = "Total Navegadores";
1713 @@ -270,7 +274,9 @@
1714  char *msg_mtot_mpd= "Páginas por Día";
1715  char *msg_mtot_msd= "Clientes por Día";
1716  char *msg_mtot_mvd= "Visitas por Día";
1717 -char *msg_mtot_mkd= "KBytes por Día";
1718 +char *msg_mtot_mkd= "kB Archivos por Día";
1719 +char *msg_mtot_ikd= "kB In por Día";
1720 +char *msg_mtot_okd= "kB Out por Día";
1721  char *msg_mtot_rc = "Accesos por código de respuesta";
1722  
1723  /* daily total table */
1724 Index: webalizer/lang/webalizer_lang.swedish
1725 ===================================================================
1726 --- webalizer.orig/lang/webalizer_lang.swedish  2011-04-18 23:54:32.000000000 +0200
1727 +++ webalizer/lang/webalizer_lang.swedish       2011-04-18 23:56:44.000000000 +0200
1728 @@ -243,7 +243,9 @@
1729  char *msg_h_visits= "Besök.";  //      GD
1730  char *msg_h_files = "Filer";
1731  char *msg_h_sites = "Klient.";
1732 -char *msg_h_xfer  = "kilobyte";
1733 +char *msg_h_xfer  = "kB F";
1734 +char *msg_h_ixfer = "kB In";
1735 +char *msg_h_oxfer = "kB Ut";
1736  //     char *msg_h_hname = "V&auml;rdnamn";    //      HTML
1737  char *msg_h_hname = "Värdnamn";        //      GD
1738  char *msg_h_url   = "URL";
1739 @@ -272,7 +274,9 @@
1740  char *msg_mtot_ms = "M&aring;natlig statistik f&ouml;r";
1741  char *msg_mtot_th = "Totalt antal tr&auml;ffar";
1742  char *msg_mtot_tf = "Totalt antal filer";
1743 -char *msg_mtot_tx = "Totalt antal kilobytes";
1744 +char *msg_mtot_tx = "Totalt antal kB filer";
1745 +char *msg_mtot_ix = "Totalt antal kB in";
1746 +char *msg_mtot_ox = "Totalt antal kB ut";
1747  char *msg_mtot_us = "Totalt antal unika klientadresser";
1748  char *msg_mtot_ur = "Totalt antal unika h&auml;nvisningar";
1749  char *msg_mtot_ua = "Totalt antal unika klienttyper";
1750 @@ -284,7 +288,9 @@
1751  char *msg_mtot_mpd= "Sidor per dag";
1752  char *msg_mtot_msd= "Klientadresser per dag";
1753  char *msg_mtot_mvd= "Bes&ouml;k per dag";
1754 -char *msg_mtot_mkd= "Kilobytes per dag";
1755 +char *msg_mtot_mkd= "kB Filer per dag";
1756 +char *msg_mtot_ikd= "kB In per dag";
1757 +char *msg_mtot_okd= "kB Ut per dag";
1758  char *msg_mtot_rc = "Tr&auml;ffar sorterade efter svarskod";
1759  
1760  /* daily total table */
1761 Index: webalizer/lang/webalizer_lang.turkish
1762 ===================================================================
1763 --- webalizer.orig/lang/webalizer_lang.turkish  2011-04-18 23:54:32.000000000 +0200
1764 +++ webalizer/lang/webalizer_lang.turkish       2011-04-18 23:56:44.000000000 +0200
1765 @@ -220,7 +220,9 @@
1766  char *msg_h_visits= "Ziyaret";
1767  char *msg_h_files = "Dosya";
1768  char *msg_h_sites = "Istemci";
1769 -char *msg_h_xfer  = "KBayt'a Gore";
1770 +char *msg_h_xfer  = "kB D";
1771 +char *msg_h_ixfer = "kB In";
1772 +char *msg_h_oxfer = "kB Out";
1773  char *msg_h_hname = "Makine Adi";
1774  char *msg_h_url   = "URL";
1775  char *msg_h_agent = "Kullanici Ajani";
1776 @@ -246,7 +248,9 @@
1777  char *msg_mtot_ms = "Aylik Istatistikler:";
1778  char *msg_mtot_th = "Toplam HIT'ler";
1779  char *msg_mtot_tf = "Toplam Dosyalar";
1780 -char *msg_mtot_tx = "Toplam KBaytlar";
1781 +char *msg_mtot_tx = "Toplam kB Dosyalar";
1782 +char *msg_mtot_ix = "Toplam kB In";
1783 +char *msg_mtot_ox = "Toplam kB Out";
1784  char *msg_mtot_us = "Toplam Ayni Istemciler";
1785  char *msg_mtot_ur = "Toplam Ayni Referanslar";
1786  char *msg_mtot_ua = "Toplam Ayni Kullanici Ajanlari";
1787 @@ -258,7 +262,9 @@
1788  char *msg_mtot_mpd= "Gunluk Sayfalar";
1789  char *msg_mtot_msd= "Gunluk Istemciler";
1790  char *msg_mtot_mvd= "Gunluk Ziyaretler";
1791 -char *msg_mtot_mkd= "Gunluk KBaytlar";
1792 +char *msg_mtot_mkd= "Gunluk kB Dosyalar";
1793 +char *msg_mtot_ikd= "Gunluk kB In";
1794 +char *msg_mtot_okd= "Gunluk kB Out";
1795  char *msg_mtot_rc = "Cevap Koduna Gore HIT";
1796  
1797  /* daily total table */
1798 Index: webalizer/lang/webalizer_lang.ukrainian
1799 ===================================================================
1800 --- webalizer.orig/lang/webalizer_lang.ukrainian        2011-04-18 23:54:39.000000000 +0200
1801 +++ webalizer/lang/webalizer_lang.ukrainian     2011-04-18 23:56:44.000000000 +0200
1802 @@ -224,7 +224,9 @@
1803  char *msg_h_visits= "צÄצÄ.";
1804  char *msg_h_files = "ÆÁÊ̦×";
1805  char *msg_h_sites = "ÓÁÊÔ¦×";
1806 -char *msg_h_xfer  = "ëâÁÊÔ";
1807 +char *msg_h_xfer  = "kB Æ";
1808 +char *msg_h_ixfer = "kB In";
1809 +char *msg_h_oxfer = "kB Out";
1810  char *msg_h_hname = "¦Í'Ñ ÈÏÓÔÁ";
1811  char *msg_h_url   = "URL";
1812  char *msg_h_agent = "ÁÇÅÎÔ ËÏÒÉÓÔÕ×ÁÞÁ";
1813 @@ -251,6 +253,8 @@
1814  char *msg_mtot_th = "÷ÓØÏÇÏ ÚÁÐÉÔ¦×";
1815  char *msg_mtot_tf = "÷ÓØÏÇÏ ÆÁÊ̦×";
1816  char *msg_mtot_tx = "÷ÓØÏÇÏ ëâÁÊÔ";
1817 +char *msg_mtot_ix = "÷ÓØÏÇÏ ëâÁÊÔ In";
1818 +char *msg_mtot_ox = "÷ÓØÏÇÏ ëâÁÊÔ Out";
1819  char *msg_mtot_us = "÷ÓØÏÇÏ ÕΦËÁÌØÎÉÈ ÓÁÊÔ¦×";
1820  char *msg_mtot_ur = "÷ÓØÏÇÏ ÕΦËÁÌØÎÉÈ ÐÏÓÉÌÁÎØ";
1821  char *msg_mtot_ua = "÷ÓØÏÇÏ ÕΦËÁÌØÎÉÈ ÁÇÅÎԦנËÏÒÉÓÔÕ×ÁÞÁ";
1822 @@ -262,7 +266,9 @@
1823  char *msg_mtot_mpd= "óÔÏÒ¦ÎÏË ÚÁ ÄÅÎØ";
1824  char *msg_mtot_msd= "Sites per Day";
1825  char *msg_mtot_mvd= "÷¦ÄצÄÕ×ÁÎØ ÚÁ ÄÅÎØ";
1826 -char *msg_mtot_mkd= "KâÁÊÔ ÚÁ ÄÅÎØ";
1827 +char *msg_mtot_mkd= "KâÁÊÔ æÁÊ̦נÚÁ ÄÅÎØ";
1828 +char *msg_mtot_ikd= "KâÁÊÔ In ÚÁ ÄÅÎØ";
1829 +char *msg_mtot_okd= "KâÁÊÔ Out ÚÁ ÄÅÎØ";
1830  char *msg_mtot_rc = "ú×ÅÒÔÁÎØ ÚÁ ËÏÄÏ͠צÄÐÏצĦ";
1831  
1832  /* daily total table */
1833 Index: webalizer/output.c
1834 ===================================================================
1835 --- webalizer.orig/output.c     2011-04-18 23:56:42.000000000 +0200
1836 +++ webalizer/output.c  2011-04-18 23:56:44.000000000 +0200
1837 @@ -308,8 +308,10 @@
1838                        tm_file,             /* data 2 (files)    */
1839                        tm_site,             /* data 3 (sites)    */
1840                        tm_xfer,             /* data 4 (kbytes)   */
1841 -                      tm_page,             /* data 5 (pages)    */
1842 -                      tm_visit);           /* data 6 (visits)   */
1843 +                      tm_ixfer,            /* data 5 (kbytes)   */
1844 +                      tm_oxfer,            /* data 6 (kbytes)   */
1845 +                      tm_page,             /* data 7 (pages)    */
1846 +                      tm_visit);           /* data 8 (visits)   */
1847     }
1848  
1849     if (hourly_graph)
1850 @@ -507,7 +509,7 @@
1851  {
1852     int i,days_in_month;
1853     u_int64_t max_files=0,max_hits=0,max_visits=0,max_pages=0,max_sites=0;
1854 -   double max_xfer=0.0;
1855 +   double max_xfer=0.0,max_ixfer=0.0,max_oxfer=0.0;
1856  
1857     days_in_month=(l_day-f_day)+1;
1858     for (i=0;i<31;i++)
1859 @@ -518,6 +520,8 @@
1860        if (tm_visit[i]>max_visits) max_visits= tm_visit[i];
1861        if (tm_site[i]>max_sites)   max_sites = tm_site[i];
1862        if (tm_xfer[i]>max_xfer)    max_xfer  = tm_xfer[i];
1863 +      if (tm_ixfer[i]>max_ixfer)  max_ixfer = tm_ixfer[i];
1864 +      if (tm_oxfer[i]>max_oxfer)  max_oxfer = tm_oxfer[i];
1865     }
1866  
1867     fprintf(out_fp,"<TABLE WIDTH=510 BORDER=2 CELLSPACING=1 CELLPADDING=1>\n");
1868 @@ -545,6 +549,12 @@
1869     fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n"     \
1870        "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%.0f</B>"              \
1871        "</FONT></TD></TR>\n",msg_mtot_tx,t_xfer/1024);
1872 +   fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n"     \
1873 +      "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%.0f</B>"              \
1874 +      "</FONT></TD></TR>\n",msg_mtot_ix,t_ixfer/1024);
1875 +   fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n"     \
1876 +      "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%.0f</B>"              \
1877 +      "</FONT></TD></TR>\n",msg_mtot_ox,t_oxfer/1024);
1878     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
1879     /**********************************************/
1880     /* Unique Sites */
1881 @@ -629,6 +639,18 @@
1882        "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%.0f</B>"                   \
1883        "</FONT></TD></TR>\n",msg_mtot_mkd,
1884        (t_xfer/1024)/days_in_month,max_xfer/1024);
1885 +   fprintf(out_fp,"<TR>"                                                     \
1886 +      "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n"                               \
1887 +      "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
1888 +      "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%.0f</B>"                   \
1889 +      "</FONT></TD></TR>\n",msg_mtot_ikd,
1890 +      (t_ixfer/1024)/days_in_month,max_ixfer/1024);
1891 +   fprintf(out_fp,"<TR>"                                                     \
1892 +      "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n"                               \
1893 +      "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
1894 +      "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%.0f</B>"                   \
1895 +      "</FONT></TD></TR>\n",msg_mtot_okd,
1896 +      (t_oxfer/1024)/days_in_month,max_oxfer/1024);
1897     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
1898     /**********************************************/
1899     /* response code totals */
1900 @@ -662,7 +684,7 @@
1901     fprintf(out_fp,"<TABLE WIDTH=510 BORDER=2 CELLSPACING=1 CELLPADDING=1>\n");
1902     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
1903     /* Daily statistics for ... */
1904 -   fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" COLSPAN=13 ALIGN=center>"          \
1905 +   fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" COLSPAN=17 ALIGN=center>"          \
1906             "%s %s %d</TH></TR>\n",
1907             GREY,msg_dtot_ds,l_month[cur_month-1], cur_year);
1908     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
1909 @@ -679,6 +701,10 @@
1910                    "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>"               \
1911                    "<FONT SIZE=\"-1\">%s</FONT></TH>\n"                       \
1912                    "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>"               \
1913 +                  "<FONT SIZE=\"-1\">%s</FONT></TH>\n"                       \
1914 +                  "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>"               \
1915 +                  "<FONT SIZE=\"-1\">%s</FONT></TH>\n"                       \
1916 +                  "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>"               \
1917                    "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",
1918                    GREY,       msg_h_day,
1919                    HITCOLOR,   msg_h_hits,
1920 @@ -686,7 +712,9 @@
1921                    PAGECOLOR,  msg_h_pages,
1922                    VISITCOLOR, msg_h_visits,
1923                    SITECOLOR,  msg_h_sites,
1924 -                  KBYTECOLOR, msg_h_xfer);
1925 +                  KBYTECOLOR, msg_h_xfer,
1926 +                  LTBLUE,  msg_h_ixfer,
1927 +                  GREEN,   msg_h_oxfer);
1928     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
1929  
1930     /* skip beginning blank days in a month */
1931 @@ -722,8 +750,16 @@
1932                tm_site[i],PCENT(tm_site[i],t_site));
1933        fprintf(out_fp,"<TD ALIGN=right>"                                      \
1934                "<FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n"                  \
1935 -              "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD></TR>\n",
1936 +              "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n",
1937                tm_xfer[i]/1024,PCENT(tm_xfer[i],t_xfer));
1938 +      fprintf(out_fp,"<TD ALIGN=right>"                                      \
1939 +              "<FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n"                  \
1940 +              "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n",
1941 +              tm_ixfer[i]/1024,PCENT(tm_ixfer[i],t_ixfer));
1942 +      fprintf(out_fp,"<TD ALIGN=right>"                                      \
1943 +              "<FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n"                  \
1944 +              "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD></TR>\n",
1945 +              tm_oxfer[i]/1024,PCENT(tm_oxfer[i],t_oxfer));
1946     }
1947     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
1948     fprintf(out_fp,"</TABLE>\n");
1949 @@ -738,14 +774,14 @@
1950  {
1951     int       i,days_in_month;
1952     u_int64_t avg_file=0;
1953 -   double    avg_xfer=0.0;
1954 +   double    avg_xfer=0.0,avg_ixfer=0.0,avg_oxfer=0.0;
1955  
1956     days_in_month=(l_day-f_day)+1;
1957  
1958     /* Hourly stats */
1959     fprintf(out_fp,"<TABLE WIDTH=510 BORDER=2 CELLSPACING=1 CELLPADDING=1>\n");
1960     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
1961 -   fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" COLSPAN=13 ALIGN=center>"\
1962 +   fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" COLSPAN=19 ALIGN=center>"\
1963             "%s %s %d</TH></TR>\n",
1964             GREY,msg_htot_hs,l_month[cur_month-1], cur_year);
1965     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
1966 @@ -758,12 +794,18 @@
1967                    "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=3>"     \
1968                    "<FONT SIZE=\"-1\">%s</FONT></TH>\n"             \
1969                    "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=3>"     \
1970 +                  "<FONT SIZE=\"-1\">%s</FONT></TH>\n"             \
1971 +                  "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=3>"     \
1972 +                  "<FONT SIZE=\"-1\">%s</FONT></TH>\n"             \
1973 +                  "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=3>"     \
1974                    "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",
1975                    GREY,       msg_h_hour,
1976                    HITCOLOR,   msg_h_hits,
1977                    FILECOLOR,  msg_h_files,
1978                    PAGECOLOR,  msg_h_pages,
1979 -                  KBYTECOLOR, msg_h_xfer);
1980 +                  KBYTECOLOR, msg_h_xfer,
1981 +                  LTBLUE,  msg_h_ixfer,
1982 +                  GREEN,   msg_h_oxfer);
1983     fprintf(out_fp,"<TR><TH ALIGN=center BGCOLOR=\"%s\">"           \
1984                    "<FONT SIZE=\"-2\">%s</FONT></TH>\n"             \
1985                    "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>"     \
1986 @@ -782,8 +824,18 @@
1987     fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">"               \
1988                    "<FONT SIZE=\"-2\">%s</FONT></TH>\n"             \
1989                    "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>"     \
1990 -                  "<FONT SIZE=\"-2\">%s</FONT></TH></TR>\n",
1991 +                  "<FONT SIZE=\"-2\">%s</FONT></TH>\n",
1992                    KBYTECOLOR, msg_h_avg, KBYTECOLOR, msg_h_total);
1993 +   fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">"               \
1994 +                  "<FONT SIZE=\"-2\">%s</FONT></TH>\n"             \
1995 +                  "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>"     \
1996 +                  "<FONT SIZE=\"-2\">%s</FONT></TH>\n",
1997 +                  LTBLUE, msg_h_avg, LTBLUE, msg_h_total);
1998 +   fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">"               \
1999 +                  "<FONT SIZE=\"-2\">%s</FONT></TH>\n"             \
2000 +                  "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>"     \
2001 +                  "<FONT SIZE=\"-2\">%s</FONT></TH></TR>\n",
2002 +                  GREEN, msg_h_avg, GREEN, msg_h_total);
2003  
2004     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
2005     for (i=0;i<24;i++)
2006 @@ -811,11 +863,25 @@
2007        fprintf(out_fp,
2008           "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
2009           "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
2010 -         "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD></TR>\n",
2011 +         "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n",
2012           (th_xfer[i]/days_in_month)/1024,th_xfer[i]/1024,
2013           PCENT(th_xfer[i],t_xfer));
2014 +      fprintf(out_fp,
2015 +         "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
2016 +         "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
2017 +         "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n",
2018 +         (th_ixfer[i]/days_in_month)/1024,th_ixfer[i]/1024,
2019 +         PCENT(th_ixfer[i],t_ixfer));
2020 +      fprintf(out_fp,
2021 +         "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
2022 +         "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
2023 +         "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD></TR>\n",
2024 +         (th_oxfer[i]/days_in_month)/1024,th_oxfer[i]/1024,
2025 +         PCENT(th_oxfer[i],t_oxfer));
2026        avg_file += th_file[i]/days_in_month;
2027 -      avg_xfer+= (th_xfer[i]/days_in_month)/1024;
2028 +      avg_xfer += (th_xfer[i]/days_in_month)/1024;
2029 +      avg_ixfer+= (th_ixfer[i]/days_in_month)/1024;
2030 +      avg_oxfer+= (th_oxfer[i]/days_in_month)/1024;
2031     }
2032     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
2033     fprintf(out_fp,"</TABLE>\n<P>\n");
2034 @@ -853,11 +919,11 @@
2035  
2036     fprintf(out_fp,"<TABLE WIDTH=510 BORDER=2 CELLSPACING=1 CELLPADDING=1>\n");
2037     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
2038 -   if (flag) fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=10>" \
2039 +   if (flag) fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=14>" \
2040             "%s %llu %s %llu %s %s %s</TH></TR>\n",
2041             GREY, msg_top_top,tot_num,msg_top_of,
2042             t_site,msg_top_s,msg_h_by,msg_h_xfer);
2043 -   else      fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=10>" \
2044 +   else      fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=14>" \
2045             "%s %llu %s %llu %s</TH></TR>\n",
2046             GREY,msg_top_top, tot_num, msg_top_of, t_site, msg_top_s);
2047     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
2048 @@ -870,6 +936,10 @@
2049     fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"              \
2050            "<FONT SIZE=\"-1\">%s</FONT></TH>\n",KBYTECOLOR,msg_h_xfer);
2051     fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"              \
2052 +          "<FONT SIZE=\"-1\">%s</FONT></TH>\n",LTBLUE,msg_h_ixfer);
2053 +   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"              \
2054 +          "<FONT SIZE=\"-1\">%s</FONT></TH>\n",GREEN,msg_h_oxfer);
2055 +   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"              \
2056            "<FONT SIZE=\"-1\">%s</FONT></TH>\n",VISITCOLOR,msg_h_visits);
2057     fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center>"                        \
2058            "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",MISCCOLOR,msg_h_hname);
2059 @@ -894,13 +964,19 @@
2060                "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"    \
2061                "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
2062                "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"    \
2063 -              "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%llu</B></FONT></TD>\n" \
2064 +              "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
2065 +              "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"    \
2066 +              "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
2067 +              "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"    \
2068 +               "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%llu</B></FONT></TD>\n" \
2069                "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"    \
2070                "<TD ALIGN=left NOWRAP><FONT SIZE=\"-1\">",
2071                i+1,hptr->count,
2072                (t_hit==0)?0:((float)hptr->count/t_hit)*100.0,hptr->files,
2073                (t_file==0)?0:((float)hptr->files/t_file)*100.0,hptr->xfer/1024,
2074 -              (t_xfer==0)?0:((float)hptr->xfer/t_xfer)*100.0,hptr->visit,
2075 +              (t_xfer==0)?0:((float)hptr->xfer/t_xfer)*100.0,hptr->ixfer/1024,
2076 +              (t_ixfer==0)?0:((float)hptr->ixfer/t_ixfer)*100.0,hptr->oxfer/1024,
2077 +              (t_oxfer==0)?0:((float)hptr->oxfer/t_oxfer)*100.0,hptr->visit,
2078                (t_visit==0)?0:((float)hptr->visit/t_visit)*100.0);
2079  
2080           if ((hptr->flag==OBJ_GRP)&&hlite_groups)
2081 @@ -921,7 +997,7 @@
2082           if (all_sites_page(h_reg, h_grp))
2083           {
2084              fprintf(out_fp,"<TR BGCOLOR=\"%s\">",GRPCOLOR);
2085 -            fprintf(out_fp,"<TD COLSPAN=10 ALIGN=\"center\">\n");
2086 +            fprintf(out_fp,"<TD COLSPAN=14 ALIGN=\"center\">\n");
2087              fprintf(out_fp,"<FONT SIZE=\"-1\">");
2088              fprintf(out_fp,"<A HREF=\"./site_%04d%02d.%s\">",
2089                      cur_year,cur_month,html_ext);
2090 @@ -958,9 +1034,12 @@
2091  
2092     fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n");
2093  
2094 -   fprintf(out_fp," %12s      %12s      %12s      %12s      %s\n",
2095 -           msg_h_hits, msg_h_files, msg_h_xfer, msg_h_visits, msg_h_hname);
2096 +   fprintf(out_fp," %12s      %12s      %12s      %12s      %12s"          \
2097 +                  "      %12s      %s\n",
2098 +           msg_h_hits, msg_h_files, msg_h_xfer, msg_h_ixfer, msg_h_oxfer,
2099 +           msg_h_visits, msg_h_hname);
2100     fprintf(out_fp,"----------------  ----------------  ----------------  " \
2101 +                  "----------------  ----------------  "                   \
2102                    "----------------  --------------------\n\n");
2103  
2104     /* Do groups first (if any) */
2105 @@ -972,11 +1051,13 @@
2106        {
2107           fprintf(out_fp,
2108              "%-8llu %6.02f%%  %8llu %6.02f%%  %8.0f %6.02f%%  "            \
2109 -            "%8llu %6.02f%%  %s\n",
2110 +            "%8.0f %6.02f%%  %8.0f %6.02f%%  %8llu %6.02f%%  %s\n",
2111              hptr->count,
2112              (t_hit==0)?0:((float)hptr->count/t_hit)*100.0,hptr->files,
2113              (t_file==0)?0:((float)hptr->files/t_file)*100.0,hptr->xfer/1024,
2114 -            (t_xfer==0)?0:((float)hptr->xfer/t_xfer)*100.0,hptr->visit,
2115 +            (t_xfer==0)?0:((float)hptr->xfer/t_xfer)*100.0,hptr->ixfer/1024,
2116 +            (t_ixfer==0)?0:((float)hptr->ixfer/t_ixfer)*100.0,hptr->oxfer/1024,
2117 +            (t_oxfer==0)?0:((float)hptr->oxfer/t_oxfer)*100.0,hptr->visit,
2118              (t_visit==0)?0:((float)hptr->visit/t_visit)*100.0,
2119              hptr->string);
2120           h_grp--;
2121 @@ -994,11 +1075,13 @@
2122        {
2123           fprintf(out_fp,
2124              "%-8llu %6.02f%%  %8llu %6.02f%%  %8.0f %6.02f%%  "            \
2125 -            "%8llu %6.02f%%  %s\n",
2126 +            "%8.0f %6.02f%%  %8.0f %6.02f%%  %8llu %6.02f%%  %s\n",
2127              hptr->count,
2128              (t_hit==0)?0:((float)hptr->count/t_hit)*100.0,hptr->files,
2129              (t_file==0)?0:((float)hptr->files/t_file)*100.0,hptr->xfer/1024,
2130 -            (t_xfer==0)?0:((float)hptr->xfer/t_xfer)*100.0,hptr->visit,
2131 +            (t_xfer==0)?0:((float)hptr->xfer/t_xfer)*100.0,hptr->ixfer/1024,
2132 +            (t_ixfer==0)?0:((float)hptr->ixfer/t_ixfer)*100.0,hptr->oxfer/1024,
2133 +            (t_oxfer==0)?0:((float)hptr->oxfer/t_oxfer)*100.0,hptr->visit,
2134              (t_visit==0)?0:((float)hptr->visit/t_visit)*100.0,
2135              hptr->string);
2136           h_reg--;
2137 @@ -1042,11 +1125,11 @@
2138  
2139     fprintf(out_fp,"<TABLE WIDTH=510 BORDER=2 CELLSPACING=1 CELLPADDING=1>\n");
2140     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
2141 -   if (flag) fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=6>"  \
2142 +   if (flag) fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=10>"  \
2143             "%s %llu %s %llu %s %s %s</TH></TR>\n",
2144             GREY,msg_top_top,tot_num,msg_top_of,
2145             t_url,msg_top_u,msg_h_by,msg_h_xfer);
2146 -   else fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=6>"   \
2147 +   else fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=10>"   \
2148             "%s %llu %s %llu %s</TH></TR>\n",
2149             GREY,msg_top_top,tot_num,msg_top_of,t_url,msg_top_u);
2150     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
2151 @@ -1058,6 +1141,12 @@
2152     fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"            \
2153                    "<FONT SIZE=\"-1\">%s</FONT></TH>\n",
2154                    KBYTECOLOR,msg_h_xfer);
2155 +   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"            \
2156 +                  "<FONT SIZE=\"-1\">%s</FONT></TH>\n",
2157 +                  LTBLUE,msg_h_ixfer);
2158 +   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"            \
2159 +                  "<FONT SIZE=\"-1\">%s</FONT></TH>\n",
2160 +                  GREEN,msg_h_oxfer);
2161     fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center>"                      \
2162                    "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",
2163                    MISCCOLOR,msg_h_url);
2164 @@ -1080,11 +1169,19 @@
2165              "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"   \
2166              "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n"\
2167              "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"   \
2168 +            "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n"\
2169 +            "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"   \
2170 +            "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n"\
2171 +            "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"   \
2172              "<TD ALIGN=left NOWRAP><FONT SIZE=\"-1\">",
2173              i+1,uptr->count,
2174              (t_hit==0)?0:((float)uptr->count/t_hit)*100.0,
2175              uptr->xfer/1024,
2176 -            (t_xfer==0)?0:((float)uptr->xfer/t_xfer)*100.0);
2177 +            (t_xfer==0)?0:((float)uptr->xfer/t_xfer)*100.0,
2178 +            uptr->ixfer/1024,
2179 +            (t_ixfer==0)?0:((float)uptr->ixfer/t_ixfer)*100.0,
2180 +            uptr->oxfer/1024,
2181 +            (t_oxfer==0)?0:((float)uptr->oxfer/t_oxfer)*100.0);
2182  
2183           if (uptr->flag==OBJ_GRP)
2184           {
2185 @@ -1130,7 +1227,7 @@
2186           if (all_urls_page(u_reg, u_grp))
2187           {
2188              fprintf(out_fp,"<TR BGCOLOR=\"%s\">",GRPCOLOR);
2189 -            fprintf(out_fp,"<TD COLSPAN=6 ALIGN=\"center\">\n");
2190 +            fprintf(out_fp,"<TD COLSPAN=10 ALIGN=\"center\">\n");
2191              fprintf(out_fp,"<FONT SIZE=\"-1\">");
2192              fprintf(out_fp,"<A HREF=\"./url_%04d%02d.%s\">",
2193                      cur_year,cur_month,html_ext);
2194 @@ -1167,10 +1264,10 @@
2195  
2196     fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n");
2197  
2198 -   fprintf(out_fp," %12s      %12s      %s\n",
2199 -           msg_h_hits,msg_h_xfer,msg_h_url);
2200 -   fprintf(out_fp,"----------------  ----------------  " \
2201 -                  "--------------------\n\n");
2202 +   fprintf(out_fp," %12s      %12s      %12s      %12s      %s\n",
2203 +           msg_h_hits,msg_h_xfer,msg_h_ixfer,msg_h_oxfer,msg_h_url);
2204 +   fprintf(out_fp,"----------------  ----------------  ----------------  " \
2205 +                  "----------------  --------------------\n\n");
2206  
2207     /* do groups first (if any) */
2208     pointer=u_array;
2209 @@ -1179,11 +1276,16 @@
2210        uptr=*pointer++;
2211        if (uptr->flag == OBJ_GRP)
2212        {
2213 -         fprintf(out_fp,"%-8llu %6.02f%%  %8.0f %6.02f%%  %s\n",
2214 +         fprintf(out_fp,"%-8llu %6.02f%%  %8.0f %6.02f%%  %8.0f %6.02f%%  "  \
2215 +                        "%8.0f %6.02f%%  %s\n",
2216              uptr->count,
2217              (t_hit==0)?0:((float)uptr->count/t_hit)*100.0,
2218              uptr->xfer/1024,
2219              (t_xfer==0)?0:((float)uptr->xfer/t_xfer)*100.0,
2220 +            uptr->ixfer/1024,
2221 +            (t_ixfer==0)?0:((float)uptr->ixfer/t_ixfer)*100.0,
2222 +            uptr->oxfer/1024,
2223 +            (t_oxfer==0)?0:((float)uptr->oxfer/t_oxfer)*100.0,
2224              uptr->string);
2225           u_grp--;
2226        }
2227 @@ -1198,11 +1300,16 @@
2228        uptr=*pointer++;
2229        if (uptr->flag == OBJ_REG)
2230        {
2231 -         fprintf(out_fp,"%-8llu %6.02f%%  %8.0f %6.02f%%  %s\n",
2232 +         fprintf(out_fp,"%-8llu %6.02f%%  %8.0f %6.02f%%  %8.0f %6.02f%%  "  \
2233 +                        "%8.0f %6.02f%%  %s\n",
2234              uptr->count,
2235              (t_hit==0)?0:((float)uptr->count/t_hit)*100.0,
2236              uptr->xfer/1024,
2237              (t_xfer==0)?0:((float)uptr->xfer/t_xfer)*100.0,
2238 +            uptr->ixfer/1024,
2239 +            (t_ixfer==0)?0:((float)uptr->ixfer/t_ixfer)*100.0,
2240 +            uptr->oxfer/1024,
2241 +            (t_oxfer==0)?0:((float)uptr->oxfer/t_oxfer)*100.0,
2242              uptr->string);
2243           u_reg--;
2244        }
2245 @@ -1780,7 +1887,7 @@
2246  
2247     fprintf(out_fp,"<TABLE WIDTH=510 BORDER=2 CELLSPACING=1 CELLPADDING=1>\n");
2248     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
2249 -   fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=10>" \
2250 +   fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=14>" \
2251             "%s %llu %s %llu %s</TH></TR>\n",
2252             GREY,msg_top_top, tot_num, msg_top_of, t_user, msg_top_i);
2253     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
2254 @@ -1793,6 +1900,10 @@
2255     fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"             \
2256            "<FONT SIZE=\"-1\">%s</FONT></TH>\n",KBYTECOLOR,msg_h_xfer);
2257     fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"             \
2258 +          "<FONT SIZE=\"-1\">%s</FONT></TH>\n",LTBLUE,msg_h_ixfer);
2259 +   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"             \
2260 +          "<FONT SIZE=\"-1\">%s</FONT></TH>\n",GREEN,msg_h_oxfer);
2261 +   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"             \
2262            "<FONT SIZE=\"-1\">%s</FONT></TH>\n",VISITCOLOR,msg_h_visits);
2263     fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center>"                       \
2264            "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",MISCCOLOR,msg_h_uname);
2265 @@ -1817,13 +1928,19 @@
2266                "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"    \
2267                "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
2268                "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"    \
2269 +              "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
2270 +              "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"    \
2271 +              "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
2272 +              "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"    \
2273                "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%llu</B></FONT></TD>\n" \
2274                "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"    \
2275                "<TD ALIGN=left NOWRAP><FONT SIZE=\"-1\">",
2276                i+1,iptr->count,
2277                (t_hit==0)?0:((float)iptr->count/t_hit)*100.0,iptr->files,
2278                (t_file==0)?0:((float)iptr->files/t_file)*100.0,iptr->xfer/1024,
2279 -              (t_xfer==0)?0:((float)iptr->xfer/t_xfer)*100.0,iptr->visit,
2280 +              (t_xfer==0)?0:((float)iptr->xfer/t_xfer)*100.0,iptr->ixfer/1024,
2281 +              (t_ixfer==0)?0:((float)iptr->ixfer/t_ixfer)*100.0,iptr->oxfer/1024,
2282 +              (t_oxfer==0)?0:((float)iptr->oxfer/t_oxfer)*100.0,iptr->visit,
2283                (t_visit==0)?0:((float)iptr->visit/t_visit)*100.0);
2284  
2285           if ((iptr->flag==OBJ_GRP)&&hlite_groups)
2286 @@ -1842,7 +1959,7 @@
2287        if (all_users_page(i_reg, i_grp))
2288        {
2289           fprintf(out_fp,"<TR BGCOLOR=\"%s\">",GRPCOLOR);
2290 -         fprintf(out_fp,"<TD COLSPAN=10 ALIGN=\"center\">\n");
2291 +         fprintf(out_fp,"<TD COLSPAN=14 ALIGN=\"center\">\n");
2292           fprintf(out_fp,"<FONT SIZE=\"-1\">");
2293           fprintf(out_fp,"<A HREF=\"./user_%04d%02d.%s\">",
2294              cur_year,cur_month,html_ext);
2295 @@ -1876,9 +1993,12 @@
2296  
2297     fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n");
2298  
2299 -   fprintf(out_fp," %12s      %12s      %12s      %12s      %s\n",
2300 -           msg_h_hits, msg_h_files, msg_h_xfer, msg_h_visits, msg_h_uname);
2301 +   fprintf(out_fp," %12s      %12s      %12s      %12s      %12s      %12s"\
2302 +                  "      %s\n",
2303 +           msg_h_hits, msg_h_files, msg_h_xfer, msg_h_ixfer, msg_h_oxfer,
2304 +           msg_h_visits, msg_h_uname);
2305     fprintf(out_fp,"----------------  ----------------  ----------------  " \
2306 +                  "----------------  ----------------  "                   \
2307                    "----------------  --------------------\n\n");
2308  
2309     /* Do groups first (if any) */
2310 @@ -1889,11 +2009,14 @@
2311        if (iptr->flag == OBJ_GRP)
2312        {
2313           fprintf(out_fp,
2314 -      "%-8llu %6.02f%%  %8llu %6.02f%%  %8.0f %6.02f%%  %8llu %6.02f%%  %s\n",
2315 +            "%-8llu %6.02f%%  %8llu %6.02f%%  %8.0f %6.02f%%  %8.0f %6.02f%%  "\
2316 +            "%8.0f %6.02f%%  %8llu %6.02f%%  %s\n",
2317              iptr->count,
2318              (t_hit==0)?0:((float)iptr->count/t_hit)*100.0,iptr->files,
2319              (t_file==0)?0:((float)iptr->files/t_file)*100.0,iptr->xfer/1024,
2320 -            (t_xfer==0)?0:((float)iptr->xfer/t_xfer)*100.0,iptr->visit,
2321 +            (t_xfer==0)?0:((float)iptr->xfer/t_xfer)*100.0,iptr->ixfer/1024,
2322 +            (t_ixfer==0)?0:((float)iptr->ixfer/t_ixfer)*100.0,iptr->oxfer/1024,
2323 +            (t_oxfer==0)?0:((float)iptr->oxfer/t_oxfer)*100.0,iptr->visit,
2324              (t_visit==0)?0:((float)iptr->visit/t_visit)*100.0,
2325              iptr->string);
2326           i_grp--;
2327 @@ -1910,11 +2033,14 @@
2328        if (iptr->flag == OBJ_REG)
2329        {
2330           fprintf(out_fp,
2331 -      "%-8llu %6.02f%%  %8llu %6.02f%%  %8.0f %6.02f%%  %8llu %6.02f%%  %s\n",
2332 +            "%-8llu %6.02f%%  %8llu %6.02f%%  %8.0f %6.02f%%  %8.0f %6.02f%%  "\
2333 +            "%8.0f %6.02f%%  %8llu %6.02f%%  %s\n",
2334              iptr->count,
2335              (t_hit==0)?0:((float)iptr->count/t_hit)*100.0,iptr->files,
2336              (t_file==0)?0:((float)iptr->files/t_file)*100.0,iptr->xfer/1024,
2337 -            (t_xfer==0)?0:((float)iptr->xfer/t_xfer)*100.0,iptr->visit,
2338 +            (t_xfer==0)?0:((float)iptr->xfer/t_xfer)*100.0,iptr->ixfer/1024,
2339 +            (t_ixfer==0)?0:((float)iptr->ixfer/t_ixfer)*100.0,iptr->oxfer/1024,
2340 +            (t_oxfer==0)?0:((float)iptr->oxfer/t_oxfer)*100.0,iptr->visit,
2341              (t_visit==0)?0:((float)iptr->visit/t_visit)*100.0,
2342              iptr->string);
2343           i_reg--;
2344 @@ -2016,6 +2142,8 @@
2345                       ctry[j].count+=hptr->count;
2346                       ctry[j].files+=hptr->files;
2347                       ctry[j].xfer +=hptr->xfer;
2348 +                     ctry[j].ixfer+=hptr->ixfer;
2349 +                     ctry[j].oxfer+=hptr->oxfer;
2350                       ctry_fnd=1;
2351                       break;
2352                    }
2353 @@ -2026,6 +2154,8 @@
2354                 ctry[0].count+=hptr->count;
2355                 ctry[0].files+=hptr->files;
2356                 ctry[0].xfer +=hptr->xfer;
2357 +              ctry[0].ixfer+=hptr->ixfer;
2358 +              ctry[0].oxfer+=hptr->oxfer;
2359              }
2360           }
2361           hptr=hptr->next;
2362 @@ -2081,7 +2211,7 @@
2363     for (i=0;i<ntop_ctrys;i++) if (top_ctrys[i]->count!=0) tot_num++;
2364     fprintf(out_fp,"<TABLE WIDTH=510 BORDER=2 CELLSPACING=1 CELLPADDING=1>\n");
2365     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
2366 -   fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=8>"         \
2367 +   fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=12>"         \
2368             "%s %d %s %d %s</TH></TR>\n",
2369             GREY,msg_top_top,tot_num,msg_top_of,tot_ctry,msg_top_c);
2370     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
2371 @@ -2093,6 +2223,10 @@
2372            "<FONT SIZE=\"-1\">%s</FONT></TH>\n",FILECOLOR,msg_h_files);
2373     fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"             \
2374            "<FONT SIZE=\"-1\">%s</FONT></TH>\n",KBYTECOLOR,msg_h_xfer);
2375 +   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"             \
2376 +          "<FONT SIZE=\"-1\">%s</FONT></TH>\n",LTBLUE,msg_h_ixfer);
2377 +   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>"             \
2378 +          "<FONT SIZE=\"-1\">%s</FONT></TH>\n",GREEN,msg_h_oxfer);
2379     fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center>"                       \
2380            "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",MISCCOLOR,msg_h_ctry);
2381     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
2382 @@ -2120,6 +2254,10 @@
2383                "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"   \
2384                "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n"\
2385                "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"   \
2386 +              "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
2387 +              "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"   \
2388 +              "<TD ALIGN=right><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
2389 +              "<TD ALIGN=right><FONT SIZE=\"-2\">%3.02f%%</FONT></TD>\n"   \
2390                "<TD ALIGN=left NOWRAP>%s<FONT SIZE=\"-1\">%s</FONT>"        \
2391                "</TD></TR>\n",
2392                i+1,top_ctrys[i]->count,
2393 @@ -2128,6 +2266,10 @@
2394                (t_file==0)?0:((float)top_ctrys[i]->files/t_file)*100.0,
2395                top_ctrys[i]->xfer/1024,
2396                (t_xfer==0)?0:((float)top_ctrys[i]->xfer/t_xfer)*100.0,
2397 +              top_ctrys[i]->ixfer/1024,
2398 +              (t_ixfer==0)?0:((float)top_ctrys[i]->ixfer/t_ixfer)*100.0,
2399 +              top_ctrys[i]->oxfer/1024,
2400 +              (t_oxfer==0)?0:((float)top_ctrys[i]->oxfer/t_oxfer)*100.0,
2401                flag_buf,top_ctrys[i]->desc);
2402     }
2403     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
2404 @@ -2155,8 +2297,9 @@
2405     /* need a header? */
2406     if (dump_header)
2407     {
2408 -      fprintf(out_fp,"%s\t%s\t%s\t%s\t%s\n",
2409 -       msg_h_hits,msg_h_files,msg_h_xfer,msg_h_visits,msg_h_hname); 
2410 +      fprintf(out_fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
2411 +       msg_h_hits,msg_h_files,msg_h_xfer,msg_h_ixfer,msg_h_oxfer,msg_h_visits,
2412 +       msg_h_hname); 
2413     }
2414  
2415     /* dump 'em */
2416 @@ -2167,8 +2310,9 @@
2417        if (hptr->flag != OBJ_GRP)
2418        {
2419           fprintf(out_fp,
2420 -         "%llu\t%llu\t%.0f\t%llu\t%s\n",
2421 +         "%llu\t%llu\t%.0f\t%.0f\t%.0f\t%llu\t%s\n",
2422              hptr->count,hptr->files,hptr->xfer/1024,
2423 +           hptr->ixfer/1024,hptr->oxfer/1024,
2424              hptr->visit,hptr->string);
2425        }
2426        cnt--;
2427 @@ -2198,7 +2342,8 @@
2428     /* need a header? */
2429     if (dump_header)
2430     {
2431 -      fprintf(out_fp,"%s\t%s\t%s\n",msg_h_hits,msg_h_xfer,msg_h_url);
2432 +      fprintf(out_fp,"%s\t%s\t%s\t%s\t%s\n",msg_h_hits,msg_h_xfer,msg_h_ixfer,
2433 +                      msg_h_oxfer,msg_h_url);
2434     }
2435  
2436     /* dump 'em */
2437 @@ -2208,8 +2353,9 @@
2438        uptr=*pointer++;
2439        if (uptr->flag != OBJ_GRP)
2440        {
2441 -         fprintf(out_fp,"%llu\t%.0f\t%s\n",
2442 -            uptr->count,uptr->xfer/1024,uptr->string);
2443 +         fprintf(out_fp,"%llu\t%.0f\t%.0f\t%.0f\t%s\n",
2444 +            uptr->count,uptr->xfer/1024,uptr->ixfer/1024,uptr->oxfer/1024,
2445 +           uptr->string);
2446        }
2447        cnt--;
2448     }
2449 @@ -2316,8 +2462,9 @@
2450     /* need a header? */
2451     if (dump_header)
2452     {
2453 -      fprintf(out_fp,"%s\t%s\t%s\t%s\t%s\n",
2454 -         msg_h_hits,msg_h_files,msg_h_xfer,msg_h_visits,msg_h_uname);
2455 +      fprintf(out_fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
2456 +         msg_h_hits,msg_h_files,msg_h_xfer,msg_h_ixfer,msg_h_oxfer,msg_h_visits,
2457 +         msg_h_uname);
2458     }
2459  
2460     /* dump 'em */
2461 @@ -2328,8 +2475,9 @@
2462        if (iptr->flag != OBJ_GRP)
2463        {
2464           fprintf(out_fp,
2465 -         "%llu\t%llu\t%.0f\t%llu\t%s\n",
2466 +         "%llu\t%llu\t%.0f\t%.0f\t%.0f\t%llu\t%s\n",
2467              iptr->count,iptr->files,iptr->xfer/1024,
2468 +           iptr->ixfer/1024,iptr->oxfer/1024,
2469              iptr->visit,iptr->string);
2470        }
2471        cnt--;
2472 @@ -2391,10 +2539,14 @@
2473     u_int64_t m_pages=0;
2474     u_int64_t m_visits=0;
2475     double    m_xfer=0.0;
2476 +   double    m_ixfer=0.0;
2477 +   double    m_oxfer=0.0;
2478     double  gt_hit=0.0;
2479     double  gt_files=0.0;
2480     double  gt_pages=0.0;
2481     double  gt_xfer=0.0;
2482 +   double  gt_ixfer=0.0;
2483 +   double  gt_oxfer=0.0;
2484     double  gt_visits=0.0;
2485  
2486     if (verbose>1) printf("%s\n",msg_gen_sum);
2487 @@ -2450,14 +2602,14 @@
2488     /* month table */
2489     fprintf(out_fp,"<TABLE WIDTH=600 BORDER=2 CELLSPACING=1 CELLPADDING=1>\n");
2490     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
2491 -   fprintf(out_fp,"<TR><TH COLSPAN=11 BGCOLOR=\"%s\" ALIGN=center>",GREY);
2492 +   fprintf(out_fp,"<TR><TH COLSPAN=13 BGCOLOR=\"%s\" ALIGN=center>",GREY);
2493     fprintf(out_fp,"%s</TH></TR>\n",msg_main_sum);
2494     fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
2495     fprintf(out_fp,"<TR><TH ALIGN=left ROWSPAN=2 BGCOLOR=\"%s\">"          \
2496            "<FONT SIZE=\"-1\">%s</FONT></TH>\n",GREY,msg_h_mth);
2497     fprintf(out_fp,"<TH ALIGN=center COLSPAN=4 BGCOLOR=\"%s\">"            \
2498            "<FONT SIZE=\"-1\">%s</FONT></TH>\n",GREY,msg_main_da);
2499 -   fprintf(out_fp,"<TH ALIGN=center COLSPAN=6 BGCOLOR=\"%s\">"            \
2500 +   fprintf(out_fp,"<TH ALIGN=center COLSPAN=8 BGCOLOR=\"%s\">"            \
2501            "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",GREY,msg_main_mt);
2502     fprintf(out_fp,"<TR><TH ALIGN=center BGCOLOR=\"%s\">"                  \
2503            "<FONT SIZE=\"-1\">%s</FONT></TH>\n",HITCOLOR,msg_h_hits);
2504 @@ -2472,6 +2624,10 @@
2505     fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">"                      \
2506            "<FONT SIZE=\"-1\">%s</FONT></TH>\n",KBYTECOLOR,msg_h_xfer);
2507     fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">"                      \
2508 +          "<FONT SIZE=\"-1\">%s</FONT></TH>\n",LTBLUE,msg_h_ixfer);
2509 +   fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">"                      \
2510 +          "<FONT SIZE=\"-1\">%s</FONT></TH>\n",GREEN,msg_h_oxfer);
2511 +   fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">"                      \
2512            "<FONT SIZE=\"-1\">%s</FONT></TH>\n",VISITCOLOR,msg_h_visits);
2513     fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">"                      \
2514            "<FONT SIZE=\"-1\">%s</FONT></TH>\n",PAGECOLOR,msg_h_pages);
2515 @@ -2501,6 +2657,10 @@
2516                  GRPCOLOR,s_year);
2517              fprintf(out_fp,"<TH ALIGN=\"right\" BGCOLOR=\"%s\">"       \
2518                    "<FONT SIZE=\"-1\">%.0f</TH>", GRPCOLOR, m_xfer);
2519 +               fprintf(out_fp,"<TH ALIGN=\"right\" BGCOLOR=\"%s\">"       \
2520 +                     "<FONT SIZE=\"-1\">%.0f</TH>", GRPCOLOR, m_ixfer);
2521 +               fprintf(out_fp,"<TH ALIGN=\"right\" BGCOLOR=\"%s\">"       \
2522 +                     "<FONT SIZE=\"-1\">%.0f</TH>", GRPCOLOR, m_oxfer);
2523              fprintf(out_fp,"<TH ALIGN=\"right\" BGCOLOR=\"%s\">"       \
2524                    "<FONT SIZE=\"-1\">%0llu</TH>", GRPCOLOR, m_visits);
2525              fprintf(out_fp,"<TH ALIGN=\"right\" BGCOLOR=\"%s\">"       \
2526 @@ -2509,13 +2669,13 @@
2527                    "<FONT SIZE=\"-1\">%0llu</TH>", GRPCOLOR, m_files);
2528              fprintf(out_fp,"<TH ALIGN=\"right\" BGCOLOR=\"%s\">"       \
2529                    "<FONT SIZE=\"-1\">%0llu</TH>", GRPCOLOR, m_hit);
2530 -            m_xfer=0; m_visits=0; m_pages=0; m_files=0; m_hit=0;
2531 +            m_xfer=0; m_ixfer=0; m_oxfer=0; m_visits=0; m_pages=0; m_files=0; m_hit=0;
2532           }
2533   
2534           /* Year Header */
2535           s_year=hist[i].year;
2536           if (index_mths>16 && year_hdrs)
2537 -            fprintf(out_fp,"<TR><TH COLSPAN=11 BGCOLOR=\"%s\" "           \
2538 +            fprintf(out_fp,"<TR><TH COLSPAN=13 BGCOLOR=\"%s\" "           \
2539                 "ALIGN=center>%04d</TH></TR>\n", GREY, s_year);
2540        }
2541  
2542 @@ -2541,6 +2701,10 @@
2543                        hist[i].site);
2544        fprintf(out_fp,"<TD ALIGN=right><FONT SIZE=\"-1\">%.0f</FONT></TD>\n",
2545                        hist[i].xfer);
2546 +      fprintf(out_fp,"<TD ALIGN=right><FONT SIZE=\"-1\">%.0f</FONT></TD>\n",
2547 +                      hist[i].ixfer);
2548 +      fprintf(out_fp,"<TD ALIGN=right><FONT SIZE=\"-1\">%.0f</FONT></TD>\n",
2549 +                      hist[i].oxfer);
2550        fprintf(out_fp,"<TD ALIGN=right><FONT SIZE=\"-1\">%llu</FONT></TD>\n",
2551                        hist[i].visit);
2552        fprintf(out_fp,"<TD ALIGN=right><FONT SIZE=\"-1\">%llu</FONT></TD>\n",
2553 @@ -2554,12 +2718,16 @@
2554        gt_files += hist[i].files;
2555        gt_pages += hist[i].page;
2556        gt_xfer  += hist[i].xfer;
2557 +      gt_ixfer += hist[i].ixfer;
2558 +      gt_oxfer += hist[i].oxfer;
2559        gt_visits+= hist[i].visit;
2560         m_hit   += hist[i].hit;
2561         m_files += hist[i].files;
2562         m_pages += hist[i].page;
2563         m_visits+= hist[i].visit;
2564         m_xfer  += hist[i].xfer;
2565 +       m_ixfer += hist[i].ixfer;
2566 +       m_oxfer += hist[i].oxfer;
2567     }
2568  
2569     if (index_mths>16 && year_totals)
2570 @@ -2569,6 +2737,10 @@
2571                       GRPCOLOR,s_year);
2572        fprintf(out_fp,"<TH ALIGN=\"right\" BGCOLOR=\"%s\">"       \
2573                       "<FONT SIZE=\"-1\">%.0f</TH>", GRPCOLOR, m_xfer);
2574 +         fprintf(out_fp,"<TH ALIGN=\"right\" BGCOLOR=\"%s\">"       \
2575 +                        "<FONT SIZE=\"-1\">%.0f</TH>", GRPCOLOR, m_ixfer);
2576 +         fprintf(out_fp,"<TH ALIGN=\"right\" BGCOLOR=\"%s\">"       \
2577 +                        "<FONT SIZE=\"-1\">%.0f</TH>", GRPCOLOR, m_oxfer);
2578        fprintf(out_fp,"<TH ALIGN=\"right\" BGCOLOR=\"%s\">"       \
2579                       "<FONT SIZE=\"-1\">%0llu</TH>", GRPCOLOR, m_visits);
2580        fprintf(out_fp,"<TH ALIGN=\"right\" BGCOLOR=\"%s\">"       \
2581 @@ -2584,6 +2756,10 @@
2582     fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=right>"                       \
2583            "<FONT SIZE=\"-1\">%.0f</FONT></TH>\n",GREY,gt_xfer);
2584     fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=right>"                       \
2585 +          "<FONT SIZE=\"-1\">%.0f</FONT></TH>\n",GREY,gt_ixfer);
2586 +   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=right>"                       \
2587 +          "<FONT SIZE=\"-1\">%.0f</FONT></TH>\n",GREY,gt_oxfer);
2588 +   fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=right>"                       \
2589            "<FONT SIZE=\"-1\">%.0f</FONT></TH>\n",GREY,gt_visits);
2590     fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=right>"                       \
2591            "<FONT SIZE=\"-1\">%.0f</FONT></TH>\n",GREY,gt_pages);
2592 Index: webalizer/parser.c
2593 ===================================================================
2594 --- webalizer.orig/parser.c     2011-04-18 23:54:32.000000000 +0200
2595 +++ webalizer/parser.c  2011-04-18 23:56:44.000000000 +0200
2596 @@ -199,6 +199,9 @@
2597     /* return appropriate response code */
2598     log_rec.resp_code=(*(eob-2)=='i')?206:200;
2599  
2600 +   /* don't worry about I/O bytes in FTP */
2601 +   log_rec.ixfer_size=log_rec.oxfer_size=0;
2602 +
2603     return 1;
2604  }
2605  
2606 @@ -365,6 +368,18 @@
2607     while ( (*cp1 != '\0') && (cp1 != eos) ) *cp2++ = *cp1++;
2608     *cp2 = '\0';
2609  
2610 +   /* IN xfer size */
2611 +   while ( (*cp1 != '\0') && (cp1 < eob) ) cp1++;
2612 +   if (cp1 < eob) cp1++;
2613 +   if (*cp1<'0'||*cp1>'9') log_rec.ixfer_size=0;
2614 +   else log_rec.ixfer_size = strtoul(cp1,NULL,10);
2615 +
2616 +   /* OUT xfer size */
2617 +   while ( (*cp1 != '\0') && (cp1 < eob) ) cp1++;
2618 +   if (cp1 < eob) cp1++;
2619 +   if (*cp1<'0'||*cp1>'9') log_rec.oxfer_size=0;
2620 +   else log_rec.oxfer_size = strtoul(cp1,NULL,10);
2621 +
2622     return 1;     /* maybe a valid record, return with TRUE */
2623  }
2624  
2625 @@ -501,6 +516,9 @@
2626     /* strip trailing space(s) */
2627     while (*cp2==' ') *cp2--='\0';
2628  
2629 +   /* don't do this for squid */
2630 +   log_rec.ixfer_size=log_rec.oxfer_size=0;
2631 +
2632     /* we have no interest in the remaining fields */
2633     return 1;
2634  }
2635 Index: webalizer/preserve.c
2636 ===================================================================
2637 --- webalizer.orig/preserve.c   2011-04-18 23:54:32.000000000 +0200
2638 +++ webalizer/preserve.c        2011-04-18 23:56:44.000000000 +0200
2639 @@ -121,7 +121,8 @@
2640           if (i>=0)
2641           {
2642           /* month# year# requests files sites xfer firstday lastday */
2643 -         numfields = sscanf(buffer,"%d %d %llu %llu %llu %lf %d %d %llu %llu",
2644 +         numfields = sscanf(buffer,
2645 +                      "%d %d %llu %llu %llu %lf %d %d %llu %llu %lf %lf",
2646                         &hist[i].month,
2647                         &hist[i].year,
2648                         &hist[i].hit,
2649 @@ -131,7 +132,9 @@
2650                         &hist[i].fday,
2651                         &hist[i].lday,
2652                         &hist[i].page,
2653 -                       &hist[i].visit);
2654 +                       &hist[i].visit,
2655 +                       &hist[i].ixfer,
2656 +                       &hist[i].oxfer);
2657           }
2658        }
2659        fclose(hist_fp);
2660 @@ -184,7 +187,7 @@
2661  
2662        for (i=HISTSIZE-1;i>=0;i--)
2663        {
2664 -         fprintf(hist_fp,"%d %d %llu %llu %llu %.0f %d %d %llu %llu\n",
2665 +         fprintf(hist_fp,"%d %d %llu %llu %llu %.0f %d %d %llu %llu %.0f %.0f\n",
2666                           hist[i].month,
2667                           hist[i].year,
2668                           hist[i].hit,
2669 @@ -194,7 +197,9 @@
2670                           hist[i].fday,
2671                           hist[i].lday,
2672                           hist[i].page,
2673 -                         hist[i].visit);
2674 +                         hist[i].visit,
2675 +                         hist[i].ixfer,
2676 +                         hist[i].oxfer);
2677        }
2678        /* Done, close file */
2679        fclose(hist_fp);
2680 @@ -296,6 +301,8 @@
2681        hist[i].visit = t_visit;
2682        hist[i].site  = t_site;
2683        hist[i].xfer  = t_xfer/1024;
2684 +      hist[i].ixfer = t_ixfer/1024;
2685 +      hist[i].oxfer = t_oxfer/1024;
2686        hist[i].fday  = f_day;
2687        hist[i].lday  = l_day;
2688     }
2689 @@ -361,9 +368,9 @@
2690     if (fputs(buffer,fp)==EOF) return 1;  /* error exit */
2691  
2692     /* Monthly totals for sites, urls, etc... */
2693 -   sprintf(buffer,"%llu %llu %llu %llu %llu %llu %.0f %llu %llu %llu\n",
2694 +   sprintf(buffer,"%llu %llu %llu %llu %llu %llu %.0f %llu %llu %llu %.0f %.0f\n",
2695          t_hit, t_file, t_site, t_url,
2696 -        t_ref, t_agent, t_xfer, t_page, t_visit, t_user);
2697 +        t_ref, t_agent, t_xfer, t_page, t_visit, t_user, t_ixfer, t_oxfer);
2698     if (fputs(buffer,fp)==EOF) return 1;  /* error exit */
2699  
2700     /* Daily totals for sites, urls, etc... */
2701 @@ -374,16 +381,17 @@
2702     /* Monthly (by day) total array */
2703     for (i=0;i<31;i++)
2704     {
2705 -      sprintf(buffer,"%llu %llu %.0f %llu %llu %llu\n",
2706 -        tm_hit[i],tm_file[i],tm_xfer[i],tm_site[i],tm_page[i],tm_visit[i]);
2707 +      sprintf(buffer,"%llu %llu %.0f %llu %llu %llu %.0f %.0f\n",
2708 +        tm_hit[i],tm_file[i],tm_xfer[i],tm_site[i],
2709 +       tm_page[i],tm_visit[i],tm_ixfer[i],tm_oxfer[i]);
2710        if (fputs(buffer,fp)==EOF) return 1;  /* error exit */
2711     }
2712  
2713     /* Daily (by hour) total array */
2714     for (i=0;i<24;i++)
2715     {
2716 -      sprintf(buffer,"%llu %llu %.0f %llu\n",
2717 -        th_hit[i],th_file[i],th_xfer[i],th_page[i]);
2718 +      sprintf(buffer,"%llu %llu %.0f %llu %.0f %.0f\n",
2719 +        th_hit[i],th_file[i],th_xfer[i],th_page[i],th_ixfer[i],th_oxfer[i]);
2720        if (fputs(buffer,fp)==EOF) return 1;  /* error exit */
2721     }
2722  
2723 @@ -402,9 +410,11 @@
2724        uptr=um_htab[i];
2725        while (uptr!=NULL)
2726        {
2727 -         snprintf(buffer,sizeof(buffer),"%s\n%d %llu %llu %.0f %llu %llu\n",
2728 +         snprintf(buffer,sizeof(buffer),
2729 +                 "%s\n%d %llu %llu %.0f %llu %llu %.0f %.0f\n",
2730                    uptr->string, uptr->flag, uptr->count, uptr->files,
2731 -                  uptr->xfer, uptr->entry, uptr->exit);
2732 +                  uptr->xfer, uptr->entry, uptr->exit,
2733 +                 uptr->ixfer, uptr->oxfer);
2734           if (fputs(buffer,fp)==EOF) return 1;
2735           uptr=uptr->next;
2736        }
2737 @@ -419,9 +429,10 @@
2738        hptr=sm_htab[i];
2739        while (hptr!=NULL)
2740        {
2741 -         snprintf(buffer,sizeof(buffer),"%s\n%d %llu %llu %.0f %llu %llu\n%s\n",
2742 +         snprintf(buffer,sizeof(buffer),"%s\n%d %llu %llu %.0f %llu %llu %.0f %.0f\n%s\n",
2743                    hptr->string, hptr->flag, hptr->count, hptr->files,
2744                    hptr->xfer, hptr->visit, hptr->tstamp,
2745 +                 hptr->ixfer, hptr->oxfer,
2746                    (hptr->lasturl==blank_str)?"-":hptr->lasturl);
2747           if (fputs(buffer,fp)==EOF) return 1;  /* error exit */
2748           hptr=hptr->next;
2749 @@ -436,9 +447,10 @@
2750        hptr=sd_htab[i];
2751        while (hptr!=NULL)
2752        {
2753 -         snprintf(buffer,sizeof(buffer),"%s\n%d %llu %llu %.0f %llu %llu\n%s\n",
2754 +         snprintf(buffer,sizeof(buffer),"%s\n%d %llu %llu %.0f %llu %llu %.0f %.0f\n%s\n",
2755                    hptr->string, hptr->flag, hptr->count, hptr->files,
2756                    hptr->xfer, hptr->visit, hptr->tstamp,
2757 +                 hptr->ixfer, hptr->oxfer,
2758                    (hptr->lasturl==blank_str)?"-":hptr->lasturl);
2759           if (fputs(buffer,fp)==EOF) return 1;
2760           hptr=hptr->next;
2761 @@ -505,9 +517,9 @@
2762        iptr=im_htab[i];
2763        while (iptr!=NULL)
2764        {
2765 -         snprintf(buffer,sizeof(buffer),"%s\n%d %llu %llu %.0f %llu %llu\n",
2766 +         snprintf(buffer,sizeof(buffer),"%s\n%d %llu %llu %.0f %llu %llu %.0f %.0f\n",
2767                    iptr->string, iptr->flag, iptr->count, iptr->files,
2768 -              iptr->xfer, iptr->visit, iptr->tstamp);
2769 +              iptr->xfer, iptr->visit, iptr->tstamp, iptr->ixfer, iptr->oxfer);
2770           if (fputs(buffer,fp)==EOF) return 1;  /* error exit */
2771           iptr=iptr->next;
2772        }
2773 @@ -589,9 +601,10 @@
2774     /* Get monthly totals */
2775     if ((fgets(buffer,BUFSIZE,fp)) != NULL)
2776     {
2777 -      sscanf(buffer,"%llu %llu %llu %llu %llu %llu %lf %llu %llu %llu",
2778 +      sscanf(buffer,"%llu %llu %llu %llu %llu %llu %lf %llu %llu %llu %lf %lf",
2779         &t_hit, &t_file, &t_site, &t_url,
2780 -       &t_ref, &t_agent, &t_xfer, &t_page, &t_visit, &t_user);
2781 +       &t_ref, &t_agent, &t_xfer, &t_page, &t_visit, 
2782 +       &t_user, &t_ixfer, &t_oxfer);
2783     } else return 3;  /* error exit */
2784       
2785     /* Get daily totals */
2786 @@ -606,9 +619,9 @@
2787     {
2788        if ((fgets(buffer,BUFSIZE,fp)) != NULL)
2789        {
2790 -         sscanf(buffer,"%llu %llu %lf %llu %llu %llu",
2791 +         sscanf(buffer,"%llu %llu %lf %llu %llu %llu %lf %lf",
2792            &tm_hit[i],&tm_file[i],&tm_xfer[i],&tm_site[i],&tm_page[i],
2793 -          &tm_visit[i]);
2794 +          &tm_visit[i],&tm_ixfer[i],&tm_oxfer[i]);
2795        } else return 5;  /* error exit */
2796     }
2797  
2798 @@ -617,8 +630,9 @@
2799     {
2800        if ((fgets(buffer,BUFSIZE,fp)) != NULL)
2801        {
2802 -         sscanf(buffer,"%llu %llu %lf %llu",
2803 -          &th_hit[i],&th_file[i],&th_xfer[i],&th_page[i]);
2804 +         sscanf(buffer,"%llu %llu %lf %llu %lf %lf",
2805 +          &th_hit[i],&th_file[i],&th_xfer[i],
2806 +         &th_page[i],&th_ixfer[i],&th_oxfer[i]);
2807        } else return 6;  /* error exit */
2808     }
2809  
2810 @@ -652,14 +666,15 @@
2811        if (!isdigit((unsigned char)buffer[0])) return 10;  /* error exit */
2812  
2813        /* load temporary node data */
2814 -      sscanf(buffer,"%d %llu %llu %lf %llu %llu",
2815 +      sscanf(buffer,"%d %llu %llu %lf %llu %llu %lf %lf",
2816           &t_unode.flag,&t_unode.count,
2817           &t_unode.files, &t_unode.xfer,
2818 -         &t_unode.entry, &t_unode.exit);
2819 +         &t_unode.entry, &t_unode.exit, &t_unode.ixfer, &t_unode.oxfer);
2820  
2821        /* Good record, insert into hash table */
2822        if (put_unode(tmp_buf,t_unode.flag,t_unode.count,
2823 -         t_unode.xfer,&ul_bogus,t_unode.entry,t_unode.exit,um_htab))
2824 +         t_unode.xfer,t_unode.ixfer,t_unode.oxfer,&ul_bogus,t_unode.entry,
2825 +        t_unode.exit,um_htab))
2826        {
2827           if (verbose)
2828           /* Error adding URL node, skipping ... */
2829 @@ -683,10 +698,10 @@
2830        if (!isdigit((unsigned char)buffer[0])) return 8;  /* error exit */
2831  
2832        /* load temporary node data */
2833 -      sscanf(buffer,"%d %llu %llu %lf %llu %llu",
2834 +      sscanf(buffer,"%d %llu %llu %lf %llu %llu %lf %lf",
2835           &t_hnode.flag,&t_hnode.count,
2836           &t_hnode.files, &t_hnode.xfer,
2837 -         &t_hnode.visit, &t_hnode.tstamp);
2838 +         &t_hnode.visit, &t_hnode.tstamp, &t_hnode.ixfer, &t_hnode.oxfer);
2839  
2840        /* get last url */
2841        if ((fgets(buffer,BUFSIZE,fp)) == NULL) return 8;  /* error exit */
2842 @@ -699,7 +714,8 @@
2843  
2844        /* Good record, insert into hash table */
2845        if (put_hnode(tmp_buf,t_hnode.flag,
2846 -         t_hnode.count,t_hnode.files,t_hnode.xfer,&ul_bogus,
2847 +         t_hnode.count,t_hnode.files,t_hnode.xfer,t_hnode.ixfer,t_hnode.oxfer,
2848 +         &ul_bogus,
2849           t_hnode.visit+1,t_hnode.tstamp,t_hnode.lasturl,sm_htab))
2850        {
2851           /* Error adding host node (monthly), skipping .... */
2852 @@ -723,10 +739,10 @@
2853        if (!isdigit((unsigned char)buffer[0])) return 9;  /* error exit */
2854  
2855        /* load temporary node data */
2856 -      sscanf(buffer,"%d %llu %llu %lf %llu %llu",
2857 +      sscanf(buffer,"%d %llu %llu %lf %llu %llu %lf %lf",
2858            &t_hnode.flag,&t_hnode.count,
2859            &t_hnode.files, &t_hnode.xfer,
2860 -          &t_hnode.visit, &t_hnode.tstamp);
2861 +          &t_hnode.visit, &t_hnode.tstamp, &t_hnode.ixfer, &t_hnode.oxfer);
2862  
2863        /* get last url */
2864        if ((fgets(buffer,BUFSIZE,fp)) == NULL) return 9;  /* error exit */
2865 @@ -739,7 +755,8 @@
2866  
2867        /* Good record, insert into hash table */
2868        if (put_hnode(tmp_buf,t_hnode.flag,
2869 -         t_hnode.count,t_hnode.files,t_hnode.xfer,&ul_bogus,
2870 +         t_hnode.count,t_hnode.files,t_hnode.xfer,t_hnode.ixfer,t_hnode.oxfer,
2871 +         &ul_bogus,
2872           t_hnode.visit+1,t_hnode.tstamp,t_hnode.lasturl,sd_htab))
2873        {
2874           /* Error adding host node (daily), skipping .... */
2875 @@ -837,14 +854,15 @@
2876        if (!isdigit((unsigned char)buffer[0])) return 14;  /* error exit */
2877  
2878        /* load temporary node data */
2879 -      sscanf(buffer,"%d %llu %llu %lf %llu %llu",
2880 +      sscanf(buffer,"%d %llu %llu %lf %llu %llu %lf %lf",
2881           &t_inode.flag,&t_inode.count,
2882           &t_inode.files, &t_inode.xfer,
2883 -         &t_inode.visit, &t_inode.tstamp);
2884 +         &t_inode.visit, &t_inode.tstamp, &t_inode.ixfer, &t_inode.oxfer);
2885  
2886        /* Good record, insert into hash table */
2887        if (put_inode(tmp_buf,t_inode.flag,
2888 -         t_inode.count,t_inode.files,t_inode.xfer,&ul_bogus,
2889 +         t_inode.count,t_inode.files,t_inode.xfer,t_inode.ixfer,t_inode.oxfer,
2890 +        &ul_bogus,
2891           t_inode.visit+1,t_inode.tstamp,im_htab))
2892        {
2893           if (verbose)
2894 Index: webalizer/preserve.h
2895 ===================================================================
2896 --- webalizer.orig/preserve.h   2011-04-18 23:54:32.000000000 +0200
2897 +++ webalizer/preserve.h        2011-04-18 23:56:44.000000000 +0200
2898 @@ -21,6 +21,8 @@
2899                    u_int64_t   page;           /* pages for month          */
2900                    u_int64_t   visit;          /* visits for month         */
2901                       double   xfer;           /* xfer amt for month       */
2902 +                     double   ixfer;          /* ixfer amt for month      */
2903 +                     double   oxfer;          /* oxfer amt for month      */
2904                  };
2905  
2906  extern struct hist_rec hist[HISTSIZE];        /* declare our hist array   */
2907 Index: webalizer/webalizer.c
2908 ===================================================================
2909 --- webalizer.orig/webalizer.c  2011-04-18 23:54:39.000000000 +0200
2910 +++ webalizer/webalizer.c       2011-04-18 23:56:44.000000000 +0200
2911 @@ -216,11 +216,15 @@
2912  int        gz_log=COMP_NONE;                  /* gziped log? (0=no)       */
2913  
2914  double     t_xfer=0.0;                        /* monthly total xfer value */
2915 +double     t_ixfer=0.0;                       /* monthly total in xfer    */
2916 +double     t_oxfer=0.0;                       /* monthly total out xfer   */
2917  u_int64_t  t_hit=0,t_file=0,t_site=0,         /* monthly total vars       */
2918             t_url=0,t_ref=0,t_agent=0,
2919             t_page=0, t_visit=0, t_user=0;
2920  
2921  double     tm_xfer[31];                       /* daily transfer totals    */
2922 +double     tm_ixfer[31];                      /* daily in xfer totals     */
2923 +double     tm_oxfer[31];                      /* daily out xfer totals    */
2924  
2925  u_int64_t  tm_hit[31], tm_file[31],           /* daily total arrays       */
2926             tm_site[31], tm_page[31],
2927 @@ -234,6 +238,8 @@
2928             th_page[24];
2929  
2930  double     th_xfer[24];
2931 +double     th_ixfer[24];
2932 +double     th_oxfer[24];
2933  
2934  int        f_day,l_day;                       /* first/last day vars      */
2935  
2936 @@ -1202,7 +1208,8 @@
2937           {
2938              /* URL hash table */
2939              if (put_unode(log_rec.url,OBJ_REG,(u_int64_t)1,
2940 -                log_rec.xfer_size,&t_url,(u_int64_t)0,(u_int64_t)0,um_htab))
2941 +                log_rec.xfer_size,log_rec.ixfer_size,log_rec.oxfer_size,
2942 +                &t_url,(u_int64_t)0,(u_int64_t)0,um_htab))
2943              {
2944                 if (verbose)
2945                 /* Error adding URL node, skipping ... */
2946 @@ -1211,7 +1218,8 @@
2947  
2948              /* ident (username) hash table */
2949              if (put_inode(log_rec.ident,OBJ_REG,
2950 -                1,(u_int64_t)i,log_rec.xfer_size,&t_user,
2951 +                1,(u_int64_t)i,log_rec.xfer_size,
2952 +                log_rec.ixfer_size,log_rec.oxfer_size,&t_user,
2953                  0,rec_tstamp,im_htab))
2954              {
2955                 if (verbose)
2956 @@ -1233,7 +1241,8 @@
2957  
2958           /* hostname (site) hash table - daily */
2959           if (put_hnode(log_rec.hostname,OBJ_REG,
2960 -             1,(u_int64_t)i,log_rec.xfer_size,&dt_site,
2961 +             1,(u_int64_t)i,log_rec.xfer_size,
2962 +             log_rec.ixfer_size,log_rec.oxfer_size,&dt_site,
2963               0,rec_tstamp,"",sd_htab))
2964           {
2965              if (verbose)
2966 @@ -1243,7 +1252,8 @@
2967  
2968           /* hostname (site) hash table - monthly */
2969           if (put_hnode(log_rec.hostname,OBJ_REG,
2970 -             1,(u_int64_t)i,log_rec.xfer_size,&t_site,
2971 +             1,(u_int64_t)i,log_rec.xfer_size,
2972 +             log_rec.ixfer_size,log_rec.oxfer_size,&t_site,
2973               0,rec_tstamp,"",sm_htab))
2974           {
2975              if (verbose)
2976 @@ -1264,10 +1274,16 @@
2977  
2978           /* bump monthly/daily/hourly totals        */
2979           t_hit++; ht_hit++;                         /* daily/hourly hits    */
2980 -         t_xfer += log_rec.xfer_size;               /* total xfer size      */
2981 -         tm_xfer[rec_day-1] += log_rec.xfer_size;   /* daily xfer total     */
2982 +         t_xfer  += log_rec.xfer_size;              /* total xfer size      */
2983 +         t_ixfer += log_rec.ixfer_size;             /* total in xfer size   */
2984 +         t_oxfer += log_rec.oxfer_size;             /* total out xfer size  */
2985 +         tm_xfer[rec_day-1]  += log_rec.xfer_size;  /* daily xfer total     */
2986 +         tm_ixfer[rec_day-1] += log_rec.ixfer_size; /* daily in xfer total  */
2987 +         tm_oxfer[rec_day-1] += log_rec.oxfer_size; /* daily out xfer total */
2988           tm_hit[rec_day-1]++;                       /* daily hits total     */
2989           th_xfer[rec_hour] += log_rec.xfer_size;    /* hourly xfer total    */
2990 +         th_ixfer[rec_hour] += log_rec.ixfer_size;  /* hourly in xfer total */
2991 +         th_oxfer[rec_hour] += log_rec.oxfer_size;  /* hourly out xfer total*/
2992           th_hit[rec_hour]++;                        /* hourly hits total    */
2993     
2994           /* if RC_OK, increase file counters */
2995 @@ -1297,6 +1313,7 @@
2996           if ( (cp1=isinglist(group_urls,log_rec.url))!=NULL)
2997           {
2998              if (put_unode(cp1,OBJ_GRP,(u_int64_t)1,log_rec.xfer_size,
2999 +                log_rec.ixfer_size,log_rec.oxfer_size,
3000                  &ul_bogus,(u_int64_t)0,(u_int64_t)0,um_htab))
3001              {
3002                 if (verbose)
3003 @@ -1310,7 +1327,8 @@
3004           {
3005              if (put_hnode(cp1,OBJ_GRP,1,
3006                            (u_int64_t)(log_rec.resp_code==RC_OK)?1:0,
3007 -                          log_rec.xfer_size,&ul_bogus,
3008 +                          log_rec.xfer_size,
3009 +                         log_rec.ixfer_size,log_rec.oxfer_size,&ul_bogus,
3010                            0,rec_tstamp,"",sm_htab))
3011              {
3012                 if (verbose)
3013 @@ -1328,8 +1346,8 @@
3014                 {
3015                    if (put_hnode(cp1,OBJ_GRP,1,
3016                        (u_int64_t)(log_rec.resp_code==RC_OK)?1:0,
3017 -                      log_rec.xfer_size,&ul_bogus,
3018 -                      0,rec_tstamp,"",sm_htab))
3019 +                      log_rec.xfer_size,log_rec.ixfer_size,log_rec.oxfer_size,
3020 +                      &ul_bogus,0,rec_tstamp,"",sm_htab))
3021                    {
3022                       if (verbose)
3023                       /* Error adding Site node, skipping ... */
3024 @@ -1366,7 +1384,8 @@
3025           {
3026              if (put_inode(cp1,OBJ_GRP,1,
3027                            (u_int64_t)(log_rec.resp_code==RC_OK)?1:0,
3028 -                          log_rec.xfer_size,&ul_bogus,
3029 +                          log_rec.xfer_size,
3030 +                         log_rec.ixfer_size,log_rec.oxfer_size,&ul_bogus,
3031                            0,rec_tstamp,im_htab))
3032              {
3033                 if (verbose)
3034 @@ -1905,22 +1924,22 @@
3035     for (i=0;i<TOTAL_RC;i++) response[i].count = 0;
3036     for (i=0;i<31;i++)  /* monthly totals      */
3037     {
3038 -    tm_xfer[i]=0.0;
3039 +    tm_xfer[i]=tm_ixfer[i]=tm_oxfer[i]=0.0;
3040      tm_hit[i]=tm_file[i]=tm_site[i]=tm_page[i]=tm_visit[i]=0;
3041     }
3042     for (i=0;i<24;i++)  /* hourly totals       */
3043     {
3044        th_hit[i]=th_file[i]=th_page[i]=0;
3045 -      th_xfer[i]=0.0;
3046 +      th_xfer[i]=th_ixfer[i]=th_oxfer[i]=0.0;
3047     }
3048     for (i=0;ctry[i].desc;i++) /* country totals */
3049     {
3050        ctry[i].count=0;
3051        ctry[i].files=0;
3052 -      ctry[i].xfer=0;
3053 +      ctry[i].xfer=ctry[i].ixfer=ctry[i].oxfer=0;
3054     }
3055     t_hit=t_file=t_site=t_url=t_ref=t_agent=t_page=t_visit=t_user=0;
3056 -   t_xfer=0.0;
3057 +   t_xfer=t_ixfer=t_oxfer=0.0;
3058     mh_hit = dt_site = 0;
3059     f_day=l_day=1;
3060  }
3061 Index: webalizer/webalizer.h
3062 ===================================================================
3063 --- webalizer.orig/webalizer.h  2011-04-18 23:54:32.000000000 +0200
3064 +++ webalizer/webalizer.h       2011-04-18 23:56:44.000000000 +0200
3065 @@ -144,7 +144,9 @@
3066                             char *desc;            /* TLD description      */
3067                        u_int64_t count;            /* hit counter          */
3068                        u_int64_t files;            /* file counter         */
3069 -                         double xfer; };          /* xfer amt counter     */
3070 +                         double xfer;             /* xfer amt counter     */
3071 +                         double ixfer;            /* in xfer amt counter  */
3072 +                         double oxfer; };         /* out xfer amt counter */
3073  
3074  typedef struct country_code *CLISTPTR;
3075  
3076 @@ -154,6 +156,8 @@
3077                         char   url[MAXURL];        /* raw request field    */
3078                          int   resp_code;          /* response code        */
3079                    u_int64_t   xfer_size;          /* xfer size in bytes   */
3080 +                  u_int64_t   ixfer_size;         /* in xfer size bytes   */
3081 +                  u_int64_t   oxfer_size;         /* out xfer size bytes  */
3082                         char   refer[MAXREF];      /* referrer             */
3083                         char   agent[MAXAGENT];    /* user agent (browser) */
3084                         char   srchstr[MAXSRCH];   /* search string        */
3085 @@ -252,11 +256,15 @@
3086                   cur_min, cur_sec;
3087  
3088  extern double    t_xfer;                      /* monthly total xfer value */
3089 +extern double    t_ixfer;                     /* monthly total in xfer    */
3090 +extern double    t_oxfer;                     /* monthly total out xfer   */
3091  extern u_int64_t t_hit, t_file, t_site,       /* monthly total vars       */
3092                   t_url, t_ref,  t_agent,
3093                   t_page,t_visit,t_user;
3094  
3095  extern double    tm_xfer[31];                 /* daily transfer totals    */
3096 +extern double    tm_ixfer[31];                /* daily in xfer totals     */
3097 +extern double    tm_oxfer[31];                /* daily out xfer totals    */
3098  
3099  extern u_int64_t tm_hit[31], tm_file[31],     /* daily total arrays       */
3100                   tm_site[31],tm_page[31],
3101 @@ -270,6 +278,8 @@
3102                   th_page[24];
3103  
3104  extern double    th_xfer[24];                 /* hourly xfer array        */
3105 +extern double    th_ixfer[24];
3106 +extern double    th_oxfer[24];
3107  
3108  extern int       f_day,l_day;                 /* first/last day vars      */
3109  extern int       gz_log;                      /* flag for zipped log      */
This page took 0.330676 seconds and 3 git commands to generate.