/* ************************************************************************
* File: alias.c A utility to CircleMUD *
* Usage: writing/reading player's aliases *
* *
* Code done by Jeremy Hess and Chad Thompson *
* *
* Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University *
* CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991. *
************************************************************************ */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "structs.h"
#include "utils.h"
#include "interpreter.h"
void write_aliases(struct char_data *ch)
{
FILE *file;
char fn[127],*buf;
struct alias *temp;
int length;
get_filename(GET_NAME(ch),fn,ALIAS_FILE);
unlink(fn);
if( !GET_ALIASES(ch) )
return;
file = fopen(fn,"wt");
if (file == 0) {
sprintf(buf, "SYSERR: Can't create alias file: %s!", fn);
log(buf);
}
temp = GET_ALIASES(ch);
while( temp )
{
length = strlen(temp->alias);
length = MIN(length, 120);
*(temp->alias + length) = 0;
fprintf(file,"%d\n",length);
fprintf(file,"%s\n",temp->alias);
length = strlen(temp->replacement);
length = MIN(length, 120);
*(temp->replacement + length) = 0;
buf = strdup(temp->replacement);
while( *buf == ' ' ) {
length--;
buf++;
}
fprintf(file,"%d\n",length);
fprintf(file,"%s\n",buf);
fprintf(file,"%d\n",temp->type);
temp = temp->next;
}
fclose(file);
}
void read_aliases(struct char_data *ch)
{
FILE *file;
char fn[127];
struct alias *t2;
int length;
char temp_buf[127],buf[127];
get_filename(GET_NAME(ch),fn,ALIAS_FILE);
file = fopen(fn,"r");
if( !file )
return;
CREATE(GET_ALIASES(ch),struct alias,1);
t2 = GET_ALIASES(ch);
do
{
fscanf(file,"%d\n",&length);
fgets(buf,length+1,file);
t2->alias=strdup(buf);
fscanf(file,"%d\n",&length);
fgets(buf,length+1,file);
strcpy(temp_buf," ");
strcat(temp_buf,buf);
t2->replacement=strdup(temp_buf);
fscanf(file,"%d\n",&length);
t2->type = length;
if( !feof(file) ){
CREATE(t2->next,struct alias,1);
t2 = t2->next;
}
} while( !feof(file) );
fclose(file);
}