diff options
author | Bill Nottingham <notting@redhat.com> | 2003-09-10 02:29:19 +0000 |
---|---|---|
committer | Bill Nottingham <notting@redhat.com> | 2003-09-10 02:29:19 +0000 |
commit | 1649de1d1cb193c160c8cc9d634753db2648dbf7 (patch) | |
tree | e5a768bf3c478ae85c1fb0bf13b6fd4f40f40b38 /src/genhostid.c | |
parent | d28947758e5836a8acf5b31c2f295e0efa435a8d (diff) | |
download | initscripts-1649de1d1cb193c160c8cc9d634753db2648dbf7.tar initscripts-1649de1d1cb193c160c8cc9d634753db2648dbf7.tar.gz initscripts-1649de1d1cb193c160c8cc9d634753db2648dbf7.tar.bz2 initscripts-1649de1d1cb193c160c8cc9d634753db2648dbf7.tar.xz initscripts-1649de1d1cb193c160c8cc9d634753db2648dbf7.zip |
add uli's hostid setting program
Diffstat (limited to 'src/genhostid.c')
-rw-r--r-- | src/genhostid.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/genhostid.c b/src/genhostid.c new file mode 100644 index 00000000..a56cad83 --- /dev/null +++ b/src/genhostid.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2003 Red Hat, Inc. + * + * This software may be freely redistributed under the terms of the GNU + * public license. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include <fcntl.h> +#include <stdlib.h> +#include <time.h> +#include <unistd.h> +#include <sys/stat.h> +int +main (void) +{ + struct stat st; + long int n; + if (stat ("/etc/hostid", &st) == 0 && S_ISREG (st.st_mode) + && st.st_size >= sizeof (n)) + return 0; + int fd = open ("/dev/random", O_RDONLY); + if (fd == -1 || read (fd, &n, sizeof (n)) != sizeof (n)) + { + srand48 ((long int) time (NULL) ^ (long int) getpid ()); + n = lrand48 (); + } + return sethostid (n); +} |