X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fupgrade%2Fserv_upgrade.c;h=4311504a4e94346fddaaa339b8000a00978cd81d;hb=bdfa2e9b6af7e32b11461433a28dd6551f830888;hp=bc471dc1af349b9c28e51296b44038f66a5e985b;hpb=9f051da5f95c2bfff60b179a9a403276a7f96b43;p=citadel.git diff --git a/citadel/modules/upgrade/serv_upgrade.c b/citadel/modules/upgrade/serv_upgrade.c index bc471dc1a..4311504a4 100644 --- a/citadel/modules/upgrade/serv_upgrade.c +++ b/citadel/modules/upgrade/serv_upgrade.c @@ -4,7 +4,7 @@ * guesses about what kind of data format changes need to be applied, and * we apply them transparently. * - * Copyright (c) 1987-2017 by the citadel.org team + * Copyright (c) 1987-2019 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 version 3. @@ -94,7 +94,7 @@ void fix_sys_user_name(void) { if (strncmp(usbuf.fullname, "SYS_", 4)) { /* Delete any user 0 that doesn't start with SYS_ */ - makeuserkey(usernamekey, usbuf.fullname, cutuserkey(usbuf.fullname)); + makeuserkey(usernamekey, usbuf.fullname, cutusername(usbuf.fullname)); cdb_delete(CDB_USERS, usernamekey, strlen(usernamekey)); } else { @@ -490,16 +490,9 @@ void miafvtur_backend(struct ctdluser *usbuf, void *data) { } /* this is the calling mode where we do the processing */ - int i; - struct ctdluser u; - for (i=0; i = <%s>", m[i].name, m[i].emails); - if (CtdlGetUser(&u, m[i].name) == 0) { - safestrncpy(u.emailaddrs, m[i].emails, sizeof u.emailaddrs); - CtdlPutUser(&u); - } + CtdlSetEmailAddressesForUser(m[i].name, m[i].emails); } free(m); num_m = 0; @@ -508,6 +501,38 @@ void miafvtur_backend(struct ctdluser *usbuf, void *data) { } +/* + * If our system still has a "refcount_adjustments.dat" sitting around from an old version, ingest it now. + */ +int ProcessOldStyleAdjRefCountQueue(void) +{ + int r; + FILE *fp; + struct arcq arcq_rec; + int num_records_processed = 0; + + fp = fopen(file_arcq, "rb"); + if (fp == NULL) { + return(num_records_processed); + } + + syslog(LOG_INFO, "msgbase: ingesting %s", file_arcq); + + while (fread(&arcq_rec, sizeof(struct arcq), 1, fp) == 1) { + AdjRefCount(arcq_rec.arcq_msgnum, arcq_rec.arcq_delta); + ++num_records_processed; + } + + fclose(fp); + r = unlink(file_arcq); + if (r != 0) { + syslog(LOG_ERR, "%s: %m", file_arcq); + } + + return(num_records_processed); +} + + /* * Prior to version 912 we kept a user's various Internet email addresses in their vCards. * This function moves them over to the user record, which is where we keep them now. @@ -606,6 +631,10 @@ void post_startup_upgrades(void) { if ((oldver > 000) && (oldver < 912)) { move_inet_addrs_from_vcards_to_user_records(); } + + if ((oldver > 000) && (oldver < 922)) { + ProcessOldStyleAdjRefCountQueue(); + } }