Fixed bad import in thing
authorArt Cancro <ajc@citadel.org>
Sat, 22 Jul 2023 20:42:35 +0000 (11:42 -0900)
committerArt Cancro <ajc@citadel.org>
Sat, 22 Jul 2023 20:42:35 +0000 (11:42 -0900)
citadel/utils/ctdlload.c

index b8c4e2aec84b60811c987ada4030687312f6f16a..ccd0ebc96cca93e8e6fb70bfdf0431592202d72e 100644 (file)
@@ -141,11 +141,26 @@ int convert_msgtext(char *line, DBT *out_key, DBT *out_data) {
 int convert_msgmeta(char *line, DBT *out_key, DBT *out_data) {
        char *token;
        struct MetaData *m = malloc(sizeof(struct MetaData));
-       token = strtok(line, "|");
-       m->meta_msgnum = atol(strtok(NULL, "|"));
-       m->meta_refcount = atoi(strtok(NULL, "|"));
-       strncpy(m->meta_content_type, strtok(NULL, "|"), sizeof(m->meta_content_type));
-       m->meta_rfc822_length = atol(strtok(NULL, "|"));
+
+       memset(m, 0, sizeof(struct MetaData));
+       char *p = line;
+
+       for (int i=0; (token = strsep(&p, "|")); ++i) {
+               switch(i) {
+                       case 1:
+                               m->meta_msgnum = atol(token);
+                               break;
+                       case 2:
+                               m->meta_refcount = atoi(token);
+                               break;
+                       case 3:
+                               strncpy(m->meta_content_type, token, sizeof(m->meta_content_type));
+                               break;
+                       case 4:
+                               m->meta_rfc822_length = atol(token);
+                               break;
+               }
+       }
 
        // metadata records are stored in the CDB_MSGMAIN table,
        // but with the index being the *negative* of the message number.