442
|
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
|
2367
|
57 main (int argc, char **argv)
|
442
|
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
|
1688
|
67 /* dump_id is declared as extern "C" in dumper.h */
|
|
68 fputs ("extern\n", f);
|
|
69 fputs ("#ifdef __cplusplus\n", f);
|
|
70 fputs ("\"C\"\n", f);
|
|
71 fputs ("#endif\n", f);
|
|
72 fputs ("unsigned int dump_id;\n", f);
|
460
|
73 fprintf (f, "unsigned int dump_id = %uU;\n", generate_dump_id ());
|
442
|
74
|
|
75 if ((fclose (f)) != 0)
|
|
76 {
|
|
77 perror ("close dump-id.c");
|
|
78 return EXIT_FAILURE;
|
|
79 }
|
|
80
|
|
81 return EXIT_SUCCESS;
|
|
82 }
|