diff options
Diffstat (limited to 'fdisk/fdisk.c')
-rw-r--r-- | fdisk/fdisk.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fdisk/fdisk.c b/fdisk/fdisk.c index cc71c5c49..ede41b3e6 100644 --- a/fdisk/fdisk.c +++ b/fdisk/fdisk.c @@ -18,6 +18,7 @@ #include <errno.h> #include <getopt.h> #include <sys/stat.h> +#include <sys/time.h> #include <time.h> #include "nls.h" @@ -148,6 +149,7 @@ get_random_id(void) { int fd; unsigned int v; ssize_t rv = -1; + struct timeval tv; fd = open("/dev/urandom", O_RDONLY); if (fd >= 0) { @@ -159,7 +161,8 @@ get_random_id(void) { return v; /* Fallback: sucks, but better than nothing */ - return (unsigned int)(getpid() + time(NULL)); + gettimeofday(&tv, NULL); + return (unsigned int)(tv.tv_sec + (tv.tv_usec << 12) + getpid()); } /* normally O_RDWR, -l option gives O_RDONLY */ |