Imported Upstream version 2.5.1p3
[debian/amanda] / common-src / packet.c
index e8e20d4b42e935837a06672c0ab27da91092ddea..2b2fdf98534ca5f7da7c7c1394211b06b56d1069 100644 (file)
@@ -24,7 +24,7 @@
  * file named AUTHORS, in the root directory of this distribution.
  */
 /*
- * $Id: packet.c,v 1.8.2.1 2006/09/22 11:02:12 martinea Exp $
+ * $Id: packet.c,v 1.8.2.4 2006/12/18 20:43:50 martinea Exp $
  *
  * Routines for modifying the amanda protocol packet type
  */
@@ -50,6 +50,20 @@ static const struct {
 /*
  * Initialize a packet
  */
+void pkt_init_empty(
+    pkt_t *pkt,
+    pktype_t type)
+{
+    assert(pkt != NULL);
+    assert(strcmp(pkt_type2str(type), "BOGUS") != 0);
+
+    pkt->type = type;
+    pkt->packet_size = 1000;
+    pkt->body = alloc(pkt->packet_size);
+    pkt->body[0] = '\0';
+    pkt->size = strlen(pkt->body);
+}
+
 printf_arglist_function2(void pkt_init, pkt_t *, pkt, pktype_t, type,
     const char *, fmt)
 {
@@ -67,7 +81,7 @@ printf_arglist_function2(void pkt_init, pkt_t *, pkt, pktype_t, type,
        arglist_start(argp, fmt);
        len = vsnprintf(pkt->body, pkt->packet_size, fmt, argp);
        arglist_end(argp);
-       if (len < (int)(pkt->packet_size - 1))
+       if (len > -1 && len < (int)(pkt->packet_size - 1))
            break;
        pkt->packet_size *= 2;
        amfree(pkt->body);
@@ -95,7 +109,7 @@ printf_arglist_function1(void pkt_cat, pkt_t *, pkt, const char *, fmt)
        arglist_start(argp, fmt);
         lenX = vsnprintf(pkt->body + len, pkt->packet_size - len, fmt,argp);
        arglist_end(argp);
-       if (lenX < (int)(pkt->packet_size - len - 1))
+       if (lenX > -1 && lenX < (int)(pkt->packet_size - len - 1))
            break;
        pkt->packet_size *= 2;
        pktbody = alloc(pkt->packet_size);