We abandon the wasteful strategy of gradual changes and simply change
to applog-style API wholesale, to put the whole issue behind.
Applications need to be rebuilt after new cld-devel is installed.

Signed-off-by: Pete Zaitcev <[email protected]>

diff --git a/include/cldc.h b/include/cldc.h
index 712e7c7..8c2bde5 100644
--- a/include/cldc.h
+++ b/include/cldc.h
@@ -78,7 +78,6 @@ struct cldc_ops {
                                const void *buf, size_t buflen);
        void            (*event)(void *private, struct cldc_session *,
                                 struct cldc_fh *, uint32_t);
-       void            (*printf)(const char *fmt, ...);
        void            (*errlog)(int prio, const char *fmt, ...);
 };
 
@@ -89,8 +88,7 @@ struct cldc_session {
        bool            verbose;
 
        const struct cldc_ops *ops;
-       void            (*act_log)(struct cldc_session *,
-                                  int prio, const char *fmt, ...);
+       void            (*act_log)(int prio, const char *fmt, ...);
        void            *private;
 
        uint8_t         addr[64];               /* server address */
@@ -211,13 +209,13 @@ extern bool cldc_levent_timer(void *private, bool add,
 
 /* cldc-dns */
 extern int cldc_getaddr(GList **host_list, const char *thishost, bool verbose,
-                void (*act_log)(const char *fmt, ...));
+                void (*act_log)(int prio, const char *fmt, ...));
 extern int cldc_saveaddr(struct cldc_host *hp,
                         unsigned int priority,
                         unsigned int weight, unsigned int port,
                         unsigned int nlen, const char *name,
                         bool verbose,
-                        void (*act_log)(const char *fmt, ...));
+                        void (*act_log)(int prio, const char *fmt, ...));
 
 static inline bool seqid_after_eq(uint64_t a_, uint64_t b_)
 {
diff --git a/lib/cldc-dns.c b/lib/cldc-dns.c
index 8f8984b..bc915e6 100644
--- a/lib/cldc-dns.c
+++ b/lib/cldc-dns.c
@@ -8,6 +8,7 @@
 #include <arpa/nameser.h>
 #include <netdb.h>
 #include <resolv.h>
+#include <syslog.h>
 #include "cldc.h"
 
 #define ADDRSIZE       24      /* Enough for IPv6, including port. */
@@ -21,7 +22,7 @@ int cldc_saveaddr(struct cldc_host *hp,
                         unsigned int weight, unsigned int port,
                         unsigned int nlen, const char *name,
                         bool verbose,
-                        void (*act_log)(const char *fmt, ...))
+                        void (*act_log)(int prio, const char *fmt, ...))
 {
        char portstr[11];
        char *hostname;
@@ -46,7 +47,7 @@ int cldc_saveaddr(struct cldc_host *hp,
 
        rc = getaddrinfo(hostname, portstr, &hints, &res0);
        if (rc) {
-               act_log("getaddrinfo(%s,%s) failed: %s",
+               act_log(LOG_INFO, "getaddrinfo(%s,%s) failed: %s",
                       hostname, portstr, gai_strerror(rc));
                rc = -EINVAL;
                goto err_addr;
@@ -65,7 +66,7 @@ int cldc_saveaddr(struct cldc_host *hp,
        }
 
        if (!something_suitable) {
-               act_log("Host %s port %u has no addresses",
+               act_log(LOG_INFO, "Host %s port %u has no addresses",
                       hostname, port);
                rc = -EINVAL;
                goto err_suitable;
@@ -77,7 +78,7 @@ int cldc_saveaddr(struct cldc_host *hp,
        hp->weight = weight;
 
        if (verbose) {
-               act_log(
+               act_log(LOG_DEBUG,
                       "Found CLD host %s prio %d weight %d",
                       hostname, priority, weight);
        }
@@ -100,7 +101,7 @@ err_name:
  */
 static int cldc_make_fqdn(char *buf, int size, const char *srvname,
                          const char *thishost,
-                         void (*act_log)(const char *fmt, ...))
+                         void (*act_log)(int prio, const char *fmt, ...))
 {
        char *s;
        int nlen;
@@ -108,18 +109,19 @@ static int cldc_make_fqdn(char *buf, int size, const char 
*srvname,
 
        nlen = strlen(srvname);
        if (nlen >= size-20) {
-               act_log(
+               act_log(LOG_INFO,
                       "cldc_getaddr: internal error (nlen %d size %d)",
                       nlen, size);
                return -1;
        }
 
        if (thishost == NULL) {
-               act_log("cldc_getaddr: internal error (null hostname)");
+               act_log(LOG_INFO,
+                       "cldc_getaddr: internal error (null hostname)");
                return -1;
        }
        if ((s = strchr(thishost, '.')) == NULL) {
-               act_log(
+               act_log(LOG_INFO,
                       "cldc_getaddr: hostname is not FQDN: \"%s\"",
                       thishost);
                return -1;
@@ -128,7 +130,7 @@ static int cldc_make_fqdn(char *buf, int size, const char 
*srvname,
 
        dlen = strlen(s);
        if (nlen + 1 + dlen + 1 > size) {
-               act_log(
+               act_log(LOG_INFO,
                       "cldc_getaddr: domain is too long: \"%s\"", s);
                return -1;
        }
@@ -160,7 +162,7 @@ static void push_host(GList **host_list, struct cldc_host 
*hp_in)
  * are started.
  */
 int cldc_getaddr(GList **host_list, const char *thishost, bool verbose,
-                void (*act_log)(const char *fmt, ...))
+                void (*act_log)(int prio, const char *fmt, ...))
 {
        enum { hostsz = 64 };
        char cldb[hostsz];
@@ -189,10 +191,12 @@ do_try_again:
        if (rc < 0) {
                switch (h_errno) {
                case HOST_NOT_FOUND:
-                       act_log("No _cld._udp SRV record");
+                       act_log(LOG_INFO,
+                               "cldc_getaddr: No _cld._udp SRV record");
                        return -1;
                case NO_DATA:
-                       act_log("Cannot find _cld._udp SRV record");
+                       act_log(LOG_INFO,
+                               "cldc_getaddr: Cannot find _cld._udp SRV 
record");
                        return -1;
                case TRY_AGAIN:
                        if (search_retries-- > 0)
@@ -200,23 +204,22 @@ do_try_again:
                        /* fall through */
                case NO_RECOVERY:
                default:
-                       act_log(
-                              "cldc_getaddr: res_search error (%d): %s",
-                              h_errno, hstrerror(h_errno));
+                       act_log(LOG_INFO,
+                               "cldc_getaddr: res_search error (%d): %s",
+                               h_errno, hstrerror(h_errno));
                        return -1;
                }
        }
        rlen = rc;
 
        if (rlen == 0) {
-               act_log(
-                      "cldc_getaddr: res_search returned empty reply");
+               act_log(LOG_INFO,
+                       "cldc_getaddr: res_search returned empty reply");
                return -1;
        }
 
        if (ns_initparse(resp, rlen, &nsb) < 0) {
-               act_log(
-                      "cldc_getaddr: ns_initparse error");
+               act_log(LOG_INFO, "cldc_getaddr: ns_initparse error");
                return -1;
        }
 
@@ -235,9 +238,9 @@ do_try_again:
                        rrlen = ns_rr_rdlen(rrb);
                        if (rrlen < 8) {        /* 2+2+2 and 2 for host */
                                if (verbose) {
-                                       act_log(
-                                              "cldc_getaddr: SRV len %d",
-                                              rrlen);
+                                       act_log(LOG_DEBUG,
+                                               "cldc_getaddr: SRV len %d", 
+                                               rrlen);
                                }
                                break;
                        }
@@ -245,14 +248,14 @@ do_try_again:
                        rc = dn_expand(resp, resp+rlen, p+6, hostb, hostsz);
                        if (rc < 0) {
                                if (verbose) {
-                                       act_log("cldc_getaddr: "
+                                       act_log(LOG_DEBUG, "cldc_getaddr: "
                                               "dn_expand error %d", rc);
                                }
                                break;
                        }
                        if (rc < 2) {
                                if (verbose) {
-                                       act_log("cldc_getaddr: "
+                                       act_log(LOG_DEBUG, "cldc_getaddr: "
                                               "dn_expand short %d", rc);
                                }
                                break;
@@ -267,8 +270,8 @@ do_try_again:
                        break;
                case ns_t_cname:        /* impossible, but */
                        if (verbose) {
-                               act_log(
-                                      "CNAME in SRV request, ignored");
+                               act_log(LOG_DEBUG,
+                                       "CNAME in SRV request, ignored");
                        }
                        break;
                default:
diff --git a/lib/cldc.c b/lib/cldc.c
index 90139cf..7ac6442 100644
--- a/lib/cldc.c
+++ b/lib/cldc.c
@@ -83,7 +83,7 @@ static size_t strnlen(const char *s, size_t maxlen)
 #define EBADE 52
 #endif
 
-static void cldc_stdlog(struct cldc_session *sess, int prio, const char *fmt, 
...)
+static void cldc_errlog(int prio, const char *fmt, ...)
 {
        char buf[200];
        va_list ap;
@@ -94,30 +94,6 @@ static void cldc_stdlog(struct cldc_session *sess, int prio, 
const char *fmt, ..
        va_end(ap);
 }
 
-static void cldc_oldlog(struct cldc_session *sess,
-                       int prio, const char *fmt, ...)
-{
-       char buf[200];
-       va_list ap;
-
-       va_start(ap, fmt);
-       vsnprintf(buf, 200, fmt, ap);
-       sess->ops->printf("%s\n", buf);
-       va_end(ap);
-}
-
-static void cldc_applog(struct cldc_session *sess,
-                       int prio, const char *fmt, ...)
-{
-       char buf[200];
-       va_list ap;
-
-       va_start(ap, fmt);
-       vsnprintf(buf, 200, fmt, ap);
-       sess->ops->errlog(prio, "%s", buf);
-       va_end(ap);
-}
-
 static int ack_seqid(struct cldc_session *sess, uint64_t seqid_le)
 {
        struct cld_packet *pkt;
@@ -138,7 +114,7 @@ static int ack_seqid(struct cldc_session *sess, uint64_t 
seqid_le)
        memcpy(resp, &def_msg_ack, sizeof(*resp));
 
        if (!authsign(sess, pkt, pkt_len)) {
-               sess->act_log(sess, LOG_INFO, "authsign failed 2");
+               sess->act_log(LOG_INFO, "authsign failed 2");
                return -1;
        }
 
@@ -163,11 +139,11 @@ static int cldc_rx_generic(struct cldc_session *sess,
                req = tmp->data;
 
                if (sess->verbose)
-                       sess->act_log(sess, LOG_DEBUG, "rx_gen: comparing 
req->xid (%llu) with resp->xid_in (%llu)",
-                               (unsigned long long)
-                                       le64_to_cpu(req->xid),
-                               (unsigned long long)
-                                       le64_to_cpu(resp->xid_in));
+                       sess->act_log(LOG_DEBUG,
+                                     "rx_gen: comparing req->xid (%llu) "
+                                     "with resp->xid_in (%llu)",
+                               (unsigned long long) le64_to_cpu(req->xid),
+                               (unsigned long long) le64_to_cpu(resp->xid_in));
 
                if (req->xid == resp->xid_in)
                        break;
@@ -178,10 +154,11 @@ static int cldc_rx_generic(struct cldc_session *sess,
 
        if (req->done) {
                if (sess->verbose)
-                       sess->act_log(sess, LOG_DEBUG, "rx_gen: re-acking");
+                       sess->act_log(LOG_DEBUG, "rx_gen: re-acking");
        } else {
                if (sess->verbose)
-                       sess->act_log(sess, LOG_DEBUG, "rx_gen: issuing 
completion, acking");
+                       sess->act_log(LOG_DEBUG,
+                                     "rx_gen: issuing completion, acking");
 
                req->done = true;
 
@@ -208,7 +185,7 @@ static int cldc_rx_ack_frag(struct cldc_session *sess,
                return -1008;
 
        if (sess->verbose)
-               sess->act_log(sess, LOG_DEBUG, "ack-frag: seqid %llu, want to 
ack",
+               sess->act_log(LOG_DEBUG, "ack-frag: seqid %llu, want to ack",
                              ack_msg->seqid);
 
        tmp = sess->out_msg;
@@ -228,7 +205,7 @@ static int cldc_rx_ack_frag(struct cldc_session *sess,
                                continue;
 
                        if (sess->verbose)
-                               sess->act_log(sess, LOG_DEBUG,
+                               sess->act_log(LOG_DEBUG,
                                              "ack-frag: seqid %llu, expiring",
                                              ack_msg->seqid);
 
@@ -274,7 +251,7 @@ static int cldc_rx_not_master(struct cldc_session *sess,
                              const void *msgbuf,
                              size_t buflen)
 {
-       sess->act_log(sess, LOG_INFO, "FIXME: not-master message received");
+       sess->act_log(LOG_INFO, "FIXME: not-master message received");
        return -1055;   /* FIXME */
 }
 
@@ -341,7 +318,7 @@ static bool authcheck(struct cldc_session *sess, const 
struct cld_packet *pkt,
             md, &md_len);
 
        if (md_len != SHA_DIGEST_LENGTH)
-               sess->act_log(sess, LOG_INFO,
+               sess->act_log(LOG_INFO,
                              "authsign BUG: md_len != SHA_DIGEST_LENGTH");
 
        if (memcmp(buf + buflen - SHA_DIGEST_LENGTH, md, SHA_DIGEST_LENGTH))
@@ -366,7 +343,7 @@ static bool authsign(struct cldc_session *sess, struct 
cld_packet *pkt,
             md, &md_len);
 
        if (md_len != SHA_DIGEST_LENGTH)
-               sess->act_log(sess, LOG_INFO,
+               sess->act_log(LOG_INFO,
                              "authsign BUG: md_len != SHA_DIGEST_LENGTH");
 
        memcpy(buf + (buflen - SHA_DIGEST_LENGTH), md, SHA_DIGEST_LENGTH);
@@ -452,7 +429,7 @@ int cldc_receive_pkt(struct cldc_session *sess,
 
        if (pkt_len < (sizeof(*pkt) + SHA_DIGEST_LENGTH)) {
                if (sess->verbose)
-                       sess->act_log(sess, LOG_DEBUG, "receive_pkt: msg too 
short");
+                       sess->act_log(LOG_DEBUG, "receive_pkt: msg too short");
                return -EPROTO;
        }
 
@@ -462,8 +439,8 @@ int cldc_receive_pkt(struct cldc_session *sess,
                if (msg->op == cmo_get) {
                        struct cld_msg_get_resp *dp;
                        dp = (struct cld_msg_get_resp *) msg;
-                       sess->act_log(sess, LOG_DEBUG, "receive pkt: len %u, op 
%s"
-                               ", seqid %llu, user %s, size %u",
+                       sess->act_log(LOG_DEBUG, "receive pkt: len %u, op %s"
+                                     ", seqid %llu, user %s, size %u",
                                (unsigned int) pkt_len,
                                opstr(msg->op),
                                (unsigned long long) le64_to_cpu(pkt->seqid),
@@ -472,16 +449,16 @@ int cldc_receive_pkt(struct cldc_session *sess,
                } else if (msg->op == cmo_new_sess) {
                        struct cld_msg_resp *dp;
                        dp = (struct cld_msg_resp *) msg;
-                       sess->act_log(sess, LOG_DEBUG, "receive pkt: len %u, op 
%s"
-                               ", seqid %llu, user %s, xid_in %llu",
+                       sess->act_log(LOG_DEBUG, "receive pkt: len %u, op %s"
+                                     ", seqid %llu, user %s, xid_in %llu",
                                (unsigned int) pkt_len,
                                opstr(msg->op),
                                (unsigned long long) le64_to_cpu(pkt->seqid),
                                pkt->user,
                                (unsigned long long) le64_to_cpu(dp->xid_in));
                } else {
-                       sess->act_log(sess, LOG_DEBUG, "receive pkt: len %u, op 
%s"
-                               ", seqid %llu, user %s",
+                       sess->act_log(LOG_DEBUG, "receive pkt: len %u, op %s"
+                                     ", seqid %llu, user %s",
                                (unsigned int) pkt_len,
                                opstr(msg->op),
                                (unsigned long long) le64_to_cpu(pkt->seqid),
@@ -491,14 +468,14 @@ int cldc_receive_pkt(struct cldc_session *sess,
 
        if (memcmp(pkt->magic, CLD_PKT_MAGIC, sizeof(pkt->magic))) {
                if (sess->verbose)
-                       sess->act_log(sess, LOG_DEBUG, "receive_pkt: bad pkt 
magic");
+                       sess->act_log(LOG_DEBUG, "receive_pkt: bad pkt magic");
                return -EPROTO;
        }
 
        /* check HMAC signature */
        if (!authcheck(sess, pkt, pkt_len)) {
                if (sess->verbose)
-                       sess->act_log(sess, LOG_DEBUG, "receive_pkt: invalid 
auth");
+                       sess->act_log(LOG_DEBUG, "receive_pkt: invalid auth");
                return -EACCES;
        }
 
@@ -506,7 +483,7 @@ int cldc_receive_pkt(struct cldc_session *sess,
        if (((sess->addr_len != net_addrlen) ||
            memcmp(sess->addr, net_addr, net_addrlen))) {
                if (sess->verbose)
-                       sess->act_log(sess, LOG_DEBUG,
+                       sess->act_log(LOG_DEBUG,
                                      "receive_pkt: server address mismatch");
                return -EBADE;
        }
@@ -527,7 +504,7 @@ int cldc_receive_pkt(struct cldc_session *sess,
 
        if ((sess->msg_buf_len + msglen) > CLD_MAX_MSG_SZ) {
                if (sess->verbose)
-                       sess->act_log(sess, LOG_DEBUG, "receive_pkt: bad pkt 
length");
+                       sess->act_log(LOG_DEBUG, "receive_pkt: bad pkt length");
                return -EPROTO;
        }
 
@@ -536,7 +513,7 @@ int cldc_receive_pkt(struct cldc_session *sess,
 
        if (memcmp(msg->magic, CLD_MSG_MAGIC, sizeof(msg->magic))) {
                if (sess->verbose)
-                       sess->act_log(sess, LOG_DEBUG, "receive_pkt: bad msg 
magic");
+                       sess->act_log(LOG_DEBUG, "receive_pkt: bad msg magic");
                return -EPROTO;
        }
 
@@ -548,9 +525,9 @@ int cldc_receive_pkt(struct cldc_session *sess,
                        sess->next_seqid_in - CLDC_MSG_REMEMBER;
 
                if (sess->verbose)
-                       sess->act_log(sess, LOG_DEBUG, "receive_pkt: "
-                                        "setting next_seqid_in to %llu",
-                                        (unsigned long long) seqid);
+                       sess->act_log(LOG_DEBUG, "receive_pkt: "
+                                     "setting next_seqid_in to %llu",
+                                     (unsigned long long) seqid);
        } else if (!no_seqid) {
                if (seqid != sess->next_seqid_in) {
                        if (seqid_in_range(seqid,
@@ -559,7 +536,7 @@ int cldc_receive_pkt(struct cldc_session *sess,
                                return ack_seqid(sess, pkt->seqid);
 
                        if (sess->verbose)
-                               sess->act_log(sess, LOG_DEBUG,
+                               sess->act_log(LOG_DEBUG,
                                              "receive_pkt: bad seqid %llu",
                                              (unsigned long long) seqid);
                        return -EBADSLT;
@@ -901,13 +878,7 @@ int cldc_new_sess(const struct cldc_ops *ops,
 
        sess->private = private;
        sess->ops = ops;
-       if (ops->printf) {      /* obsolete API in use XXX */
-               sess->act_log = cldc_oldlog;
-       } else if (ops->errlog) {
-               sess->act_log = cldc_applog;
-       } else {
-               sess->act_log = cldc_stdlog;
-       }
+       sess->act_log = ops->errlog ? ops->errlog : cldc_errlog;
        sess->fh = g_array_sized_new(FALSE, TRUE, sizeof(struct cldc_fh), 16);
        strcpy(sess->user, user);
        strcpy(sess->secret_key, secret_key);
diff --git a/tools/cldcli.c b/tools/cldcli.c
index b2a0c02..2375ef4 100644
--- a/tools/cldcli.c
+++ b/tools/cldcli.c
@@ -144,12 +144,14 @@ static void errc_msg(struct cresp *cresp, enum 
cle_err_codes errc)
        strcpy(cresp->msg, names_cle_err[errc]);
 }
 
-static void app_log(const char *fmt, ...)
+static void applog(int prio, const char *fmt, ...)
 {
+       char buf[200];
        va_list ap;
 
        va_start(ap, fmt);
-       vfprintf(stderr, fmt, ap);
+       vsnprintf(buf, 200, fmt, ap);
+       fprintf(stderr, "%s\n", buf);
        va_end(ap);
 }
 
@@ -780,20 +782,11 @@ static void cld_p_event(void *private, struct 
cldc_session *sess,
        fprintf(stderr, "FIXME: event\n");
 }
 
-static void cld_p_log(const char *fmt, ...)
-{
-       va_list ap;
-
-       va_start(ap, fmt);
-       vfprintf(stderr, fmt, ap);
-       va_end(ap);
-}
-
 static struct cldc_ops cld_ops = {
        .timer_ctl      = cld_p_timer_ctl,
        .pkt_send       = cld_p_pkt_send,
        .event          = cld_p_event,
-       .printf         = cld_p_log,
+       .errlog         = applog,
 };
 
 static gpointer cld_thread(gpointer dummy)
@@ -1307,7 +1300,7 @@ int main (int argc, char *argv[])
                        return 1;
                }
                hostb[hostsz-1] = 0;
-               if (cldc_getaddr(&host_list, hostb, debugging, app_log)) {
+               if (cldc_getaddr(&host_list, hostb, debugging, applog)) {
                        fprintf(stderr, "Unable to find a CLD host\n");
                        return 1;
                }
--
To unsubscribe from this list: send the line "unsubscribe hail-devel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to