Index: head/sysutils/monitord/Makefile =================================================================== --- head/sysutils/monitord/Makefile (revision 556723) +++ head/sysutils/monitord/Makefile (revision 556724) @@ -1,22 +1,22 @@ # Created by: walt # $FreeBSD$ PORTNAME= monitord PORTVERSION= 0.4.1 -PORTREVISION= 5 +PORTREVISION= 6 CATEGORIES= sysutils MASTER_SITES= http://lissyara.su/distfiles/ MAINTAINER= ports@FreeBSD.org COMMENT= Service that restarts other standalone services LICENSE= BSD4CLAUSE LICENSE_FILE= ${WRKSRC}/COPYRIGHT USE_RC_SUBR= monitord post-install: ${INSTALL_DATA} ${WRKSRC}/monitord.conf.sample \ ${STAGEDIR}${PREFIX}/etc/monitord.conf.sample .include Index: head/sysutils/monitord/files/patch-monitord.c =================================================================== --- head/sysutils/monitord/files/patch-monitord.c (revision 556723) +++ head/sysutils/monitord/files/patch-monitord.c (revision 556724) @@ -1,127 +1,143 @@ --- monitord.c.orig 2003-01-16 21:39:44 UTC +++ monitord.c @@ -30,6 +30,8 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "monitord.h" #include "config.h" +static int HUP; + int main (int argc, char *arga[]) { int i, num, interval; @@ -69,7 +71,7 @@ int main (int argc, char *arga[]) { // init the *file[]; for ( i = 0; i < _MAXLINE; i++ ) { file[i] = (char *) malloc ( (size_t) sizeof(char) * _BUFSIZE ); - bzero ( file[i], sizeof (file[i]) ); + bzero ( file[i], sizeof (*file[i]) ); } // file = (char **) calloc (1000, (size_t) sizeof(char) * _BUFSIZE ); @@ -85,8 +87,8 @@ int main (int argc, char *arga[]) { setsid (); break; } - default: - exit(1); + default: // The parent exits + exit(0); } /* Read the configuration file, saving it in *file[] and return the number of lines @@ -119,7 +121,7 @@ int read_conf ( char ***file, char *filename ) { char *buf; buf = (char *) malloc ( (size_t) _BUFSIZE ); // init & zero the buffer - bzero (buf, sizeof (buf) ); + bzero (buf, sizeof (*buf) ); line_count = 0; @@ -146,7 +148,7 @@ int read_conf ( char ***file, char *filename ) { strncpy ( (char *) file[line_count], buf, _BUFSIZE ); // realloc ( & file[1], (size_t) sizeof(char) * _BUFSIZE * (line_count + 1) ); // zero out the buffer so we don't have it hold old garbage - bzero (buf, sizeof (buf)); + bzero (buf, sizeof (*buf)); line_count++; // Advance the counter -@@ -197,9 +199,9 @@ int loop ( char **file, char *filename, int max_proc, +@@ -179,7 +181,7 @@ int loop ( char **file, char *filename, int max_proc, + char value[_BUFSIZE / 6]; /* generic value from config file */ + char email[_BUFSIZE / 6]; /* admin's email */ + char eserver[_BUFSIZE / 6]; /* admin's email server */ +- char delay[max_proc]; /* array for tracking delay times for processes */ ++ signed char delay[max_proc]; /* array for tracking delay times for processes */ + + char cmdline[_BUFSIZE]; /* entire process line from config file */ + char tmppath[_BUFSIZE]; /* temporary copy of script_path */ +@@ -197,11 +199,13 @@ int loop ( char **file, char *filename, int max_proc, buf = (char *) malloc ( (size_t) _BUFSIZE ); // init the all purpose buffer buf2 = (char *) malloc ( (size_t) _BUFSIZE ); // init another all purpose buffer token = (char *) malloc ( (size_t) _BUFSIZE ); // init the token buffer - bzero (buf, sizeof (buf) ); - bzero (buf2, sizeof (buf) ); - bzero (token, sizeof (token) ); + bzero (buf, sizeof (*buf) ); + bzero (buf2, sizeof (*buf) ); + bzero (token, sizeof (*token) ); FOUND = 0; ++ ++ memset(delay, 0, max_proc*sizeof(char)); -@@ -290,8 +292,8 @@ int loop ( char **file, char *filename, int max_proc, + // Main loop + while(1) { +@@ -290,8 +294,8 @@ int loop ( char **file, char *filename, int max_proc, bzero (param, sizeof(param)); while ((token = strtok(NULL, " \t"))) { - strncat (param, " ", sizeof(param)); - strncat (param, token, sizeof(param)); + strncat (param, " ", sizeof(*param)); + strncat (param, token, sizeof(*param)); } /* Each line has a \n at the end which must be removed -@@ -355,7 +357,7 @@ int loop ( char **file, char *filename, int max_proc, +@@ -355,18 +359,18 @@ int loop ( char **file, char *filename, int max_proc, // printf("Couldn't open %s\n", buf); } // Set the FOUND flag if the process we're checking for is found - if (!strncmp (buf, proc, sizeof(buf))) FOUND = TRUE; -+ if (!strncmp (buf, proc, sizeof(*buf))) FOUND = TRUE; ++ if (!strncmp (buf, proc, MIN(strlen(buf),strlen(proc)))) FOUND = TRUE; } closedir (dirp); // Close the /proc directory -@@ -365,8 +367,8 @@ int loop ( char **file, char *filename, int max_proc, + // If the process wasn't found in the process listing then start it +- if (!FOUND && options.isauto && !delay[i]) { ++ if (!FOUND && options.isauto && delay[i] < interval) { + /* Email admin that the service has died, if the "mail" option has been set in the options */ if (options.alert) { - bzero (buf, sizeof(buf)); - bzero (buf2, sizeof(buf2)); + bzero (buf, sizeof(*buf)); + bzero (buf2, sizeof(*buf2)); sprintf (buf, "[%s] Service \"%s\" has died\n", getdate(), proc); sprintf (buf2, "(monitord) SYSTEM ALERT, \"%s\" has died\n", proc); mail (email, eserver, buf2, buf); -@@ -405,7 +407,7 @@ int loop ( char **file, char *filename, int max_proc, +@@ -405,7 +409,7 @@ int loop ( char **file, char *filename, int max_proc, /* Email the admin that the service has been restarted if "mail" option is set */ if (options.alert) { - bzero (buf, sizeof(buf)); + bzero (buf, sizeof(*buf)); sprintf (buf, "[%s] restarted \"%s\" using \"%s %s\"\n", getdate(), proc, script_path, param); sprintf (buf2, "(monitord) \"%s\" restarted\n", proc); mail (email, eserver, buf2, buf); -@@ -418,7 +420,7 @@ int loop ( char **file, char *filename, int max_proc, +@@ -418,7 +422,7 @@ int loop ( char **file, char *filename, int max_proc, been able to be restarted if "mail" option is set */ if (options.alert) { - bzero (buf, sizeof(buf)); + bzero (buf, sizeof(*buf)); sprintf (buf, "[%s] unable to restart \"%s\"\n", getdate(), proc); sprintf (buf2, "(monitord) SYSTEM ALERT: \"%s\" unable to restart\n", proc); mail (email, eserver, buf2, buf); -@@ -454,13 +456,13 @@ char *getdate () { +@@ -454,13 +458,13 @@ char *getdate () { struct timeval *tp; struct timezone *tzp; - const time_t *time; + time_t *time; char *buf; buf = (char *) malloc ( (size_t) _BUFSIZE ); // init the time buffer tp = (struct timeval *) malloc ( (size_t) sizeof (struct timeval) ); // init the time buffer tzp = (struct timezone *) malloc ( (size_t) sizeof (struct timezone) ); // init the timezone buffer - time = (const time_t *) malloc ( (size_t) sizeof (time_t) ); // init the timezone buffer + time = (time_t *) malloc ( (size_t) sizeof (time_t) ); // init the timezone buffer /* Get time of day in seconds since Epoch */ gettimeofday (tp, tzp); Index: head/sysutils/monitord/files/patch-monitord.h =================================================================== --- head/sysutils/monitord/files/patch-monitord.h (revision 556723) +++ head/sysutils/monitord/files/patch-monitord.h (revision 556724) @@ -1,11 +1,12 @@ --- monitord.h.orig 2003-01-16 18:22:54 UTC +++ monitord.h -@@ -49,8 +49,6 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +@@ -48,8 +48,7 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + #include #include #include - --int HUP; // Variable used to hold SIGHUP state - +-int HUP; // Variable used to hold SIGHUP state ++#include + typedef enum bool_enum_t { FALSE, - TRUE,