diff --git a/src/common/kernel/save.c b/src/common/kernel/save.c index e1bca387f..f44024c0c 100644 --- a/src/common/kernel/save.c +++ b/src/common/kernel/save.c @@ -149,7 +149,7 @@ rc(FILE * F) #define rc(F) (nextc = getc(F)) #endif -#define CONVERT_DBLINK +#undef CONVERT_DBLINK #ifdef CONVERT_DBLINK typedef struct uniquenode { @@ -1483,6 +1483,7 @@ curse_read(attrib * a, FILE * f) { } assert(ct!=NULL); +#ifdef CONVERT_DBLINK if (global.data_versioneffect.v = uniquefaction(c->effect.i); } } +#endif c->type = ct; /* beim Einlesen sind noch nicht alle units da, muss also diff --git a/src/eressea/main.c b/src/eressea/main.c index dc982446e..4f573490f 100644 --- a/src/eressea/main.c +++ b/src/eressea/main.c @@ -586,15 +586,39 @@ confirm_newbies(void) if (sqlstream==NULL) return; while (f) { if (!fval(f, FFL_DBENTRY)) { - if (f->subscription) { - fprintf(sqlstream, "UPDATE subscriptions SET status='ACTIVE', faction='%s', race='%s' WHERE id=%u;\n", itoa36(f->no), dbrace(f->race), f->subscription); - fset(f, FFL_DBENTRY); - } - } + if (f->subscription) { + fprintf(sqlstream, "UPDATE subscriptions SET status='ACTIVE', faction='%s', race='%s' WHERE id=%u;\n", itoa36(f->no), dbrace(f->race), f->subscription); + fset(f, FFL_DBENTRY); + } + } f = f->next; } } +void +update_subscriptions(void) +{ + FILE * F; + char zText[MAX_PATH]; + faction * f; + strcat(strcpy(zText, basepath()), "/subscriptions"); + F = fopen(zText, "r"); + if (F==NULL) { + log_error(("could not open %s.\n", zText)); + return; + } + for (;;) { + char zFaction[5]; + int subscription, fno; + if (fscanf(F, "%d %s", &subscription, zFaction)<=0) break; + fno = atoi36(zFaction); + f = findfaction(fno); + if (f!=NULL) { + f->subscription=subscription; + } + } +} + int main(int argc, char *argv[]) { @@ -642,6 +666,22 @@ main(int argc, char *argv[]) if ((i=readgame(false))!=0) return i; confirm_newbies(); + update_subscriptions(); + { + char zText[128]; + FILE * F; + faction * f = factions; + sprintf(zText, "subscriptions.%u", turn); + F = fopen(zText, "w"); + while (f!=NULL) { + fprintf(F, "%s:%u:%s:%s:%s:%u:\n", + itoa36(f->no), f->subscription, f->email, f->override, + dbrace(f->race), f->lastorders); + f = f->next; + } + fclose(F); + } + #ifdef BETA_CODE if (dungeonstyles) { struct dungeon * d = dungeonstyles;