diff options
| author | Niklas | 2011-07-28 16:00:49 +0200 |
|---|---|---|
| committer | Niklas | 2011-07-28 16:00:49 +0200 |
| commit | 87dc3eae8eeb774aecf005465ddd9eecdd829b8a (patch) | |
| tree | 99f798a021e94540b82973bafe886139d3be4952 /workspace/customdhcpcd | |
| parent | log messages are delivered to qt app. (diff) | |
| download | fbgui-87dc3eae8eeb774aecf005465ddd9eecdd829b8a.tar.gz fbgui-87dc3eae8eeb774aecf005465ddd9eecdd829b8a.tar.xz fbgui-87dc3eae8eeb774aecf005465ddd9eecdd829b8a.zip | |
better version of the logwriter.c and started to devide gui and logic
Diffstat (limited to 'workspace/customdhcpcd')
| -rw-r--r-- | workspace/customdhcpcd/src/dhcpcd.c | 2 | ||||
| -rw-r--r-- | workspace/customdhcpcd/src/logwriter.c | 77 | ||||
| -rw-r--r-- | workspace/customdhcpcd/src/logwriter.h | 15 |
3 files changed, 55 insertions, 39 deletions
diff --git a/workspace/customdhcpcd/src/dhcpcd.c b/workspace/customdhcpcd/src/dhcpcd.c index 550c25a..43ce3ed 100644 --- a/workspace/customdhcpcd/src/dhcpcd.c +++ b/workspace/customdhcpcd/src/dhcpcd.c @@ -646,7 +646,7 @@ int main (int argc, char **argv) /* Massage our filters per platform */ setup_packet_filters (); - /*dhcp_run : defined in client.c*/ + /* dhcp_run : defined in client.c */ if (dhcp_run (options, &pidfd) == 0) retval = EXIT_SUCCESS; diff --git a/workspace/customdhcpcd/src/logwriter.c b/workspace/customdhcpcd/src/logwriter.c index 8b6d6dc..be8ee26 100644 --- a/workspace/customdhcpcd/src/logwriter.c +++ b/workspace/customdhcpcd/src/logwriter.c @@ -11,23 +11,24 @@ #include "common.h" #include "dhcp.h" +#include "dhcpcd.h" #include "logger.h" #include "logwriter.h" #include "status.h" /*sockets for the logger and the qt-reader */ int sockfd, ns; -int retval; -char *socketName; -char *interfaceName; +int retval = -1; +char socketName[QTSOCKETADDRESSLENGTH]; +char interfaceName[IF_NAMESIZE]; char mesg[256] = {0}; -void setSocketName(char * sn) { - socketName = sn; +void setSocketName(const char * sn) { + snprintf(socketName, sizeof(socketName), "%s", sn); } void setInterfaceName(const char * in){ - interfaceName = in; + snprintf(interfaceName, sizeof(interfaceName), "%s", in); } int initQtLoggerSocket() { @@ -74,62 +75,66 @@ void logToQt(char * status, char * substatus, char * msg) { */ -void sendToQt(char *msg) { - int n = write(sockfd, msg, strlen(msg)); +void sendToQt(log_msg * msg) { + int n = -1; + const char *tpl = "%s;%d;%d;%s\n"; + char *outbuf; + size_t outbuf_size = + sizeof(char)*4 + // ";" *3 + newline + sizeof(int)*2 + // status, substatus + sizeof(msg->device) + // devicename + sizeof(msg->msg); // msg + outbuf = malloc(outbuf_size); + memset(outbuf,0,outbuf_size); + snprintf(outbuf, sizeof(char)*3 + sizeof(int)*2 + sizeof(msg->device) + sizeof(msg->msg), tpl, msg->device, msg->status, msg->substatus, msg->msg); + if (outbuf != NULL){ + n = write(sockfd, outbuf, outbuf_size); + } + free(outbuf); + syslog (LOG_INFO, "[fbgui] INFO writing to socket: [%d:%d] %s (%s)", msg->status, msg->substatus, msg->msg, msg->device); // fflush(sockfd); - if (n < 0) - syslog (LOG_ERR, sprintf("[fbgui] ERROR writing to socket: %s", msg)); + if (n < 0) { + syslog (LOG_ERR, "[fbgui] ERROR writing to socket: [%d:%d] %s (%s)", msg->status, msg->substatus, msg->msg, msg->device); // fprintf(stdout, "ERROR writing to socket: %s", msg); + } } void logToQt(int status, int substatus, const char * msg) { if (retval >= 0) { - char * st = (char *) malloc(sizeof(int) * 4 + 1); - char * sst = (char *) malloc(sizeof(int) * 4 + 1); - sprintf(st, "%d", status); - sprintf(sst, "%d", substatus); - char * m = (char *) malloc(strlen(interfaceName) + strlen(st) + strlen( - sst) + strlen(msg) + 4); - strcpy(m, interfaceName); - strcat(m, ";"); - strcat(m, st); - strcat(m, ";"); - strcat(m, sst); - strcat(m, ";"); - strcat(m, msg); - sendToQt(m); - - free(st); - free(sst); - free(m); + log_msg lm; + lm.status = status; + lm.substatus = substatus; + snprintf(lm.msg, sizeof(lm.msg), "%s", msg); + snprintf(lm.device, sizeof(lm.device), "%s", interfaceName); + sendToQt(&lm); } } void logSendToQt(int type) { switch(type) { case DHCP_DISCOVER: - logToQt(LOG_INFO, DHCP_DISCOVER, ""); + logToQt(LOG_INFO, DHCP_DISCOVER, "send discover"); break; case DHCP_OFFER: - logToQt(LOG_INFO, DHCP_OFFER, ""); + logToQt(LOG_INFO, DHCP_OFFER, "send offer"); break; case DHCP_REQUEST: - logToQt(LOG_INFO, DHCP_REQUEST, ""); + logToQt(LOG_INFO, DHCP_REQUEST, "send request"); break; case DHCP_DECLINE: - logToQt(LOG_INFO, DHCP_DECLINE, ""); + logToQt(LOG_INFO, DHCP_DECLINE, "send decline"); break; case DHCP_ACK: - logToQt(LOG_INFO, DHCP_ACK, ""); + logToQt(LOG_INFO, DHCP_ACK, "send ack"); break; case DHCP_NAK: - logToQt(LOG_INFO, DHCP_NAK, ""); + logToQt(LOG_INFO, DHCP_NAK, "send nak"); break; case DHCP_RELEASE: - logToQt(LOG_INFO, DHCP_RELEASE, ""); + logToQt(LOG_INFO, DHCP_RELEASE, "send release"); break; case DHCP_INFORM: - logToQt(LOG_INFO, DHCP_INFORM, ""); + logToQt(LOG_INFO, DHCP_INFORM, "send inform"); break; default : break; diff --git a/workspace/customdhcpcd/src/logwriter.h b/workspace/customdhcpcd/src/logwriter.h index 84d409d..1a755fc 100644 --- a/workspace/customdhcpcd/src/logwriter.h +++ b/workspace/customdhcpcd/src/logwriter.h @@ -8,10 +8,22 @@ #ifndef LOGWRITER_H_ #define LOGWRITER_H_ +#include "dhcpcd.h" + +#define LOG_MSG_SIZE 1024 + +typedef struct _log_msg log_msg; +struct _log_msg { + int status; + int substatus; + char device[IF_NAMESIZE]; + char msg[LOG_MSG_SIZE]; +}; + /** * new functions for communicating with Qt */ -void setSocketName(char * sn); +void setSocketName(const char * sn); void setInterfaceName(const char * in); int initQtLoggerSocket (); void closeQtLoggerSocket (); @@ -22,5 +34,4 @@ void logLoggerToQt(int level, const char *fmt, va_list args); //void logToQt(char * status, char * substatus, char * msg); - #endif /* LOGWRITER_H_ */ |
