1 #include <sys/types.h>
2 #include <sys/socket.h>
3 #include <sys/un.h>
4 #include <unistd.h>
5 #include <string.h>
6 #include "strerr.h"
7 #include "byte.h"
8 #include "sgetopt.h"
9 
10 #define FATAL "socklog-check: fatal: "
11 #define WARNING "socklog-check: warning: "
12 #define INFO "socklog-check: info: "
13 
14 #define VERSION "$Id: socklog-check.c,v 1.2 2006/02/26 13:30:37 pape Exp $"
15 #define USAGE " [-v] [unix [address]]"
16 
17 const char *progname;
18 
usage()19 void usage() { strerr_die4x(1, "usage: ", progname, USAGE, "\n"); }
20 
21 int s;
22 struct sockaddr_un sa;
23 const char *address ="/dev/log";
24 unsigned int verbose =0;
25 
main(int argc,const char ** argv)26 int main(int argc, const char **argv) {
27   int opt;
28 
29   progname =*argv;
30 
31   while ((opt =getopt(argc, argv, "vV")) != opteof) {
32     switch(opt) {
33     case 'v': verbose =1; break;
34     case 'V': strerr_warn1(VERSION, 0);
35     case '?': usage();
36     }
37   }
38   argv +=optind;
39 
40   if (argv && *argv) {
41     if (**argv != 'u') usage();
42     if (++argv && *argv) address =*argv;
43   }
44   if ((s =socket(AF_UNIX, SOCK_DGRAM, 0)) == -1)
45     strerr_die4sys(111, FATAL, "unable to create socket: ", address, ": ");
46   byte_zero(&sa, sizeof(sa));
47   sa.sun_family =AF_UNIX;
48   strncpy(sa.sun_path, address, sizeof(sa.sun_path));
49   if (connect(s, (struct sockaddr *)&sa, sizeof(sa)) == -1) {
50     close(s);
51 #ifdef EDESTADDRREQ
52     if (errno == EDESTADDRREQ) errno =error_connrefused;
53 #endif
54     strerr_die4sys(111, WARNING, "unable to connect socket: ", address, ": ");
55   }
56   close(s);
57   if (verbose) strerr_die3x(0, INFO, "successfully connected to ", address);
58   return(0);
59 }
60