/* newid.c: program to re-number the player ID's */
#include <stdio.h>
#include <dirent.h>
#include "config.h"
#define ID_COUNTER BASE_LOC "/data/WIZ_ZONES/ID_COUNTER"
#define False 0
#define True 1
int main() {
DIR *dir_pointer;
FILE *fp;
char dirname[256];
char filename[256];
int num_read;
char text[100][256];
int id_counter;
struct dirent *dp;
int i;
char c;
FILE *idptr;
int id_found;
if ((idptr = fopen(ID_COUNTER, "r")) == NULL) {
printf("ID_COUNTER could not be opened");
exit(1);
}
fscanf(idptr, "%ld", &id_counter);
fclose(idptr);
id_counter++; /* just to be safe */
printf("Numbering player ID's, starting with %d...\n", id_counter);
for (c = 'A'; c <= 'Z'; c++) {
sprintf(dirname, "%s/%c", TEXT_PFILES_BASE, c);
dir_pointer = opendir(dirname);
for (dp = readdir(dir_pointer); dp != NULL; dp = readdir(dir_pointer))
if (dp->d_name[0] != '.') {
sprintf(filename, "%s/%s", dirname, dp->d_name);
if ((fp = fopen(filename, "r")) != NULL) { /* read file */
for (i = 0 ; !feof(fp) ; i++) {
fgets(text[i], 256, fp);
if (!strncmp(text[i], "ID", 2)) {
sprintf(text[i], "ID %ld\n", id_counter++);
id_found = True;
}
}
num_read = i;
fclose(fp);
if ((fp = fopen(filename, "w")) != NULL) { /* write file */
for (i = 0 ; i < num_read ; i++)
fputs(text[i], fp);
if (!id_found)
fprintf(fp, "ID %ld\n", id_counter++);
fclose(fp);
}
else
printf("Couldn't save %s\n", dp->d_name);
}
else
printf("Couldn't read %s\n", dp->d_name);
}
}
if ((idptr = fopen(ID_COUNTER, "w")) == NULL)
exit(1);
fprintf(idptr, "%ld\n", id_counter);
fclose(idptr);
printf("Stored ID_COUNTER = %d\n", id_counter);
return(0);
}