Arran Cudbard-Bell wrote:
> Yes dual core Power PC G5 64bit CPU.

  That's what I thought.

  Posix says that "struct timeval" has member "time_t tv_sec".  So it
*should* be safe to pass a pointer to tv_sec to a function that takes a
"time_t *", right?

  Apparently not on the Mac. <sigh>  Please try the attached patch.

  Alan DeKok.
--
  http://deployingradius.com       - The web site of the book
  http://deployingradius.com/blog/ - The blog
Index: src/main/event.c
===================================================================
RCS file: /source/radiusd/src/main/event.c,v
retrieving revision 1.33
diff -u -r1.33 event.c
--- src/main/event.c    24 Apr 2007 09:18:58 -0000      1.33
+++ src/main/event.c    9 May 2007 09:35:41 -0000
@@ -685,6 +685,8 @@
                                        PW_POST_PROXY_TYPE, PW_TYPE_INTEGER);
        vp->vp_integer = dval->value;
 
+       rad_assert(request->proxy_reply = NULL);
+
        return 1;
 }
 
@@ -1729,6 +1731,7 @@
        request->next_callback = NULL;
 
        gettimeofday(&request->received, NULL);
+       request->timestamp = request->received.tv_sec;
        request->when = request->received;
        request->delay = USEC / 10;
 
Index: src/main/xlat.c
===================================================================
RCS file: /source/radiusd/src/main/xlat.c,v
retrieving revision 1.119
diff -u -r1.119 xlat.c
--- src/main/xlat.c     23 Apr 2007 08:10:28 -0000      1.119
+++ src/main/xlat.c     9 May 2007 09:35:41 -0000
@@ -375,6 +375,7 @@
 }
 #endif                         /* HAVE_REGEX_H */
 
+
 /*
  *     Compare two xlat_t structs, based ONLY on the module name.
  */
@@ -917,7 +918,7 @@
                                p++;
                                break;
                        case 'd': /* request day */
-                               TM = localtime_r(&request->received.tv_sec, 
&s_TM);
+                               TM = localtime_r(&request->timestamp, &s_TM);
                                len = strftime(tmpdt, sizeof(tmpdt), "%d", TM);
                                if (len > 0) {
                                        strlcpy(q, tmpdt, freespace);
@@ -941,7 +942,7 @@
                                p++;
                                break;
                        case 'm': /* request month */
-                               TM = localtime_r(&request->received.tv_sec, 
&s_TM);
+                               TM = localtime_r(&request->timestamp, &s_TM);
                                len = strftime(tmpdt, sizeof(tmpdt), "%m", TM);
                                if (len > 0) {
                                        strlcpy(q, tmpdt, freespace);
@@ -962,7 +963,7 @@
                                p++;
                                break;
                        case 't': /* request timestamp */
-                               CTIME_R(&request->received.tv_sec, tmpdt, 
sizeof(tmpdt));
+                               CTIME_R(&request->timestamp, tmpdt, 
sizeof(tmpdt));
                                nl = strchr(tmpdt, '\n');
                                if (nl) *nl = '\0';
                                strlcpy(q, tmpdt, freespace);
@@ -984,7 +985,7 @@
                                p++;
                                break;
                        case 'D': /* request date */
-                               TM = localtime_r(&request->received.tv_sec, 
&s_TM);
+                               TM = localtime_r(&request->timestamp, &s_TM);
                                len = strftime(tmpdt, sizeof(tmpdt), "%Y%m%d", 
TM);
                                if (len > 0) {
                                        strlcpy(q, tmpdt, freespace);
@@ -993,7 +994,7 @@
                                p++;
                                break;
                        case 'H': /* request hour */
-                               TM = localtime_r(&request->received.tv_sec, 
&s_TM);
+                               TM = localtime_r(&request->timestamp, &s_TM);
                                len = strftime(tmpdt, sizeof(tmpdt), "%H", TM);
                                if (len > 0) {
                                        strlcpy(q, tmpdt, freespace);
@@ -1016,7 +1017,7 @@
                                p++;
                                break;
                        case 'S': /* request timestamp in SQL format*/
-                               TM = localtime_r(&request->received.tv_sec, 
&s_TM);
+                               TM = localtime_r(&request->timestamp, &s_TM);
                                len = strftime(tmpdt, sizeof(tmpdt), "%Y-%m-%d 
%H:%M:%S", TM);
                                if (len > 0) {
                                        strlcpy(q, tmpdt, freespace);
@@ -1025,7 +1026,7 @@
                                p++;
                                break;
                        case 'T': /* request timestamp */
-                               TM = localtime_r(&request->received.tv_sec, 
&s_TM);
+                               TM = localtime_r(&request->timestamp, &s_TM);
                                len = strftime(tmpdt, sizeof(tmpdt), 
"%Y-%m-%d-%H.%M.%S.000000", TM);
                                if (len > 0) {
                                        strlcpy(q, tmpdt, freespace);
@@ -1043,7 +1044,7 @@
                                p++;
                                break;
                        case 'Y': /* request year */
-                               TM = localtime_r(&request->received.tv_sec, 
&s_TM);
+                               TM = localtime_r(&request->timestamp, &s_TM);
                                len = strftime(tmpdt, sizeof(tmpdt), "%Y", TM);
                                if (len > 0) {
                                        strlcpy(q, tmpdt, freespace);
- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

Reply via email to