Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:please_try_again:Fedora
conky
apcupsd.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File apcupsd.patch of Package conky
--- src/apcupsd.c.orig 2012-06-21 18:17:29.197659583 -0700 +++ src/apcupsd.c 2012-06-21 18:15:29.000000000 -0700 @@ -154,7 +154,7 @@ // // Conky update function for apcupsd data // -int update_apcupsd(void) { +void update_apcupsd(void) { int i; APCUPSD_S apc; @@ -164,37 +164,40 @@ memcpy(apc.items[i], "N/A", 4); // including \0 do { - struct addrinfo hints; - struct addrinfo *ai, *rp; - int res; + struct hostent* he = 0; + struct sockaddr_in addr; short sz = 0; - char portbuf[8]; +#ifdef HAVE_GETHOSTBYNAME_R + struct hostent he_mem; + int he_errno; + char hostbuff[2048]; +#endif // // connect to apcupsd daemon // - memset(&hints, 0, sizeof(struct addrinfo)); - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - hints.ai_flags = 0; - hints.ai_protocol = 0; - snprintf(portbuf, 8, "%d", info.apcupsd.port); - res = getaddrinfo(info.apcupsd.host, portbuf, &hints, &ai); - if (res != 0) { - NORM_ERR("APCUPSD getaddrinfo: %s", gai_strerror(res)); + sock = socket(AF_INET, SOCK_STREAM, 0); + if (sock < 0) { + perror("socket"); break; } - for (rp = ai; rp != NULL; rp = rp->ai_next) { - sock = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); - if (sock == -1) { - continue; - } - if (connect(sock, rp->ai_addr, rp->ai_addrlen) != -1) { - break; - } - close(sock); +#ifdef HAVE_GETHOSTBYNAME_R + if (gethostbyname_r(info.apcupsd.host, &he_mem, hostbuff, sizeof(hostbuff), &he, &he_errno) || !he ) { + NORM_ERR("APCUPSD gethostbyname_r: %s", hstrerror(h_errno)); + break; + } +#else /* HAVE_GETHOSTBYNAME_R */ + he = gethostbyname(info.apcupsd.host); + if (!he) { + herror("gethostbyname"); + break; } - freeaddrinfo(ai); - if (rp == NULL) { +#endif /* HAVE_GETHOSTBYNAME_R */ + + memset(&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_port = info.apcupsd.port; + memcpy(&addr.sin_addr, he->h_addr, he->h_length); + if (connect(sock, (struct sockaddr*)&addr, sizeof(struct sockaddr)) < 0) { // no error reporting, the daemon is probably not running break; } @@ -222,5 +225,5 @@ // "atomically" copy the data into working set // memcpy(info.apcupsd.items, apc.items, sizeof(info.apcupsd.items)); - return 0; + return; } --- src/apcupsd.h.orig 2012-06-21 18:17:35.885795442 -0700 +++ src/apcupsd.h 2012-06-21 18:13:55.000000000 -0700 @@ -49,6 +49,6 @@ } APCUPSD_S, *PAPCUPSD_S; /* Service routine for the conky main thread */ -int update_apcupsd(void); +void update_apcupsd(void); #endif /*APCUPSD_H_*/
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor