diff options
author | Jeremy Allison <jra@samba.org> | 2002-01-11 21:52:46 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2002-01-11 21:52:46 +0000 |
commit | b741f6b04c2b0da7963cf0778f20a8ad1e8dbf9e (patch) | |
tree | a7abaf498a9a2866cd497cc1377ceb1749d78b88 | |
parent | d6823366b881612234ab0655adb11c594f864c4a (diff) | |
download | samba-b741f6b04c2b0da7963cf0778f20a8ad1e8dbf9e.tar.gz samba-b741f6b04c2b0da7963cf0778f20a8ad1e8dbf9e.tar.bz2 samba-b741f6b04c2b0da7963cf0778f20a8ad1e8dbf9e.zip |
Latest attempt at changeid.
Jeremy.
(This used to be commit 24ee18c77e1b61004d8ed817118a481f3d43e34c)
-rw-r--r-- | source3/lib/time.c | 28 | ||||
-rw-r--r-- | source3/printing/nt_printing.c | 9 |
2 files changed, 31 insertions, 6 deletions
diff --git a/source3/lib/time.c b/source3/lib/time.c index f0f62ca841..975c58c7a5 100644 --- a/source3/lib/time.c +++ b/source3/lib/time.c @@ -129,10 +129,34 @@ static int get_serverzone(void) /* Re-read the smb serverzone value */ +static struct timeval start_time_hires; + void TimeInit(void) { - done_serverzone_init = False; - get_serverzone(); + done_serverzone_init = False; + get_serverzone(); + /* Save the start time of this process. */ + GetTimeOfDay(&start_time_hires); +} + +/********************************************************************** + Return a timeval struct of the uptime of this process. As TimeInit is + done before a daemon fork then this is the start time from the parent + daemon start. JRA. +***********************************************************************/ + +void get_process_uptime(struct timeval *ret_time) +{ + struct timeval time_now_hires; + + GetTimeOfDay(&time_now_hires); + ret_time->tv_sec = time_now_hires.tv_sec - start_time_hires.tv_sec; + ret_time->tv_usec = time_now_hires.tv_usec - start_time_hires.tv_usec; + if (time_now_hires.tv_usec < start_time_hires.tv_usec) { + ret_time->tv_sec -= 1; + ret_time->tv_usec = 1000000 + (time_now_hires.tv_usec - start_time_hires.tv_usec); + } else + ret_time->tv_usec = time_now_hires.tv_usec - start_time_hires.tv_usec; } /******************************************************************* diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c index d1ab5ce21d..608ba9f21f 100644 --- a/source3/printing/nt_printing.c +++ b/source3/printing/nt_printing.c @@ -2651,10 +2651,11 @@ void get_printer_subst_params(int snum, fstring *printername, fstring *sharename static uint32 rev_changeid(void) { - static time_t start_time; - if (start_time == 0) - start_time = time(NULL); - return (((time(NULL) - start_time)+1)*1000); + struct timeval tv; + + get_process_uptime(&tv); + /* This value is in ms * 100 */ + return (tv.tv_sec * 100000) + (tv.tv_usec / 10); } /* |