utf8ify_rfc822_string() is in libcitadel now
[citadel.git] / libcitadel / lib / json.c
index b16674589fd68ec0925c642cf9fa91cd47b5f2d2..0b3a7d16ff64e69b9c3bf78cd926ce7da9f093d2 100644 (file)
@@ -3,19 +3,8 @@
  *
  * Copyright (c) 1987-2018 by the citadel.org team
  *
- * This program is open source software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * 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 this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+// This program is open source software.  Use, duplication, or disclosure
+// is subject to the terms of the GNU General Public License, version 3.
  */
 
 #include "sysdep.h"
@@ -121,7 +110,7 @@ JsonValue *NewJsonBigNumber(const char *Key, long keylen, double Number)
 }
 
 
-JsonValue *NewJsonString(const char *Key, long keylen, StrBuf *CopyMe)
+JsonValue *NewJsonString(const char *Key, long keylen, StrBuf *CopyMe, int copy_or_smash)
 {
        JsonValue *Ret;
 
@@ -132,7 +121,18 @@ JsonValue *NewJsonString(const char *Key, long keylen, StrBuf *CopyMe)
        {
                Ret->Name = NewStrBufPlain(Key, keylen);
        }
-       Ret->Value = NewStrBufDup(CopyMe);
+       if (copy_or_smash == NEWJSONSTRING_COPYBUF)
+       {
+               Ret->Value = NewStrBufDup(CopyMe);
+       }
+       else if (copy_or_smash == NEWJSONSTRING_SMASHBUF)
+       {
+               Ret->Value = CopyMe;
+       }
+       else
+       {
+               Ret->Value = NULL;              // error condition
+       }
        return Ret;
 }