Return to BSD News archive
#! rnews 3016 bsd Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.cs.su.oz.au!inferno.mpx.com.au!msnews.microsoft.com!tank.news.pipex.net!pipex!news.mathworks.com!newsfeed.internetmci.com!tezcat.com!news.ner.bbnplanet.net!news3.near.net!news-server.moat.platsol.com!orchard.la.platsol.com!news From: "J.T. Anderson" <jta@locus.com> Newsgroups: comp.unix.bsd,comp.dcom.isdn,comp.protocols.tcp-ip,microsoft.public.win95.networking,comp.os.ms-windows.networking.win95 Subject: Re: syslogd for Win95 Date: Mon, 03 Jun 1996 18:59:08 -0700 Organization: Platinum Solutions, Inc. Lines: 90 Message-ID: <31B3986C.6E79@locus.com> References: <31B1A351.7E73@ix.netcom.com> NNTP-Posting-Host: tank.pipex.net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 2.0 (Win95; I) To: "Jeffrey J. Quisenberry" <jeffq@ix.netcom.com> Xref: euryale.cc.adfa.oz.au comp.unix.bsd:16794 comp.dcom.isdn:34081 comp.protocols.tcp-ip:45191 comp.os.ms-windows.networking.win95:7799 Compile this as a Win32 console application: #include <windows.h> #include <winsock.h> #include <stdio.h> void SockError(char const *fun) { printf("%s: error %d\n", fun, WSAGetLastError()); WSACleanup(); exit(1); } BOOL WINAPI ControlHandler(DWORD dwSignal) { printf("Control handler %d\n", dwSignal); switch (dwSignal) { case CTRL_C_EVENT: case CTRL_BREAK_EVENT: case CTRL_CLOSE_EVENT: case CTRL_LOGOFF_EVENT: case CTRL_SHUTDOWN_EVENT: WSACleanup(); exit(0); break; } return FALSE; } int main(int ac, char *av[]) { WSADATA wsadata; struct servent *pServ; SOCKADDR_IN sin; SOCKET s; int err; int cnt; int fromlen; SOCKADDR_IN from; char buf[2048]; char now[128]; FILE *log = NULL; err = WSAStartup(MAKEWORD(1,1), &wsadata); if (err != 0) { printf("WSAStartup: error %d\n", err); exit(1); } SetConsoleCtrlHandler(ControlHandler, TRUE); if (ac == 2) { log = fopen(av[1], "w"); } memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; pServ = getservbyname("syslog", "udp"); if (pServ == NULL) SockError("getservbyname"); sin.sin_port = htons(pServ->s_port); s = socket(AF_INET, SOCK_DGRAM, 0); if (s == INVALID_SOCKET) SockError("socket"); if (bind(s, (struct sockaddr *)&sin, sizeof(sin)) == SOCKET_ERROR) SockError("bind"); for (;;) { fromlen = sizeof(from); cnt = recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr *)&from, &fromlen); buf[cnt] = 0; _strtime(now); printf("%s %s\n", now, buf); if (log) { fprintf(log, "%s %s\n", now, buf); fflush(log); } } closesocket(s); WSACleanup(); } -- J.T. Anderson PLATINUM technology, Los Angeles Laboratory jtanderson@platinum.com