diff -urN ./plugins/check_tcp.c ../foo/plugins/check_tcp.c --- ./plugins/check_tcp.c 2005-01-05 21:53:20.000000000 +0100 +++ ../foo/plugins/check_tcp.c 2005-02-18 16:10:17.000000000 +0100 @@ -114,138 +114,105 @@ bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); - if (strstr (argv[0], "check_udp")) { - progname = strdup ("check_udp"); - SERVICE = strdup ("UDP"); - SEND = NULL; - EXPECT = NULL; - QUIT = NULL; + progname = strrchr(argv[0], '/'); + if(progname && strlen(progname) > 1) progname++; + else progname = argv[0]; + + /* determine service, if possible */ + SERVICE = strrchr(progname, '_'); + if(SERVICE && strlen(SERVICE) > 1) { + /* get a unique pointer and upcase it */ + SERVICE++; + SERVICE = strdup(SERVICE); + for(i = 0; i < strlen(SERVICE); i++) + SERVICE[i] = toupper(SERVICE[i]); + } + else SERVICE = "UNKNOWN SERVICE"; + + PROTOCOL = TCP_PROTOCOL; /* majority, so default */ + + if (!strncmp(SERVICE, "UDP", 3)) { /* strncmp to match check_udp2 also */ PROTOCOL = UDP_PROTOCOL; - PORT = 0; } - else if (strstr (argv[0], "check_tcp")) { - progname = strdup ("check_tcp"); - SERVICE = strdup ("TCP"); - SEND = NULL; - EXPECT = NULL; - QUIT = NULL; - PROTOCOL = TCP_PROTOCOL; - PORT = 0; - } - else if (strstr (argv[0], "check_ftp")) { - progname = strdup ("check_ftp"); - SERVICE = strdup ("FTP"); - SEND = NULL; - EXPECT = strdup ("220"); - QUIT = strdup ("QUIT\r\n"); - PROTOCOL = TCP_PROTOCOL; + else if (!strcmp (SERVICE, "FTP")) { + EXPECT = "220"; + QUIT = "QUIT\r\n"; PORT = 21; } - else if (strstr (argv[0], "check_smtp")) { - progname = strdup ("check_smtp"); - SERVICE = strdup ("SMTP"); - SEND = NULL; - EXPECT = strdup ("220"); - QUIT = strdup ("QUIT\r\n"); - PROTOCOL = TCP_PROTOCOL; + else if (!strcmp (SERVICE, "SMTP")) { + EXPECT = "220"; + QUIT = "QUIT\r\n"; PORT = 25; } - else if (strstr (argv[0], "check_pop")) { - progname = strdup ("check_pop"); - SERVICE = strdup ("POP"); - SEND = NULL; - EXPECT = strdup ("+OK"); - QUIT = strdup ("QUIT\r\n"); - PROTOCOL = TCP_PROTOCOL; + else if (!strcmp (SERVICE, "POP")) { PORT = 110; } - else if (strstr (argv[0], "check_imap")) { - progname = strdup ("check_imap"); - SERVICE = strdup ("IMAP"); - SEND = NULL; - EXPECT = strdup ("* OK"); - QUIT = strdup ("a1 LOGOUT\r\n"); - PROTOCOL = TCP_PROTOCOL; + else if (!strcmp (SERVICE, "IMAP")) { + SERVICE = "IMAP"; PORT = 143; } #ifdef HAVE_SSL - else if (strstr(argv[0],"check_simap")) { - progname = strdup ("check_simap"); - SERVICE = strdup ("SIMAP"); - SEND=NULL; - EXPECT = strdup ("* OK"); - QUIT = strdup ("a1 LOGOUT\r\n"); - PROTOCOL=TCP_PROTOCOL; + else if (!strcmp(SERVICE,"SIMAP")) { + SERVICE = "SIMAP"; use_ssl=TRUE; PORT=993; } - else if (strstr(argv[0],"check_spop")) { - progname = strdup ("check_spop"); - SERVICE = strdup ("SPOP"); - SEND=NULL; - EXPECT = strdup ("+OK"); - QUIT = strdup ("QUIT\r\n"); - PROTOCOL=TCP_PROTOCOL; + else if (!strcmp(SERVICE,"SPOP")) { use_ssl=TRUE; PORT=995; } - else if (strstr(argv[0],"check_jabber")) { - progname = strdup("check_jabber"); - SERVICE = strdup("JABBER"); - SEND = strdup("\n"); - EXPECT = strdup("\n"); - PROTOCOL=TCP_PROTOCOL; + else if (!strcmp(SERVICE, "JABBER")) { + SEND = "\n"; + EXPECT = "