if(debugm)
printf("DATE=%s IDATA=%d DFROM=%d DUNTIL=%d\n",date,idata,dfrom,duntil);
+ if(date[0] != '\0'){
+ if(idata < dfrom || idata > duntil) continue;
+ }
+ if(url[0] == '\0') continue;
+
if(addr[0] != '\0'){
if(strcmp(addr,ip)!=0) continue;
}
continue;
}
}
- if(url[0] == '\0') continue;
-
- if(date[0] != '\0'){
- if(idata < dfrom || idata > duntil) continue;
- }
if(hm[0] != '\0') {
- bzero(hmr,sizeof(hmr));
+ hmr[0]='\0';
chm++;
getword_start(&gwarea,hora);
while(chm) {
if (getword_multisep(warea,sizeof(warea),&gwarea,':')<0){
- printf("SARG: Maybe you have a broken time in your %s file.\n",arq);
+ debuga(_("Maybe you have a broken time in your %s file"),arq);
exit(1);
}
strncat(hmr,warea,2);
}
}
}
- sprintf (tmp3, "%s/sarg/%s.unsort", tmp, ufile->user->filename);
+ if (snprintf (tmp3, sizeof(tmp3), "%s/sarg/%s.unsort", tmp, ufile->user->filename)>=sizeof(tmp3)) {
+ debuga(_("Temporary user file name too long: %s/sarg/%s.unsort"), tmp, ufile->user->filename);
+ exit(1);
+ }
if ((ufile->file = MY_FOPEN (tmp3, "a")) == NULL) {
fprintf (stderr, "%s: (log) %s: %s - %s\n", argv[0], text[9], tmp3, strerror(errno));
exit (1);
char *longline_read(FILE *fp_in,struct longlinestruct *line)
{
int i;
- int skipcr;
char *newbuf;
size_t nread;
if (!line->buffer) return(NULL);
+ while (1) {
+ for (i=line->end ; i<line->length && (line->buffer[i]=='\n' || line->buffer[i]=='\r') ; i++);
+ if (i<line->length) {
+ line->end=i;
+ break;
+ }
+ nread=(feof(fp_in)) ? 0 : fread(line->buffer,1,line->size,fp_in);
+ if (nread==0) return(NULL);
+ line->length=nread;
+ line->end=0;
+ }
+
line->start=line->end;
- skipcr=1;
while (1) {
- if (line->end>=line->length) {
- if (line->start>0) {
- for (i=line->start ; i<line->length ; i++) line->buffer[i-line->start]=line->buffer[i];
- line->length-=line->start;
- line->end-=line->start;
- line->start=0;
+ for (i=line->end ; i<line->length && line->buffer[i]!='\n' && line->buffer[i]!='\r' ; i++);
+ line->end=i;
+ if (line->end<line->length) break;
+
+ if (line->start>0) {
+ for (i=line->start ; i<line->length ; i++) line->buffer[i-line->start]=line->buffer[i];
+ line->length-=line->start;
+ line->end-=line->start;
+ line->start=0;
+ }
+ if (line->length>=line->size) {
+ line->size+=8192;
+ newbuf=realloc(line->buffer,line->size);
+ if (!newbuf) {
+ debuga(_("Not enough memory to read one more line from the input log file"));
+ exit(1);
}
- if (line->length>=line->size) {
- line->size+=8192;
+ line->buffer=newbuf;
+ }
+ nread=(feof(fp_in)) ? 0 : fread(line->buffer+line->length,1,line->size-line->length,fp_in);
+ if (nread==0) {
+ if (line->end<=line->start) return(NULL);
+ if (line->end>=line->size) {
+ line->end=line->size;
+ line->size++;
newbuf=realloc(line->buffer,line->size);
if (!newbuf) {
debuga(_("Not enough memory to read one more line from the input log file"));
}
line->buffer=newbuf;
}
- nread=(feof(fp_in)) ? 0 : fread(line->buffer+line->length,1,line->size-line->length,fp_in);
- if (nread==0) {
- if (skipcr || line->end<=line->start) return(NULL);
- if (line->end>=line->size) {
- line->end=line->size;
- line->size++;
- newbuf=realloc(line->buffer,line->size);
- if (!newbuf) {
- debuga(_("Not enough memory to read one more line from the input log file"));
- exit(1);
- }
- line->buffer=newbuf;
- }
- line->buffer[line->end]='\0';
- return(line->buffer+line->start);
- }
- line->length+=nread;
- }
- if (skipcr) {
- if (line->buffer[line->end]!='\n' && line->buffer[line->end]!='\r') {
- skipcr=0;
- line->start=line->end;
- }
- } else {
- if (line->buffer[line->end]=='\n' || line->buffer[line->end]=='\r') break;
+ line->buffer[line->end]='\0';
+ return(line->buffer+line->start);
}
- line->end++;
+ line->length+=nread;
}
line->buffer[line->end++]='\0';
return(line->buffer+line->start);