#include <stdio.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
#include <windows.h>

// Written by Greg, R.Gregory@liverpool.ac.uk
// Would welcome any comments, and would also like to know
// how to activate/change the time delay using hotkeys.

// gcc -DWIN32 -O2 adtime.c -o adtime -lws2_32 -mno-cygwin


int main(int argc, char **argv)
 {
   WSADATA wsaData;
   WSAStartup(0x0101, &wsaData);

   char buf[1024];

   int delta=10;
   if( argc==2 && atoi(argv[1])>1 && atoi(argv[1])<100000 )
      delta=atoi(argv[1]);
   else
    {
      printf("Increment?\n");
      fgets(buf,100,stdin);
      if( atoi(buf)>1 && atoi(buf)<100000 )
         delta=atoi(buf);
    }

   long long off=((long long)delta)*10000000;

   while(1){

      SYSTEMTIME st;
      FILETIME ft;
      LARGE_INTEGER li;

      GetLocalTime(&st);

      SystemTimeToFileTime(&st,&ft);

      li.LowPart=ft.dwLowDateTime;
      li.HighPart=ft.dwHighDateTime;

      li.QuadPart+=off;

      ft.dwLowDateTime=li.LowPart;
      ft.dwHighDateTime=li.HighPart;

      FileTimeToSystemTime(&ft,&st);

      //printf("%ld.%ld\n",ft.dwHighDateTime,ft.dwLowDateTime);
      printf("."); fflush(stdout);

      SetLocalTime(&st);

      Sleep(1000);
    }
   
   WSACleanup();
 }
