diff -ur webtrace-conv.old/dec/tr-stat.cc webtrace-conv/dec/tr-stat.cc --- webtrace-conv.old/dec/tr-stat.cc Tue Feb 23 17:28:34 1999 +++ webtrace-conv/dec/tr-stat.cc Fri Jul 9 10:13:34 1999 @@ -50,7 +50,7 @@ void sort_rlog() { - heapsort((void *)rlog, num_rlog, sizeof(ReqLog), compare); + qsort((void *)rlog, num_rlog, sizeof(ReqLog), compare); double t = rlog[0].time; for (unsigned int i = 0; i < num_rlog; i++) { rlog[i].time -= t; @@ -86,7 +86,7 @@ Tcl_DeleteHashTable(&urlHash); // sort using access frequencies - heapsort((void *)tbl, sz, sizeof(URL*), compare_url); + qsort((void *)tbl, sz, sizeof(URL*), compare_url); umap = new int[url]; // write sorted url to page table for (i = 0; i < sz; i++) { diff -ur webtrace-conv.old/epa/tr-stat.cc webtrace-conv/epa/tr-stat.cc --- webtrace-conv.old/epa/tr-stat.cc Tue Feb 23 17:30:04 1999 +++ webtrace-conv/epa/tr-stat.cc Fri Jul 9 12:57:38 1999 @@ -72,7 +72,7 @@ void sort_rlog() { - heapsort((void *)rlog, num_rlog, sizeof(ReqLog), compare); + qsort((void *)rlog, num_rlog, sizeof(ReqLog), compare); double t = rlog[0].time; for (unsigned int i = 0; i < num_rlog; i++) { rlog[i].time -= t; @@ -109,7 +109,7 @@ Tcl_DeleteHashTable(&urlHash); // sort using access frequencies - heapsort((void *)tbl, sz, sizeof(URL*), compare_url); + qsort((void *)tbl, sz, sizeof(URL*), compare_url); umap = new int[url]; // write sorted url to page table for (i = 0; i < sz; i++) { @@ -191,36 +191,43 @@ if (feof(stdin) || ferror(stdin)) return 0; - char *tmp = buf, *code, *date, *method; - lfe.client = strsep(&tmp, " "); - date = strsep(&tmp, " "); - method = strsep(&tmp, " "); // GET/POST + char *tmp = buf, *code, *method, *date; + lfe.client = strtok(tmp, " "); + date = strtok(NULL, " "); + method = strtok(NULL, " "); // GET/POST *(method++) = 0; if (strcmp(method, "GET") != 0) // Only take GET requests return -1; - lfe.url = strsep(&tmp, " "); + lfe.url = strtok(NULL, " "); if (strchr(lfe.url, '?') != NULL) // Do not take any url that contains '?' return -1; - strsep(&tmp, " "); // HTTP/1.0 - code = strsep(&tmp, " "); // return code + strtok(NULL, " "); // HTTP/1.0 + code = strtok(NULL, " "); // return code if ((atoi(code) != 200) && (atoi(code) != 304)) return -1; - lfe.size = atoi(tmp); // size + // last element: size + tmp = strtok(NULL, " "); + lfe.size = atoi(tmp); // parse date - tmp = date + 1; + // date is from internal string of strtok(), we have to copy it. + // What a stupid strtok()!!!! + tmp = new char[strlen(date)+1]; + strcpy(tmp, date); + date = tmp + 1; lfe.time = 0; - date = strsep(&tmp, ":"); // day + date = strtok(date, ":"); // day lfe.time = atoi(date); - date = strsep(&tmp, ":"); // hour + date = strtok(NULL, ":"); // hour lfe.time = lfe.time*24 + atoi(date); - date = strsep(&tmp, ":"); // minute + date = strtok(NULL, ":"); // minute lfe.time = lfe.time*60 + atoi(date); - tmp[2] = 0; // get rid of the last ']' - lfe.time = lfe.time*60 + atoi(tmp); + date = strtok(NULL, "]"); + lfe.time = lfe.time*60 + atoi(date); + delete []tmp; return 1; } diff -ur webtrace-conv.old/nlanr/logparse.cc webtrace-conv/nlanr/logparse.cc --- webtrace-conv.old/nlanr/logparse.cc Sat Feb 13 13:03:01 1999 +++ webtrace-conv/nlanr/logparse.cc Fri Jul 9 14:03:14 1999 @@ -17,59 +17,76 @@ } // Parse a line and fill an lf_entry - char *p = buf, *q, *tmp1, *tmp2; + char *p = buf, *q, *tmp1, *tmp2, *ret_code; u_int32_t lapse; // first two entries: and - q = strsep(&p, " "); + q = strtok(p, " "); ne.rt = strtod(q, NULL); - q = strsep(&p, " "); + q = strtok(NULL, " "); lapse = strtoul(q, NULL, 10); ne.rt -= (double)lapse/1000.0; // Client address - q = strsep(&p, " "); + q = strtok(NULL, " "); ne.cid = (u_int32_t)inet_addr(q); // Log tags, do not store them but use it to filter entries - tmp1 = q = strsep(&p, " "); - tmp2 = strsep(&tmp1, "/"); - tmp2 += 4; // Ignore the first 4 char "TCP_" - if ((strcmp(tmp2, "MISS") == 0) || - (strcmp(tmp2, "CLIENT_REFRESH_MISS") == 0) || - (strcmp(tmp2, "IMS_MISS") == 0) || - (strcmp(tmp2, "DENIED") == 0)) - return -1; // Return negative to discard this entry + ret_code = strtok(NULL, " "); + if (ret_code == NULL) { abort(); } + // XXX Have to handle this return code in the end because we are using + // strtok() and it cannot interleave two strings :( STUPID!! // Page size - q = strsep(&p, " "); + q = strtok(NULL, " "); ne.size = strtoul(q, NULL, 10); // Request method, GET only - q = strsep(&p, " "); + q = strtok(NULL, " "); if (strcmp(q, "GET") != 0) return -1; // URL - q = strsep(&p, " "); + q = strtok(NULL, " "); + if (q == NULL) abort(); if (strchr(q, '?') != NULL) // Do not accept any URL containing '?' return -1; ne.url = new char[strlen(q) + 1]; strcpy(ne.url, q); // Try to locate server name from the URL - tmp1 = strsep(&q, "/"); + // XXX no more parsing from the original string!!!! + tmp1 = strtok(q, "/"); if (strcmp(tmp1, "http:") != 0) { // How come this isn't a http request??? delete []ne.url; return -1; } - tmp1 = strsep(&q, "/"); - tmp1 = strsep(&q, "/"); + tmp1 = strtok(NULL, "/"); + if (tmp1 == NULL) abort(); ne.sid = new char[strlen(tmp1) + 1]; strcpy(ne.sid, tmp1); + // Now check return codes + if (ret_code == NULL) abort(); + tmp1 = new char[strlen(ret_code)+1]; + strcpy(tmp1, ret_code); + tmp2 = strtok(tmp1, "/"); + tmp2 += 4; // Ignore the first 4 char "TCP_" + if ((strcmp(tmp2, "MISS") == 0) || + (strcmp(tmp2, "CLIENT_REFRESH_MISS") == 0) || + (strcmp(tmp2, "IMS_MISS") == 0) || + (strcmp(tmp2, "DENIED") == 0)) { + delete []ne.url; + delete []ne.sid; + delete []tmp1; + return -1; // Return negative to discard this entry + } + delete []tmp1; + // All the rest are useless, do not parse them return 0; } + + diff -ur webtrace-conv.old/nlanr/tr-stat.cc webtrace-conv/nlanr/tr-stat.cc --- webtrace-conv.old/nlanr/tr-stat.cc Tue Feb 23 17:29:31 1999 +++ webtrace-conv/nlanr/tr-stat.cc Fri Jul 9 10:02:34 1999 @@ -63,7 +63,7 @@ void sort_rlog() { - heapsort((void *)rlog, num_rlog, sizeof(ReqLog), compare); + qsort((void *)rlog, num_rlog, sizeof(ReqLog), compare); double t = rlog[0].time; for (unsigned int i = 0; i < num_rlog; i++) { rlog[i].time -= t; @@ -96,7 +96,7 @@ Tcl_DeleteHashTable(&urlHash); // sort using access frequencies - heapsort((void *)tbl, sz, sizeof(URL*), compare_url); + qsort((void *)tbl, sz, sizeof(URL*), compare_url); umap = new int[url]; // write sorted url to page table for (i = 0; i < sz; i++) { diff -ur webtrace-conv.old/ucb/logparse.cc webtrace-conv/ucb/logparse.cc --- webtrace-conv.old/ucb/logparse.cc Sat Feb 13 11:09:45 1999 +++ webtrace-conv/ucb/logparse.cc Fri Jul 9 10:15:15 1999 @@ -57,7 +57,7 @@ unsigned char blockbuf[60], *tmp; int uln, ret; - if ((ret = correct_read(logfile_fd, (void *) blockbuf, (size_t) 60)) != 60) { + if ((ret = correct_read(logfile_fd, (char *)blockbuf, (size_t) 60)) != 60) { if (ret == 0) return 1; /* fprintf(stderr, "read 60 failed...%d\n", ret); */ @@ -93,7 +93,7 @@ fprintf(stderr, "out of memory in lf_get_next_netry!\n"); exit(1); } - if ((ret = correct_read(logfile_fd, (void *) (nextentry->url), (size_t) uln)) + if ((ret = correct_read(logfile_fd, (char *) (nextentry->url), (size_t) uln)) != uln ) { if (ret == 0) { free(nextentry->url); diff -ur webtrace-conv.old/ucb/tr-stat.cc webtrace-conv/ucb/tr-stat.cc --- webtrace-conv.old/ucb/tr-stat.cc Tue Feb 23 17:29:00 1999 +++ webtrace-conv/ucb/tr-stat.cc Fri Jul 9 10:01:35 1999 @@ -66,7 +66,7 @@ void sort_rlog() { - heapsort((void *)rlog, num_rlog, sizeof(ReqLog), compare); + qsort((void *)rlog, num_rlog, sizeof(ReqLog), compare); double t = rlog[0].time; for (unsigned int i = 0; i < num_rlog; i++) { rlog[i].time -= t; @@ -144,12 +144,12 @@ * filters out entries */ char *str, *idx = (char *)lfe.url, *tmp; - tmp = strsep(&idx, " "); + tmp = strtok(idx, " "); if (strcmp(tmp, "GET") != 0) { /* We only count GETs */ return -1; } - str = strsep(&idx, "."); /* This is the URL to be entered */ + str = strtok(NULL, "."); /* This is the URL to be entered */ time = (double)lfe.crs + (double)lfe.cru/(double)1000000.0; diff -ur webtrace-conv.old/ucb/utils.cc webtrace-conv/ucb/utils.cc --- webtrace-conv.old/ucb/utils.cc Tue Feb 23 17:29:01 1999 +++ webtrace-conv/ucb/utils.cc Fri Jul 9 10:16:57 1999 @@ -146,10 +146,10 @@ rsec = mult * ((double) t1.tv_sec); rusec = mult * ((double) t1.tv_usec); - ret.tv_sec = rsec; - ret.tv_usec = rusec; + ret.tv_sec = (long)rsec; + ret.tv_usec = (long)rusec; - ret.tv_usec += ((double) 1000000.0 * (rsec - (double) ret.tv_sec)); + ret.tv_usec += (long)((double) 1000000.0 * (rsec - (double) ret.tv_sec)); while (ret.tv_usec > 1000000) { ret.tv_usec -= 1000000; ret.tv_sec += 1; @@ -204,10 +204,10 @@ rsec = mult * ((double) t1.tv_sec); rnsec = mult * ((double) t1.tv_nsec); - ret.tv_sec = rsec; - ret.tv_nsec = rnsec; + ret.tv_sec = (long)rsec; + ret.tv_nsec = (long)rnsec; - ret.tv_nsec += ((double) 1000000000.0 * (rsec - (double) ret.tv_sec)); + ret.tv_nsec += (long)((double) 1000000000.0 * (rsec - (double) ret.tv_sec)); while (ret.tv_nsec > 1000000000) { ret.tv_nsec -= 1000000000; ret.tv_sec += 1; @@ -355,7 +355,7 @@ int ns; fromlen = sizeof (from); - if ((ns = accept (s, (void *) &from, (void *)&fromlen)) < 0) + if ((ns = accept (s, (struct sockaddr*)&from, &fromlen)) < 0) return -1; return ns; }