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
+ − 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
460
+ − 67 fprintf (f, "unsigned int dump_id = %uU;\n", generate_dump_id ());
442
+ − 68
+ − 69 if ((fclose (f)) != 0)
+ − 70 {
+ − 71 perror ("close dump-id.c");
+ − 72 return EXIT_FAILURE;
+ − 73 }
+ − 74
+ − 75 return EXIT_SUCCESS;
+ − 76 }