summaryrefslogblamecommitdiff
path: root/src/tool/adduser.c
blob: 8e7c5f0c2f960a459320218342d25f7e88785dee (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
















                                                       

                                            












                                     

                                













                                                                 
                                   


                          

                                                 















































                                                                                                          
// (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");
}