137 const char *Host = 0;
147 if ((sbP = inQ)) inQ = sbP->Next;
152 else if (theAddr.
Set(&(sbP->From.Addr))) Host = 0;
153 else Host = theAddr.
Name();
154 wLen = xP->
Format(Host, sbP->Data, obuff);
158 *(bP + sbP->Dlen) =
'\n';
163 {
do {rc =
write(STDOUT_FILENO, bP, wLen);}
164 while(rc < 0 && errno == EINTR);
165 wLen -= rc; bP += rc;
168 myMutex.Lock(); sbP->Next = Free; Free = sbP; myMutex.UnLock();
209int main(
int argc,
char *argv[])
212 extern int opterr,
optopt;
220 int Port = 0, retc, udpFD;
227 if (argc > 1 &&
'-' == *argv[1])
228 while ((c = getopt(argc,argv,
"df:p:s")) && ((
unsigned char)c != 0xff))
231 case 'd':
Debug =
true;
236 else {
Say.
Emsg(
":",
"Invalid format - ", optarg);
Usage(1);}
240 case 'p':
if (!(Port = atoi(optarg)))
241 {
Say.
Emsg(
":",
"Invalid port number - ", optarg);
Usage(1);}
245 default: sprintf(buff,
"'%c'",
optopt);
246 if (c ==
':')
Say.
Emsg(
":", buff,
"value not specified.");
247 else Say.
Emsg(0, buff,
"option is invalid");
255 if (!Port) {
Say.
Emsg(
":",
"Port has not been specified.");
Usage(1);}
259 signal(SIGPIPE, SIG_IGN);
261 sigaddset(&myset, SIGPIPE);
262 sigaddset(&myset, SIGCHLD);
263 pthread_sigmask(SIG_BLOCK, &myset, NULL);
274 udpFD = mySocket.
Detach();
284 {
Say.
Emsg(
":", retc,
"create output thread"); exit(4);}
288 fromLen =
sizeof(sbP->
From);
291 retc = recvfrom(udpFD, sbP->
Data,
sizeof(sbP->
Data), 0,
293 if (retc < 0) {
Say.
Emsg(
":", retc,
"recv udp message"); exit(8);}
int main(int argc, char *argv[])