[pisa-src] r1239 - trunk/community-operator/co_client.c

  • From: Jan Marten <jan.marten@xxxxxxxxxxxxxx>
  • To: pisa-src@xxxxxxxxxxxxx
  • Date: Mon, 19 Oct 2009 21:51:53 +0200

Author: marten
Date: Mon Oct 19 21:51:52 2009
New Revision: 1239

Log:
Moved initialization to own method

Modified:
   trunk/community-operator/co_client.c

Modified: trunk/community-operator/co_client.c
==============================================================================
--- trunk/community-operator/co_client.c        Mon Oct 19 21:16:39 2009        
(r1238)
+++ trunk/community-operator/co_client.c        Mon Oct 19 21:51:52 2009        
(r1239)
@@ -17,12 +17,23 @@
 #include <string.h>
 #include <unistd.h>
 
+#define PATH_BUFFER 1000
+
+static void co_client_init(void);
 static int create_client_socket(struct sockaddr_in6 *srv_addr);
 static void print_deny_reason(int reason);
 static int receive_certificate(char **cert);
 static int request_cert(void);
 static int write_cert_file(char *cert, const char *filename);
 
+typedef struct co_client_conf {
+       int retries;
+       char srv_hit[INET6_ADDRSTRLEN];
+       int port;
+       char cert_filename[PATH_BUFFER];
+} co_client_conf;
+
+co_client_conf co_client_config;
 static int sock;
 
 /**
@@ -179,30 +190,41 @@
        return result;
 }
 
-int main(int argc, char **argv)
+/**
+ * Reads the settings from the config file.
+ */
+static void co_client_init(void)
 {
-       struct sockaddr_in6 srv_addr = { 0 };
-       char *cert = NULL;
-       char srv_hit[1000]; /* @todo */
-       int count, port, retries = 3;
-
        pisa_cfg_setup_file("co_client.cfg");
-       pisa_cfg_get_string_value("hit", srv_hit, 1000);
-       pisa_cfg_get_int_value("port", &port);
-       pisa_cfg_get_int_value("retry", &retries);
+
+       pisa_cfg_get_string_value("hit", co_client_config.srv_hit, 
INET6_ADDRSTRLEN);
+       pisa_cfg_get_int_value("port", &co_client_config.port);
+       pisa_cfg_get_int_value("retry", &co_client_config.retries);
+       pisa_cfg_get_string_value("filename", co_client_config.cert_filename,
+                       PATH_BUFFER);
 
        /* sanity check configuration values */
-       if (retries < 1)
-               retries = 1;
-       if (retries > 100) /* @todo find reasonable maximum */
-               retries = 100;
+       if (co_client_config.retries < 1)
+               co_client_config.retries = 1;
+       if (co_client_config.retries > 100) /* @todo find reasonable maximum */
+               co_client_config.retries = 100;
+
+}
+
+int main(int argc, char **argv)
+{
+       co_client_init();
+
+       struct sockaddr_in6 srv_addr = { 0 };
+       char *cert = NULL;
+       int count;
 
        srv_addr.sin6_family = AF_INET6;
-       inet_pton(PF_INET6, srv_hit, &(srv_addr.sin6_addr));
-       srv_addr.sin6_port = htons(port);
+       inet_pton(PF_INET6, co_client_config.srv_hit, &(srv_addr.sin6_addr));
+       srv_addr.sin6_port = htons(co_client_config.port);
        sock = create_client_socket(&srv_addr);
 
-       for (count = 0; count < retries; count++) {
+       for (count = 0; count < co_client_config.retries; count++) {
                if (request_cert() < 0)
                        break;
                if (receive_certificate(&cert) != -2)

Other related posts: