import -ko -b 1.1.3 XEmacs XEmacs-21_2 r21-2-35
[chise/xemacs-chise.git.1] / lib-src / make-dump-id.c
1 /* Generate a unique dump-id for use with the portable dumper.
2    Copyright (C) 2000 Olivier Galibert, Martin Buchholz
3
4 This file is part of XEmacs.
5
6 XEmacs is free software; you can redistribute it and/or modify it
7 under the terms of the GNU General Public License as published by the
8 Free Software Foundation; either version 2, or (at your option) any
9 later version.
10
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with XEmacs; see the file COPYING.  If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA.  */
20
21 #include <config.h>
22 #include <stdio.h>
23 #include <stdlib.h>
24 #include "../src/systime.h"
25
26 #ifdef WIN32_NATIVE
27 #include <sys/timeb.h>
28
29 /* Emulate gettimeofday (Ulrich Leodolter, 1/11/95).  */
30 void 
31 gettimeofday (struct timeval *tv, struct timezone *tz)
32 {
33   struct _timeb tb;
34   _ftime (&tb);
35
36   tv->tv_sec = tb.time;
37   tv->tv_usec = tb.millitm * 1000L;
38   if (tz) 
39     {
40       tz->tz_minuteswest = tb.timezone; /* minutes west of Greenwich  */
41       tz->tz_dsttime = tb.dstflag;      /* type of dst correction  */
42     }
43 }
44 #endif
45
46 /* Generates an (extremely) pseudo random number for the dump-id */
47 static unsigned int
48 generate_dump_id (void)
49 {
50   EMACS_TIME thyme;
51   EMACS_GET_TIME (thyme);
52
53   return (unsigned int) (EMACS_SECS (thyme) ^ EMACS_USECS (thyme));
54 }
55
56 int
57 main (int argc, char *argv[])
58 {
59   FILE *f;
60
61   if ((f = fopen ("dump-id.c", "w")) == NULL)
62     {
63       perror ("open dump-id.c");
64       return EXIT_FAILURE;
65     }
66
67   fprintf (f,
68            "#include <dump-id.h>\n"
69            "unsigned int dump_id = %uU;\n",
70            generate_dump_id ());
71
72   if ((fclose (f)) != 0)
73     {
74       perror ("close dump-id.c");
75       return EXIT_FAILURE;
76     }
77
78   return EXIT_SUCCESS;
79 }