]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/csv.c
zebra, lib: fix the ZEBRA_INTERFACE_VRF_UPDATE zapi message
[mirror_frr.git] / lib / csv.c
index eadaaa371195424f178bf06f4b49ddcb9e278f16..582106ebd429356cf98b6ff224c0f4e89dc6501a 100644 (file)
--- a/lib/csv.c
+++ b/lib/csv.c
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with Quagga; see the file COPYING.  If not, write to the Free
- * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -285,6 +289,11 @@ csv_record_t *csv_encode_record(csv_t *csv, csv_record_t *rec, int count, ...)
 
        va_start(list, count);
        str = csv_field_iter(rec, &fld);
+       if (!fld) {
+               va_end(list);
+               return NULL;
+       }
+
        for (tempc = 0; tempc < count; tempc++) {
                col = va_arg(list, char *);
                for (i = 0; i < fld->field_len; i++) {
@@ -420,7 +429,7 @@ void csv_clone_record(csv_t *csv, csv_record_t *in_rec, csv_record_t **out_rec)
 
 void csv_remove_record(csv_t *csv, csv_record_t *rec)
 {
-       csv_field_t *fld, *p_fld;
+       csv_field_t *fld = NULL, *p_fld;
 
        /* first check if rec belongs to this csv */
        if (!csv_is_record_valid(csv, rec)) {
@@ -559,6 +568,8 @@ void csv_decode(csv_t *csv, char *inbuf)
        csv_record_t *rec;
 
        buf = (inbuf) ? inbuf : csv->buf;
+       assert(buf);
+
        pos = strpbrk(buf, "\n");
        while (pos != NULL) {
                rec = calloc(1, sizeof(csv_record_t));
@@ -653,18 +664,15 @@ int main()
 {
        char buf[10000];
        csv_t csv;
-       int p;
-       int i, j;
+       int i;
        csv_record_t *rec;
-       csv_field_t *fld;
-       char *str;
        char hdr1[32], hdr2[32];
 
-       log_verbose("Mem: %ld\n", get_memory_usage(getpid()));
+       log_verbose("Mem: %d\n", get_memory_usage(getpid()));
        csv_init(&csv, buf, 256);
-       sprintf(hdr1, "%4u", 0);
-       sprintf(hdr2, "%4u", 1);
-       log_verbose("(%d/%d/%d/%d)\n", strlen(hdr1), strlen(hdr2), atoi(hdr1),
+       sprintf(hdr1, "%4d", 0);
+       sprintf(hdr2, "%4d", 1);
+       log_verbose("(%zu/%zu/%d/%d)\n", strlen(hdr1), strlen(hdr2), atoi(hdr1),
                    atoi(hdr2));
        rec = csv_encode(&csv, 2, hdr1, hdr2);
        csv_encode(&csv, 4, "name", "age", "sex", "hei");
@@ -675,21 +683,21 @@ int main()
        }
        csv_encode(&csv, 2, "pdfadfadfadsadsaddfdfdsfdsd", "35444554545454545");
        log_verbose("%s\n", buf);
-       sprintf(hdr1, "%4u", csv.csv_len);
-       sprintf(hdr2, "%4u", 1);
-       log_verbose("(%d/%d/%d/%d)\n", strlen(hdr1), strlen(hdr2), atoi(hdr1),
+       sprintf(hdr1, "%4d", csv.csv_len);
+       sprintf(hdr2, "%4d", 1);
+       log_verbose("(%zu/%zu/%d/%d)\n", strlen(hdr1), strlen(hdr2), atoi(hdr1),
                    atoi(hdr2));
        rec = csv_encode_record(&csv, rec, 2, hdr1, hdr2);
        log_verbose("(%d/%d)\n%s\n", rec->rec_len, csv.csv_len, buf);
 
-       log_verbose("Mem: %ld\n", get_memory_usage(getpid()));
+       log_verbose("Mem: %d\n", get_memory_usage(getpid()));
        csv_clean(&csv);
-       log_verbose("Mem: %ld\n", get_memory_usage(getpid()));
+       log_verbose("Mem: %d\n", get_memory_usage(getpid()));
        csv_init(&csv, buf, 256);
        csv_decode(&csv, NULL);
-       log_verbose("AFTER DECODE\n");
+       log_verbose("%s", "AFTER DECODE\n");
        csv_dump(&csv);
        csv_clean(&csv);
-       log_verbose("Mem: %ld\n", get_memory_usage(getpid()));
+       log_verbose("Mem: %d\n", get_memory_usage(getpid()));
 }
 #endif