fix dlen
[citadel.git] / libcitadel / lib / vnote.c
index a3564eb28067448aa5baba42bba73a2c79ad41f1..59b95208fd6624969826ea918d466d18865537a1 100644 (file)
@@ -1,12 +1,9 @@
-/*
- * $Id$
- *
- * vNote implementation for Citadel
- *
- * Copyright (C) 1999-2007 by the citadel.org development team.
- * This code is freely redistributable under the terms of the GNU General
- * Public License.  All other rights reserved.
- */
+// vNote implementation for Citadel
+//
+// Copyright (C) 1999-2023 by the citadel.org development team.
+//
+// This program is open source software.  Use, duplication, or disclosure
+// is subject to the terms of the GNU General Public License, version 3.
 
 
 #include <stdlib.h>
 #include <stdio.h>
 #include <fcntl.h>
 #include <signal.h>
-
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-#  include <sys/time.h>
-# else
-#  include <time.h>
-# endif
-#endif
-
+#include <time.h>
 #include <ctype.h>
 #include <string.h>
 #include <errno.h>
@@ -70,10 +56,10 @@ struct vnote *vnote_new_from_str(char *s) {
                thisline = NULL;
                nexteol = strchr(ptr, '\n');
                if (nexteol) {
-                       thisline = malloc((nexteol - ptr) + 2);
-                       strncpy(thisline, ptr, (nexteol-ptr));
                        thisline_len = (nexteol-ptr);
-                       thisline[thisline_len] = 0;
+                       thisline = malloc(thisline_len + 2);
+                       memcpy(thisline, ptr, thisline_len);
+                       thisline[thisline_len] = '\0';
                        ptr = nexteol + 1;
                }
                else {
@@ -96,9 +82,8 @@ struct vnote *vnote_new_from_str(char *s) {
                                *encoded_value++ = 0;
 
                                /* any qualifiers?  (look for a semicolon) */
-                               is_base64 = (int) bmstrcasestr(thisline, "encoding=base64");
-                               is_quoted_printable = (int) bmstrcasestr(thisline,
-                                                               "encoding=quoted-printable");
+                               is_base64 = bmstrcasestr(thisline, "encoding=base64") ? 1 : 0;
+                               is_quoted_printable = bmstrcasestr(thisline, "encoding=quoted-printable") ? 1 : 0;
 
                                char *semicolon_pos = strchr(thisline, ';');
                                if (semicolon_pos) {
@@ -162,10 +147,9 @@ struct vnote *vnote_new_from_str(char *s) {
                                        free(decoded_value);    // throw it away
                                }
 
-                               /* FIXME still need to handle these:
-                                * X-OUTLOOK-CREATE-TIME:20070611T204615Z
-                                * REV:20070611T204621Z
-                                */
+                               // FIXME still need to handle these:
+                               // X-OUTLOOK-CREATE-TIME:20070611T204615Z
+                               // REV:20070611T204621Z
                        }
                        free(thisline);
                }
@@ -187,7 +171,7 @@ void vnote_free(struct vnote *v) {
 }
 
 
-/* helper function for vnote_serialize() */
+// helper function for vnote_serialize()
 void vnote_serialize_output_field(char *append_to, char *field, char *label) {
 
        char *mydup;
@@ -203,7 +187,7 @@ void vnote_serialize_output_field(char *append_to, char *field, char *label) {
 
        mydup = malloc((strlen(field) * 3) + 1);
        if (!mydup) return;
-       strcpy(mydup, "");
+       *mydup = '\0';
 
        while (ptr[pos] != 0) {
                ch = (unsigned char)(ptr[pos++]);
@@ -246,7 +230,7 @@ char *vnote_serialize(struct vnote *v) {
        s = malloc(bytes_needed);
        if (!s) return NULL;
 
-       strcpy(s, "");
+       *s = '\0';
        vnote_serialize_output_field(s, "vnote", "BEGIN");
        vnote_serialize_output_field(s, "//Citadel//vNote handler library//EN", "PRODID");
        vnote_serialize_output_field(s, "1.1", "VERSION");
@@ -255,8 +239,7 @@ char *vnote_serialize(struct vnote *v) {
        vnote_serialize_output_field(s, v->summary, "SUMMARY");
        vnote_serialize_output_field(s, v->body, "BODY");
        vnote_serialize_output_field(s, v->body, "NOTE");
-       sprintf(&s[strlen(s)], "X-OUTLOOK-COLOR:#%02X%02X%02X\r\n",
-               v->color_red, v->color_green, v->color_blue);
+       sprintf(&s[strlen(s)], "X-OUTLOOK-COLOR:#%02X%02X%02X\r\n", v->color_red, v->color_green, v->color_blue);
        sprintf(&s[strlen(s)], "X-OUTLOOK-LEFT:%d\r\n", v->pos_left);
        sprintf(&s[strlen(s)], "X-OUTLOOK-TOP:%d\r\n", v->pos_top);
        sprintf(&s[strlen(s)], "X-OUTLOOK-WIDTH:%d\r\n", v->pos_width);