From 6e48918b62e390d1fc8afda6ab437eb52298eed1 Mon Sep 17 00:00:00 2001 From: Michael Meffie Date: Tue, 24 Aug 2010 17:17:22 -0400 Subject: [PATCH 6/6] backport of time-t-casting-fixes-20060404 Fix time_t typecasts. Fixes a crash in afsmonitor on 64-bit hosts. FIXES 15169 (cherry picked from commit 54ce580ef3fdb6c98a80d1104728b1e25d3fb9ff) Change-Id: I0047f7f94b4dd3e529a091c81d3c169108c4a02a Reviewed-on: http://gerrit.openafs.org/2610 Tested-by: BuildBot Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- src/afsmonitor/afsmon-output.c | 22 +++++++++++----- src/afsmonitor/afsmon-parselog.c | 5 ++- src/afsweb/apache_afs_weblog.c | 2 +- src/budb/struct_ops.c | 52 +++++++++++++++++++------------------- src/kauth/rebuild.c | 9 ++++-- src/package/update.c | 3 +- src/tests/dumptool.c | 10 +++++-- src/venus/fstrace.c | 10 +++++-- src/viced/host.c | 8 +++-- src/vlserver/vlclient.c | 3 +- src/vol/vol-salvage.c | 9 ++++-- src/volser/vsprocs.c | 13 ++++++--- src/xstat/xstat_cm_test.c | 13 ++++++--- src/xstat/xstat_fs_test.c | 9 ++++-- 14 files changed, 103 insertions(+), 65 deletions(-) diff --git a/src/afsmonitor/afsmon-output.c b/src/afsmonitor/afsmon-output.c index c3d2250..55d4bc8 100644 --- a/src/afsmonitor/afsmon-output.c +++ b/src/afsmonitor/afsmon-output.c @@ -380,7 +380,7 @@ Print_fs_FullPerfInfo(a_fs_Results) afs_int32 numLongs; /*# longwords received */ struct fs_stats_FullPerfStats *fullPerfP; /*Ptr to full perf stats */ char *printableTime; /*Ptr to printable time string */ - + time_t probeTime; numLongs = a_fs_Results->data.AFS_CollData_len; if (numLongs != fullPerfLongs) { @@ -391,7 +391,8 @@ Print_fs_FullPerfInfo(a_fs_Results) return; } - printableTime = ctime((time_t *) & (a_fs_Results->probeTime)); + probeTime = a_fs_Results->probeTime; + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; fullPerfP = (struct fs_stats_FullPerfStats *) (a_fs_Results->data.AFS_CollData_val); @@ -440,6 +441,7 @@ afsmon_fsOutput(a_outfile, a_detOutput) afs_int32 numLongs; /* longwords in result */ afs_int32 *currLong; /* ptr to longwords in result */ int i; + time_t probeTime; if (afsmon_debug) { fprintf(debugFD, "[ %s ] Called, a_outfile= %s, a_detOutput= %d\n", @@ -455,7 +457,8 @@ afsmon_fsOutput(a_outfile, a_detOutput) } /* get the probe time and strip the \n at the end */ - printTime = ctime((time_t *) & (xstat_fs_Results.probeTime)); + probeTime = xstat_fs_Results.probeTime; + printTime = ctime(&probeTime); printTime[strlen(printTime) - 1] = '\0'; hostname = xstat_fs_Results.connP->hostName; @@ -700,6 +703,7 @@ Print_cm_PerfInfo() afs_int32 numLongs; /*# longwords received */ struct afs_stats_CMPerf *perfP; /*Ptr to performance stats */ char *printableTime; /*Ptr to printable time string */ + time_t probeTime; numLongs = xstat_cm_Results.data.AFSCB_CollData_len; if (numLongs != perfLongs) { @@ -709,7 +713,8 @@ Print_cm_PerfInfo() return; } - printableTime = ctime((time_t *) & (xstat_cm_Results.probeTime)); + probeTime = xstat_cm_Results.probeTime; + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; perfP = (struct afs_stats_CMPerf *) (xstat_cm_Results.data.AFSCB_CollData_val); @@ -926,7 +931,7 @@ Print_cm_FullPerfInfo() static afs_int32 fullPerfLongs = (sizeof(struct afs_stats_CMFullPerf) >> 2); /*Correct #longs */ afs_int32 numLongs; /*# longs actually received */ struct afs_stats_CMFullPerf *fullP; /*Ptr to full perf info */ - + time_t probeTime; char *printableTime; /*Ptr to printable time string */ numLongs = xstat_cm_Results.data.AFSCB_CollData_len; @@ -938,7 +943,8 @@ Print_cm_FullPerfInfo() return; } - printableTime = ctime((time_t *) & (xstat_cm_Results.probeTime)); + probeTime = xstat_cm_Results.probeTime; + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; fullP = (struct afs_stats_CMFullPerf *) (xstat_cm_Results.data.AFSCB_CollData_val); @@ -1020,6 +1026,7 @@ afsmon_cmOutput(a_outfile, a_detOutput) afs_int32 numLongs; /* longwords in result */ afs_int32 *currLong; /* ptr to longwords in result */ int i; + time_t probeTime; if (afsmon_debug) { fprintf(debugFD, "[ %s ] Called, a_outfile= %s, a_detOutput= %d\n", @@ -1036,7 +1043,8 @@ afsmon_cmOutput(a_outfile, a_detOutput) } /* get the probe time and strip the \n at the end */ - printTime = ctime((time_t *) & (xstat_cm_Results.probeTime)); + probeTime = xstat_cm_Results.probeTime; + printTime = ctime(&probeTime); printTime[strlen(printTime) - 1] = '\0'; hostname = xstat_cm_Results.connP->hostName; diff --git a/src/afsmonitor/afsmon-parselog.c b/src/afsmonitor/afsmon-parselog.c index 645c525..f6ce239 100644 --- a/src/afsmonitor/afsmon-parselog.c +++ b/src/afsmonitor/afsmon-parselog.c @@ -318,7 +318,7 @@ Print_fs_FullPerfInfo(a_fs_Results) long numLongs; /*# longwords received */ struct fs_stats_FullPerfStats *fullPerfP; /*Ptr to full perf stats */ char *printableTime; /*Ptr to printable time string */ - + time_t probeTime; numLongs = a_fs_Results->data.AFS_CollData_len; if (numLongs != fullPerfLongs) { @@ -327,7 +327,8 @@ Print_fs_FullPerfInfo(a_fs_Results) return; } - printableTime = ctime(&(a_fs_Results->probeTime)); + probeTime = a_fs_Results->probeTime; + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; fullPerfP = (struct fs_stats_FullPerfStats *) (a_fs_Results->data.AFS_CollData_val); diff --git a/src/afsweb/apache_afs_weblog.c b/src/afsweb/apache_afs_weblog.c index 8468e05..491ea7f 100644 --- a/src/afsweb/apache_afs_weblog.c +++ b/src/afsweb/apache_afs_weblog.c @@ -91,7 +91,7 @@ get_time() char *time_string; t = time(NULL); - time_string = (char *)ctime((time_t *) & t); + time_string = (char *)ctime(&t); time_string[strlen(time_string) - 1] = '\0'; return (time_string); } diff --git a/src/budb/struct_ops.c b/src/budb/struct_ops.c index 34d9384..a6babd0 100644 --- a/src/budb/struct_ops.c +++ b/src/budb/struct_ops.c @@ -35,11 +35,11 @@ */ void -printDbHeader(ptr) - struct DbHeader *ptr; +printDbHeader(struct DbHeader *ptr) { + time_t created = ptr->created; printf("version = %d\n", ptr->dbversion); - printf("created = %s", ctime((time_t *) & ptr->created)); + printf("created = %s", ctime(&created)); printf("cell = %s\n", ptr->cell); printf("lastDumpId = %u\n", ptr->lastDumpId); printf("lastInstanceId = %d\n", ptr->lastInstanceId); @@ -47,10 +47,9 @@ printDbHeader(ptr) } void -printDump(fid, dptr) - FILE *fid; - struct dump *dptr; +printDump(FILE *fid, struct dump *dptr) { + time_t created = dptr->created; fprintf(fid, "id = %u\n", dptr->id); fprintf(fid, "idHashChain = %d\n", dptr->idHashChain); fprintf(fid, "name = %s\n", dptr->dumpName); @@ -59,7 +58,7 @@ printDump(fid, dptr) fprintf(fid, "nameHashChain = %d\n", dptr->nameHashChain); fprintf(fid, "flags = 0x%x\n", dptr->flags); fprintf(fid, "parent = %u\n", dptr->parent); - fprintf(fid, "created = %s", ctime((time_t *) & dptr->created)); + fprintf(fid, "created = %s", ctime(&created)); fprintf(fid, "nVolumes = %d\n", dptr->nVolumes); /* printTapeSet(&dptr->tapes); */ fprintf(fid, "firstTape = %d\n", dptr->firstTape); @@ -68,9 +67,9 @@ printDump(fid, dptr) } void -printDumpEntry(deptr) - struct budb_dumpEntry *deptr; +printDumpEntry(struct budb_dumpEntry *deptr) { + time_t created = deptr->created; printf("id = %u\n", deptr->id); printf("Initial id = %u\n", deptr->initialDumpID); printf("Appended id = %u\n", deptr->appendedDumpID); @@ -95,7 +94,7 @@ printDumpEntry(deptr) printf("volumeSet = %s\n", deptr->volumeSetName); printf("dump path = %s\n", deptr->dumpPath); printf("name = %s\n", deptr->name); - printf("created = %s", ctime((time_t *) & deptr->created)); + printf("created = %s", ctime(&created)); printf("nVolumes = %d\n", deptr->nVolumes); printTapeSet(&deptr->tapes, (deptr->flags & BUDB_DUMP_XBSA_NSS)); @@ -158,14 +157,13 @@ printStructDumpHeader(ptr) } int -printTape(fid, tptr) - FILE *fid; - struct tape *tptr; +printTape(FILE *fid, struct tape *tptr) { + time_t written = tptr->written; fprintf(fid, "name = %s\n", tptr->name); fprintf(fid, "nameHashChain = %d\n", tptr->nameHashChain); fprintf(fid, "flags = 0x%x\n", tptr->flags); - fprintf(fid, "written = %s", ctime((time_t *) & tptr->written)); + fprintf(fid, "written = %s", ctime(&written)); fprintf(fid, "nMBytes = %d\n", tptr->nMBytes); fprintf(fid, "nBytes = %d\n", tptr->nBytes); fprintf(fid, "nFiles = %d\n", tptr->nFiles); @@ -180,9 +178,11 @@ printTape(fid, tptr) } int -printTapeEntry(teptr) - struct budb_tapeEntry *teptr; +printTapeEntry(struct budb_tapeEntry *teptr) { + time_t written = teptr->written; + time_t expires = teptr->expires; + printf("name = %s\n", teptr->name); printf("flags = 0x%x", teptr->flags); if (teptr->flags & BUDB_TAPE_TAPEERROR) @@ -198,8 +198,8 @@ printTapeEntry(teptr) if (teptr->flags & BUDB_TAPE_WRITTEN) printf(": Successful"); printf("\n"); - printf("written = %s", ctime((time_t *) & teptr->written)); - printf("expires = %s", cTIME((time_t *) & teptr->expires)); + printf("written = %s", ctime(&written)); + printf("expires = %s", cTIME(&expires)); printf("kBytes Tape Used = %u\n", teptr->useKBytes); printf("nMBytes Data = %d\n", teptr->nMBytes); printf("nBytes Data = %d\n", teptr->nBytes); @@ -229,9 +229,9 @@ printTapeSet(tsptr, nss) } int -printVolumeEntry(veptr) - struct budb_volumeEntry *veptr; +printVolumeEntry(struct budb_volumeEntry *veptr) { + time_t clone = veptr->clone; printf("name = %s\n", veptr->name); printf("flags = 0x%x", veptr->flags); if (veptr->flags & BUDB_VOL_TAPEERROR) @@ -253,7 +253,7 @@ printVolumeEntry(veptr) printf("tapeSeq = %d\n", veptr->tapeSeq); printf("position = %d\n", veptr->position); - printf("clone = %s", ctime((time_t *) & veptr->clone)); + printf("clone = %s", ctime(&clone)); printf("startByte = %d\n", veptr->startByte); printf("nBytes = %d\n", veptr->nBytes); printf("seq = %d\n", veptr->seq); @@ -264,17 +264,17 @@ printVolumeEntry(veptr) } int -printVolFragment(fid, vfptr) - FILE *fid; - struct volFragment *vfptr; +printVolFragment(FILE *fid, struct volFragment *vfptr) { + time_t clone = vfptr->clone; + time_t incTime = vfptr->incTime; fprintf(fid, "vol = %d\n", vfptr->vol); fprintf(fid, "sameNameChain = %d\n", vfptr->sameNameChain); fprintf(fid, "tape = %d\n", vfptr->tape); fprintf(fid, "sameTapeChain = %d\n", vfptr->sameTapeChain); fprintf(fid, "position = %d\n", vfptr->position); - fprintf(fid, "clone = %s", ctime((time_t *) & vfptr->clone)); - fprintf(fid, "incTime = %s", ctime((time_t *) & vfptr->incTime)); + fprintf(fid, "clone = %s", ctime(&clone)); + fprintf(fid, "incTime = %s", ctime(&incTime)); fprintf(fid, "startByte = %d\n", vfptr->startByte); fprintf(fid, "nBytes = %d\n", vfptr->nBytes); fprintf(fid, "flags = %d\n", vfptr->flags); diff --git a/src/kauth/rebuild.c b/src/kauth/rebuild.c index 3aff989..7d486e8 100644 --- a/src/kauth/rebuild.c +++ b/src/kauth/rebuild.c @@ -116,6 +116,9 @@ PrintEntry(index, entry) char Time[100]; struct tm *tm_p; time_t tt; + time_t modification_time = entry->modification_time; + time_t change_password_time = entry->change_password_time; + time_t max_ticket_lifetime = entry->max_ticket_lifetime; printf("\n"); @@ -196,12 +199,12 @@ PrintEntry(index, entry) (!entry->pwsums[0] && !entry->pwsums[1]) ? "yes" : "no"); printf(" Mod Time = %u: %s", entry->modification_time, - ctime((time_t *) & entry->modification_time)); + ctime(&modification_time)); printf(" Mod ID = %u\n", entry->modification_id); printf(" Change Password Time = %u: %s", entry->change_password_time, - ctime((time_t *) & entry->change_password_time)); + ctime(&change_password_time)); printf(" Ticket lifetime = %u: %s", entry->max_ticket_lifetime, - ctime((time_t *) & entry->max_ticket_lifetime)); + ctime(&max_ticket_lifetime)); printf(" Key Version = %d\n", entry->key_version); printf(" Key = "); diff --git a/src/package/update.c b/src/package/update.c index 0e74e09..08136bd 100644 --- a/src/package/update.c +++ b/src/package/update.c @@ -382,8 +382,9 @@ dochtim(CTREEPTR np, char *path) tm[0].tv_usec = tm[1].tv_usec = 0; if (!opt_silent) { char *date; + time_t mtime = np->mtime; - date = ctime((time_t *) & np->mtime); + date = ctime(&mtime); date[24] = 0; loudonly_message("utimes %s [%s]", path, date); } diff --git a/src/tests/dumptool.c b/src/tests/dumptool.c index 9356549..decf80b 100644 --- a/src/tests/dumptool.c +++ b/src/tests/dumptool.c @@ -314,6 +314,7 @@ main(int argc, char *argv[]) struct winsize win; FILE *f; int fd; + time_t tmv; #ifdef RESIDENCY for (i = 0; i < RS_MAXRESIDENCIES; i++) { @@ -486,9 +487,12 @@ main(int argc, char *argv[]) printf(" needsSalvaged"); printf("\n"); printf("\tuniquifier = %lu\n", vol.uniquifier); - printf("\tCreation date = %s", ctime((time_t *) & vol.creationDate)); - printf("\tLast access date = %s", ctime((time_t *) & vol.accessDate)); - printf("\tLast update date = %s", ctime((time_t *) & vol.updateDate)); + tmv = vol.creationDate; + printf("\tCreation date = %s", ctime(&tmv)); + tmv = vol.accessDate; + printf("\tLast access date = %s", ctime(&tmv)); + tmv = vol.updateDate; + printf("\tLast update date = %s", ctime(&tmv)); printf("\tVolume owner = %lu\n", vol.owner); } diff --git a/src/venus/fstrace.c b/src/venus/fstrace.c index a3f6bce..389578b 100644 --- a/src/venus/fstrace.c +++ b/src/venus/fstrace.c @@ -278,6 +278,7 @@ DisplayRecord(outFilep, alp, rsize) int status; int printed; /* did we print the string yet? */ afs_int32 *tlp; + time_t tmv; /* decode parameters */ temp = alp[0]; /* type encoded in low-order 24 bits, t0 high */ @@ -347,7 +348,8 @@ DisplayRecord(outFilep, alp, rsize) #endif /* AFS_SGI64_ENV */ break; case ICL_TYPE_UNIXDATE: - printfParms[pfpix++] = (long)ctime((time_t *) & alp[pix]); + tmv = alp[pix]; + printfParms[pfpix++] = (long)ctime(&tmv); break; default: printf("DisplayRecord: Bad type %d in decode switch.\n", type); @@ -443,8 +445,9 @@ DisplayRecord(outFilep, alp, rsize) } if (!printed) { if (alp[1] == ICL_INFO_TIMESTAMP) { + tmv = alp[4]; fprintf(outFilep, "time %d.%06d, pid %u: %s\n", alp[3] / 1000000, - alp[3] % 1000000, alp[2], ctime((time_t *) & alp[4])); + alp[3] % 1000000, alp[2], ctime(&tmv)); } else { fprintf(outFilep, "raw op %d, time %d.%06d, pid %u\n", alp[1], alp[3] / 1000000, alp[3] % 1000000, alp[2]); @@ -493,8 +496,9 @@ DisplayRecord(outFilep, alp, rsize) fprintf(outFilep, "p%d:%s ", i, (char *)&alp[pix]); break; case ICL_TYPE_UNIXDATE: + tmv = alp[pix]; fprintf(outFilep, "p%d:%s ", i, - ctime((time_t *) & alp[pix])); + ctime(&tmv)); break; default: printf diff --git a/src/viced/host.c b/src/viced/host.c index d053e80..84ddac0 100644 --- a/src/viced/host.c +++ b/src/viced/host.c @@ -2667,8 +2667,10 @@ h_PrintClient(register struct host *host, int held, StreamHandle_t * file) char tmpStr[256]; char tbuffer[32]; char hoststr[16]; + time_t LastCall, expTime; H_LOCK; + LastCall = host->LastCall; if (host->hostFlags & HOSTDELETED) { H_UNLOCK; return held; @@ -2677,11 +2679,12 @@ h_PrintClient(register struct host *host, int held, StreamHandle_t * file) "Host %s:%d down = %d, LastCall %s", afs_inet_ntoa_r(host->host, hoststr), ntohs(host->port), (host->hostFlags & VENUSDOWN), - afs_ctime((time_t *) & host->LastCall, tbuffer, + afs_ctime(&LastCall, tbuffer, sizeof(tbuffer))); (void)STREAM_WRITE(tmpStr, strlen(tmpStr), 1, file); for (client = host->FirstClient; client; client = client->next) { if (!client->deleted) { + expTime = client->expTime; (void)afs_snprintf(tmpStr, sizeof tmpStr, " user id=%d, name=%s, sl=%s till %s", client->ViceId, h_UserName(client), @@ -2689,8 +2692,7 @@ h_PrintClient(register struct host *host, int held, StreamHandle_t * file) authClass ? "Authenticated" : "Not authenticated", client-> - authClass ? afs_ctime((time_t *) & client-> - expTime, tbuffer, + authClass ? afs_ctime(&expTime, tbuffer, sizeof(tbuffer)) : "No Limit\n"); (void)STREAM_WRITE(tmpStr, strlen(tmpStr), 1, file); diff --git a/src/vlserver/vlclient.c b/src/vlserver/vlclient.c index c18874c..7a1146b 100644 --- a/src/vlserver/vlclient.c +++ b/src/vlserver/vlclient.c @@ -1313,8 +1313,9 @@ dump_stats(stats, vital_header) { int i; char strg[30]; + time_t start_time = stats->start_time; - strncpy(strg, ctime((time_t *) & stats->start_time), sizeof(strg)); + strncpy(strg, ctime(&start_time), sizeof(strg)); strg[strlen(strg) - 1] = 0; printf("Dynamic statistics stats (starting time: %s):\n", strg); printf("OpcodeName\t# Requests\t# Aborts\n"); diff --git a/src/vol/vol-salvage.c b/src/vol/vol-salvage.c index d558825..48eb491 100644 --- a/src/vol/vol-salvage.c +++ b/src/vol/vol-salvage.c @@ -2828,11 +2828,14 @@ SalvageIndex(Inode ino, VnodeClass class, int RW, } if (VNDISK_GET_INO(vnode)) { if (!Showmode) { - Log("Vnode %d (unique %u): corresponding inode %s is missing; vnode deleted, vnode mod time=%s", vnodeNumber, vnode->uniquifier, PrintInode(NULL, VNDISK_GET_INO(vnode)), ctime((time_t *) & (vnode->serverModifyTime))); + time_t serverModifyTime = vnode->serverModifyTime; + Log("Vnode %d (unique %u): corresponding inode %s is missing; vnode deleted, vnode mod time=%s", vnodeNumber, vnode->uniquifier, PrintInode(NULL, VNDISK_GET_INO(vnode)), ctime(&serverModifyTime)); } } else { - if (!Showmode) - Log("Vnode %d (unique %u): bad directory vnode (no inode number listed); vnode deleted, vnode mod time=%s", vnodeNumber, vnode->uniquifier, ctime((time_t *) & (vnode->serverModifyTime))); + if (!Showmode) { + time_t serverModifyTime = vnode->serverModifyTime; + Log("Vnode %d (unique %u): bad directory vnode (no inode number listed); vnode deleted, vnode mod time=%s", vnodeNumber, vnode->uniquifier, ctime(&serverModifyTime)); + } } memset(vnode, 0, vcp->diskSize); vnodeChanged = 1; diff --git a/src/volser/vsprocs.c b/src/volser/vsprocs.c index 38571e8..6354000 100644 --- a/src/volser/vsprocs.c +++ b/src/volser/vsprocs.c @@ -3688,8 +3688,10 @@ UV_ReleaseVolume(afs_int32 afromvol, afs_int32 afromserver, if (fromdate == 0) fprintf(STDOUT, " (full release)"); - else - fprintf(STDOUT, " (as of %.24s)", ctime((time_t *)&fromdate)); + else { + tmv = fromdate; + fprintf(STDOUT, " (as of %.24s)", ctime(&tmv)); + } fprintf(STDOUT, ".\n"); fflush(STDOUT); } @@ -3943,6 +3945,7 @@ UV_DumpVolume(afs_int32 afromvol, afs_int32 afromserver, afs_int32 afrompart, struct rx_call *fromcall = (struct rx_call *)0; afs_int32 fromtid = 0, rxError = 0, rcode = 0; afs_int32 code, error = 0, retry = 0; + time_t tmv = fromdate; if (setjmp(env)) ERROR_EXIT(EPIPE); @@ -3955,7 +3958,7 @@ UV_DumpVolume(afs_int32 afromvol, afs_int32 afromserver, afs_int32 afrompart, VEPRINT("Full Dump ...\n"); } else { VEPRINT1("Incremental Dump (as of %.24s)...\n", - ctime((time_t *) & fromdate)); + ctime(&tmv)); } /* get connections to the servers */ @@ -4033,6 +4036,7 @@ UV_DumpClonedVolume(afs_int32 afromvol, afs_int32 afromserver, afs_int32 code = 0, vcode = 0, error = 0; afs_int32 clonevol = 0; char vname[64]; + time_t tmv = fromdate; if (setjmp(env)) ERROR_EXIT(EPIPE); @@ -4045,7 +4049,7 @@ UV_DumpClonedVolume(afs_int32 afromvol, afs_int32 afromserver, VEPRINT("Full Dump ...\n"); } else { VEPRINT1("Incremental Dump (as of %.24s)...\n", - ctime((time_t *) & fromdate)); + ctime(&tmv)); } /* get connections to the servers */ @@ -7122,6 +7126,7 @@ UV_GetSize(afs_int32 afromvol, afs_int32 afromserver, afs_int32 afrompart, struct rx_connection *aconn = (struct rx_connection *)0; afs_int32 tid = 0, rcode = 0; afs_int32 code, error = 0; + time_t tmv = fromdate; /* get connections to the servers */ diff --git a/src/xstat/xstat_cm_test.c b/src/xstat/xstat_cm_test.c index b332565..a81c090 100644 --- a/src/xstat/xstat_cm_test.c +++ b/src/xstat/xstat_cm_test.c @@ -124,13 +124,13 @@ PrintCallInfo() int numInt32s; /*# int32words returned */ afs_int32 *currInt32; /*Ptr to current afs_int32 value */ char *printableTime; /*Ptr to printable time string */ - + time_t probeTime = xstat_cm_Results.probeTime; /* * Just print out the results of the particular probe. */ numInt32s = xstat_cm_Results.data.AFSCB_CollData_len; currInt32 = (afs_int32 *) (xstat_cm_Results.data.AFSCB_CollData_val); - printableTime = ctime((time_t *) & (xstat_cm_Results.probeTime)); + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; printf @@ -156,8 +156,9 @@ print_cmCallStats() static char rn[] = "print_cmCallStats"; /*Routine name */ char *printableTime; /*Ptr to printable time string */ struct afs_CMStats *cmp; + time_t probeTime = xstat_cm_Results.probeTime; - printableTime = ctime((time_t *) & (xstat_cm_Results.probeTime)); + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; printf @@ -794,6 +795,7 @@ PrintPerfInfo() afs_int32 numInt32s; /*# int32words received */ struct afs_stats_CMPerf *perfP; /*Ptr to performance stats */ char *printableTime; /*Ptr to printable time string */ + time_t probeTime = xstat_cm_Results.probeTime; numInt32s = xstat_cm_Results.data.AFSCB_CollData_len; if (numInt32s != perfInt32s) { @@ -803,7 +805,7 @@ PrintPerfInfo() return; } - printableTime = ctime((time_t *) & (xstat_cm_Results.probeTime)); + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; perfP = (struct afs_stats_CMPerf *) (xstat_cm_Results.data.AFSCB_CollData_val); @@ -1025,6 +1027,7 @@ PrintFullPerfInfo() struct afs_stats_CMFullPerf *fullP; /*Ptr to full perf info */ char *printableTime; /*Ptr to printable time string */ + time_t probeTime = xstat_cm_Results.probeTime; numInt32s = xstat_cm_Results.data.AFSCB_CollData_len; if (numInt32s != fullPerfInt32s) { @@ -1034,7 +1037,7 @@ PrintFullPerfInfo() return; } - printableTime = ctime((time_t *) & (xstat_cm_Results.probeTime)); + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; fullP = (struct afs_stats_CMFullPerf *) (xstat_cm_Results.data.AFSCB_CollData_val); diff --git a/src/xstat/xstat_fs_test.c b/src/xstat/xstat_fs_test.c index df6b47d..00d64dc 100644 --- a/src/xstat/xstat_fs_test.c +++ b/src/xstat/xstat_fs_test.c @@ -113,13 +113,14 @@ PrintCallInfo() int numInt32s; /*# int32words returned */ afs_int32 *currInt32; /*Ptr to current afs_int32 value */ char *printableTime; /*Ptr to printable time string */ + time_t probeTime = xstat_fs_Results.probeTime; /* * Just print out the results of the particular probe. */ numInt32s = xstat_fs_Results.data.AFS_CollData_len; currInt32 = (afs_int32 *) (xstat_fs_Results.data.AFS_CollData_val); - printableTime = ctime((time_t *) & (xstat_fs_Results.probeTime)); + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; printf("AFS_XSTATSCOLL_CALL_INFO (coll %d) for FS %s\n[Probe %d, %s]\n\n", @@ -414,6 +415,7 @@ PrintFullPerfInfo() struct fs_stats_FullPerfStats *fullPerfP; /*Ptr to full perf stats */ char *printableTime; /*Ptr to printable time * string */ + time_t probeTime = xstat_fs_Results.probeTime; numInt32s = xstat_fs_Results.data.AFS_CollData_len; if (numInt32s != fullPerfInt32s) { @@ -422,7 +424,7 @@ PrintFullPerfInfo() return; } - printableTime = ctime((time_t *) & (xstat_fs_Results.probeTime)); + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; fullPerfP = (struct fs_stats_FullPerfStats *) (xstat_fs_Results.data.AFS_CollData_val); @@ -465,6 +467,7 @@ PrintPerfInfo() afs_int32 numInt32s; /*# int32words received */ struct afs_PerfStats *perfP; /*Ptr to performance stats */ char *printableTime; /*Ptr to printable time string */ + time_t probeTime = xstat_fs_Results.probeTime; numInt32s = xstat_fs_Results.data.AFS_CollData_len; if (numInt32s != perfInt32s) { @@ -473,7 +476,7 @@ PrintPerfInfo() return; } - printableTime = ctime((time_t *) & (xstat_fs_Results.probeTime)); + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; perfP = (struct afs_PerfStats *) (xstat_fs_Results.data.AFS_CollData_val); -- 1.7.3.2