cvs diff -u pg_autovacuum.c (in directory C:\Documents and Settings\dpage\My Documents\CVS\pgsql\contrib\pg_autovacuum) Index: pg_autovacuum.c =================================================================== RCS file: /projects/cvsroot/pgsql/contrib/pg_autovacuum/pg_autovacuum.c,v retrieving revision 1.27 diff -u -r1.27 pg_autovacuum.c --- pg_autovacuum.c 2 Dec 2004 22:48:10 -0000 1.27 +++ pg_autovacuum.c 21 Jan 2005 16:01:29 -0000 @@ -22,11 +22,10 @@ #include "pg_autovacuum.h" #ifdef WIN32 -unsigned int sleep(); - SERVICE_STATUS ServiceStatus; SERVICE_STATUS_HANDLE hStatus; int appMode = 0; +char deps[255]; #endif /* define atooid */ @@ -1073,6 +1072,7 @@ #ifndef WIN32 args->daemonize = 0; #else + args->service_dependencies = 0; args->install_as_service = 0; args->remove_as_service = 0; args->service_user = 0; @@ -1166,7 +1166,9 @@ exit(0); #ifdef WIN32 case 'E': - args->service_dependencies = optarg; + ZeroMemory(deps, sizeof(deps)); + snprintf(deps, sizeof(deps) - 2, "%s", optarg); + args->service_dependencies = (char *)deps; break; case 'I': args->install_as_service++; @@ -1359,7 +1361,7 @@ /* Register with the Service Control Manager */ static int -InstallService() +InstallService(void) { SC_HANDLE schService = NULL; SC_HANDLE schSCManager = NULL; @@ -1471,7 +1473,7 @@ /* Unregister from the Service Control Manager */ static int -RemoveService() +RemoveService(void) { SC_HANDLE schService = NULL; SC_HANDLE schSCManager = NULL; @@ -1699,7 +1701,7 @@ fflush(LOGOUTPUT); } - sleep(sleep_secs); /* Larger Pause between outer loops */ + pg_usleep(sleep_secs * 1000000); /* Larger Pause between outer loops */ gettimeofday(&then, 0); /* Reset time counter */ @@ -1753,15 +1755,12 @@ if (InstallService() != 0) { FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) & lpMsgBuf, 0, NULL); - sprintf(logbuffer, "%s", (char *) lpMsgBuf); - log_entry(logbuffer, LVL_ERROR); - fflush(LOGOUTPUT); + fprintf(stderr, "Error: %s\n", (char *) lpMsgBuf); exit(-1); } else { - log_entry("Successfully installed Windows service", LVL_INFO); - fflush(LOGOUTPUT); + fprintf(stderr, "Successfully installed pg_autovacuum as a service.\n"); exit(0); } } @@ -1772,15 +1771,12 @@ if (RemoveService() != 0) { FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) & lpMsgBuf, 0, NULL); - sprintf(logbuffer, "%s", (char *) lpMsgBuf); - log_entry(logbuffer, LVL_ERROR); - fflush(LOGOUTPUT); + fprintf(stderr, "Error: %s\n", (char *) lpMsgBuf); exit(-1); } else { - log_entry("Successfully removed Windows service", LVL_INFO); - fflush(LOGOUTPUT); + fprintf(stderr, "Successfully removed pg_autovacuum as a service.\n"); exit(0); } }