1 #include <time.h>
2 
3 #ifdef __STDC__
make_new_seed()4 int make_new_seed()
5 #else
6 int make_new_seed()
7 #endif
8 {
9   time_t tp;
10   struct tm *temp;
11   unsigned int temp2, temp3;
12   static unsigned int temp4 = 0xe0e1;
13 
14   time(&tp);
15   temp = localtime(&tp);
16 
17   temp2 = (temp->tm_sec<<26)+(temp->tm_min<<20)+(temp->tm_hour<<15)+
18     (temp->tm_mday<<10)+(temp->tm_mon<<6);
19   temp3 = (temp->tm_year<<13)+(temp->tm_wday<<10)+(temp->tm_yday<<1)+
20     temp->tm_isdst;
21   temp2 ^= clock()^temp3;
22 
23   temp4 = (temp4*0xeeee)%0xffff;
24   temp2 ^= temp4<<16;
25   temp4 = (temp4*0xaeee)%0xffff;
26   temp2 ^= temp4;
27 
28   temp2 &= 0x7fffffff;
29 
30   return temp2;
31 }
32 
33 
34 #if 0
35 main()
36 {
37   printf("%u\n", make_new_seed());
38 }
39 #endif
40 
41 
42