time-t-casting-fixes-20060404
[openafs.git] / src / venus / fstrace.c
index 4af3801..ef5dd1f 100644 (file)
@@ -18,7 +18,7 @@ RCSID
 
 #include <stdio.h>
 #include <sys/types.h>
-#if !defined(AFS_SUN3_ENV) && !defined(sys_vax_ul43) && !defined(AFS_DARWIN_ENV)
+#if !defined(AFS_SUN3_ENV) && !defined(sys_vax_ul43) 
 #include <time.h>
 /*#ifdef       AFS_AIX_ENV*/
 #include <sys/time.h>
@@ -41,7 +41,7 @@ RCSID
 #include <afs/icl.h>
 #include <afs/afsutil.h>
 
-#if defined(AFS_ALPHA_ENV) || defined(AFS_SGI61_ENV) || (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL))
+#if defined(AFS_OSF_ENV) || defined(AFS_SGI61_ENV) || (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL))
 /* For SGI 6.2, this is changed to 1 if it's a 32 bit kernel. */
 int afs_icl_sizeofLong = 2;
 #else
@@ -285,6 +285,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 */
@@ -312,14 +313,12 @@ DisplayRecord(outFilep, alp, rsize)
                printfParms[pfpix] <<= 32;
                printfParms[pfpix] |= alp[pix + 1];
            }
-#else /* AFS_SGI61_ENV */
-#ifdef AFS_ALPHA_ENV
+#elif defined(AFS_OSF_ENV)
            printfParms[pfpix] = alp[pix + 1];
            printfParms[pfpix] |= (alp[pix] <<= 32);
-#else /* AFS_ALPHA_ENV */
+#else /* !AFS_OSF_ENV && !AFS_SGI61_ENV */
            printfParms[pfpix] = alp[pix];
-#endif /* AFS_ALPHA_ENV */
-#endif /* AFS_SGI61_ENV */
+#endif
            pfpix++;
            break;
        case ICL_TYPE_INT32:
@@ -356,7 +355,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);
@@ -452,8 +452,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]);
@@ -502,8 +503,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
@@ -1493,7 +1495,11 @@ dce1_error_inq_text(status_to_convert, error_text, status)
     char nls_filename[11];
     char alt_filename[80];
     char *message;
+#if defined(AFS_64BITPOINTER_ENV)
+    long J;
+#else
     int J;
+#endif
     static char *facility_names[] = {
        "xxx",
        "afs"
@@ -1560,7 +1566,11 @@ dce1_error_inq_text(status_to_convert, error_text, status)
     catd = (nl_catd) catopen1(nls_filename, 0);
 #endif
 #else
+#if defined(AFS_64BITPOINTER_ENV)
+    J = (long)catopen(nls_filename, 0);
+#else
     J = (int)catopen(nls_filename, 0);
+#endif
     catd = (nl_catd) J;
 #endif
     if (catd == (nl_catd) - 1) {
@@ -1583,7 +1593,11 @@ dce1_error_inq_text(status_to_convert, error_text, status)
        catd = (nl_catd) catopen1(alt_filename, 0);
 #endif
 #else
+#if defined(AFS_64BITPOINTER_ENV)
+        J = (long)catopen(alt_filename, 0);
+#else
        J = (int)catopen(alt_filename, 0);
+#endif
        catd = (nl_catd) J;
 #endif
        if (catd == (nl_catd) - 1) {
@@ -2115,7 +2129,7 @@ icl_TailKernel(outFilep, logname, waitTime)
 afs_syscall(call, parm0, parm1, parm2, parm3, parm4, parm5, parm6)
      long call, parm0, parm1, parm2, parm3, parm4, parm5, parm6;
 {
-    int code;
+    int code, rval;
 #ifdef AFS_LINUX20_ENV
 #if defined AFS_LINUX_64BIT_KERNEL
     long long eparm[4];
@@ -2133,15 +2147,23 @@ afs_syscall(call, parm0, parm1, parm2, parm3, parm4, parm5, parm6)
 #endif
     /* Linux can only handle 5 arguments in the actual syscall. */
     if (call == AFSCALL_ICL) {
-       code = syscall(AFS_SYSCALL, call, parm0, parm1, parm2, eparm);
+       rval = proc_afs_syscall(call, parm0, parm1, parm2, eparm, &code);
+       if (rval)
+           code = syscall(AFS_SYSCALL, call, parm0, parm1, parm2, eparm);
     } else {
-       code = syscall(AFS_SYSCALL, call, parm0, parm1, parm2, parm3);
+       rval = proc_afs_syscall(call, parm0, parm1, parm2, parm3, &code);
+       if (rval)
+           code = syscall(AFS_SYSCALL, call, parm0, parm1, parm2, parm3);
     }
 #if defined(AFS_SPARC64_LINUX20_ENV) || defined(AFS_SPARC_LINUX20_ENV)
     /* on sparc this function returns none value, so do it myself */
     __asm__ __volatile__("mov  %o0, %i0; ret; restore");
 #endif
 #else
+#ifdef AFS_DARWIN80_ENV
+    code = ioctl_afs_syscall(call, parm0, parm1, parm2, parm3, parm4, parm5, &rval);
+    if (!code) code = rval;
+#else
 #if !defined(AFS_SGI_ENV) && !defined(AFS_AIX32_ENV)
     code = syscall(AFS_SYSCALL, call, parm0, parm1, parm2, parm3, parm4);
 #else
@@ -2151,6 +2173,7 @@ afs_syscall(call, parm0, parm1, parm2, parm3, parm4, parm5, parm6)
     code = syscall(AFSCALL_ICL, parm0, parm1, parm2, parm3, parm4);
 #endif
 #endif
+#endif
 #endif /* AFS_LINUX20_ENV */
     return code;
 }