#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>

int main(){
  unsigned char uuid[16];
  int f;
  int i;

  f = open("/dev/urandom", O_RDONLY);
  if (f>=0){
    read(f, uuid, 16);
  }

  srand(getpid() ^ time(NULL));

  for (i=0; i<16; i++){
    uuid[i] ^= (int) (256.0 * (rand() / (RAND_MAX + 1.0)));
  }
  
  uuid[6] &= 0x0f;
  uuid[6] |= 0x40;

  uuid[8] &= 0x3f;
  uuid[8] |= 0x80;

  printf("%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-"
         "%02x%02x%02x%02x%02x%02x\n",
         uuid[0], uuid[1], uuid[2], uuid[3],
         uuid[4], uuid[5], uuid[6], uuid[7],
         uuid[8], uuid[9], uuid[10], uuid[11],
         uuid[12], uuid[13], uuid[14], uuid[15]);
  
}
