// (c) eAthena Dev Team - Licensed under GNU GPL
// For more information, see LICENCE in the main folder
/*
This program adds an user to account.txt
Don't usr it When login-sever is working.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *account_txt = "../save/account.txt";
//-----------------------------------------------------
// Function to suppress control characters in a string.
//-----------------------------------------------------
int remove_control_chars(unsigned char *str)
{
int i;
int change = 0;
for(i = 0; str[i]; i++) {
if (str[i] < 32) {
str[i] = '_';
change = 1;
}
}
return change;
}
int main(int argc, char *argv[])
{
char username[24];
char password[24];
char sex[2];
int next_id, id;
char line[1024];
FILE *FPaccin,*FPaccout;
// Check to see if account.txt exists.
printf("Checking if '%s' file exists...\n", account_txt);
FPaccin = fopen(account_txt, "r");
if (FPaccin == NULL) {
printf("'%s' file not found!\n", account_txt);
printf("Run the setup wizard please.\n");
exit(EXIT_SUCCESS);
}
next_id = 2000000;
while(fgets(line, sizeof(line), FPaccin))
{
if (line[0] == '/' && line[1] == '/') { continue; }
if (sscanf(line, "%d\t%%newid%%\n", &id) == 1) {
if (next_id < id) {
next_id = id;
}
} else {
sscanf(line,"%i%[^ ]", &id);
if (next_id <= id) {
next_id = id +1;
}
}
}
close(FPaccin);
printf("File exists.\n");
printf("Don't create an account if the login-server is online!!!\n");
printf("If the login-server is online, press ctrl+C now to stop this software.\n");
printf("\n");
strcpy(username, "");
while (strlen(username) < 4 || strlen(username) > 23) {
printf("Enter an username (4-23 characters): ");
scanf("%s", &username);
username[23] = 0;
remove_control_chars(username);
}
strcpy(password, "");
while (strlen(password) < 4 || strlen(password) > 23) {
printf("Enter a password (4-23 characters): ");
scanf("%s", &password);
password[23] = 0;
remove_control_chars(password);
}
strcpy(sex, "");
while (strcmp(sex, "F") != 0 && strcmp(sex, "M") != 0) {
printf("Enter a gender (M for male, F for female): ");
scanf("%s", &sex);
}
FPaccout = fopen(account_txt, "r+");
fseek(FPaccout, 0, SEEK_END);
fprintf(FPaccout, "%i %s %s - %s -\r\n", next_id, username, password, sex);
close(FPaccout);
printf("Account added.\n");
}