annotate lib-src/make-dump-id.c @ 406:b8cc9ab3f761 r21-2-33

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