Postfix3.3.1
myrand.c
[詳解]
1 /*++
2 /* NAME
3 /* myrand 3
4 /* SUMMARY
5 /* rand wrapper
6 /* SYNOPSIS
7 /* #include <myrand.h>
8 /*
9 /* void mysrand(seed)
10 /* int seed;
11 /*
12 /* int myrand()
13 /* DESCRIPTION
14 /* This module implements a wrapper for the portable, pseudo-random
15 /* number generator. The wrapper adds automatic initialization.
16 /*
17 /* mysrand() performs initialization. This call may be skipped.
18 /*
19 /* myrand() returns a pseudo-random number in the range [0, RAND_MAX].
20 /* If mysrand() was not called, it is invoked with the process ID
21 /* ex-or-ed with the time of day in seconds.
22 /* LICENSE
23 /* .ad
24 /* .fi
25 /* The Secure Mailer license must be distributed with this software.
26 /* WARNING
27 /* Do not use this code for generating unpredictable numbers.
28 /* AUTHOR(S)
29 /* Wietse Venema
30 /* IBM T.J. Watson Research
31 /* P.O. Box 704
32 /* Yorktown Heights, NY 10598, USA
33 /*--*/
34 
35 /* System library. */
36 
37 #include <sys_defs.h>
38 #include <stdlib.h>
39 #include <unistd.h>
40 #include <time.h>
41 
42 /* Utility library. */
43 
44 #include <myrand.h>
45 
46 static int myrand_initdone = 0;
47 
48 /* mysrand - initialize */
49 
50 void mysrand(int seed)
51 {
52  srand(seed);
53  myrand_initdone = 1;
54 }
55 
56 /* myrand - pseudo-random number */
57 
58 int myrand(void)
59 {
60  if (myrand_initdone == 0)
61  mysrand(getpid() ^ time((time_t *) 0));
62  return (rand());
63 }
void mysrand(int seed)
Definition: myrand.c:50
int myrand(void)
Definition: myrand.c:58