/*--------------------------------------------------------------------------* * ** WolfPaw 1.0 ** * *--------------------------------------------------------------------------* * WolfPaw 1.0 (c) 1997,1998 by Dale Corse * *--------------------------------------------------------------------------* * The WolfPaw Coding Team is headed by: Greywolf * * With the Assitance from: Callinon, Dhamon, Sentra, Wyverns, Altrag * * Scryn, Thoric, Justice, Tricops and Mask. * *--------------------------------------------------------------------------* * Refferal Points Addition and Calculation Module * *--------------------------------------------------------------------------*/ #include <stdio.h> #include <string.h> #include <time.h> #include <unistd.h> #include <ctype.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #include "mud.h" #define KEY( literal, field, value ) \ if ( !str_cmp( word, literal ) ) \ { \ field = value; \ fMatch = TRUE; \ break; \ } void add_refferal args( ( char *name,char *reff, char *site, char *email ) ); void load_refferals args( ( void ) ); void write_refferals args( ( void ) ); void load_reff args( ( REFFERAL_DATA *ref, FILE *fp ) ); void add_refferal( char *name,char *reff, char *site, char *email ) { REFFERAL_DATA *ref=NULL; char *strtime; record_call("<add_refferal>"); /* no refferal if no name entered*/ if ( name == NULL || reff == NULL ) return; strtime = ctime( ¤t_time ); strtime[strlen(strtime)-1] = '\0'; CREATE( ref, REFFERAL_DATA, 1 ); ref->name = STRALLOC( reff ); ref->refferal = STRALLOC( capitalize(name) ); ref->site = STRALLOC( site ); ref->date = STRALLOC( strtime ); ref->email = STRALLOC( email ); LINK(ref,first_refferal,last_refferal,next,prev); write_refferals(); return; } void make_refferal_list( void ) { record_call("<make_refferal_list>"); return; } void load_refferals( void ) { REFFERAL_DATA *ref=NULL; FILE *fp; bool fHeader = FALSE; record_call("<load_refferals>"); if( (fp=fopen( REFF_FILE,"r" ) )==NULL ) { bug("load_refferals: CANNOT OPEN REFF_FILE",0); perror(REFF_FILE); return; } for ( ; ; ) { char letter; char *word; letter = fread_letter( fp ); if( letter == '*' ) { fread_to_eol( fp ); continue; } if ( letter != '#' ) { bug("Load_Refferals: # not Found.",0); break; } word = fread_word( fp ); if ( !str_cmp(word, "REFF" ) ) { fHeader = TRUE; fread_to_eol( fp ); continue; } else if ( !str_cmp(word, "REFFERAL" ) ) { CREATE( ref, REFFERAL_DATA,1 ); load_reff( ref, fp ); LINK( ref, first_refferal, last_refferal, next, prev ); continue; } else if ( !str_cmp(word, "END" ) ) break; else { bug("Load_Refferals: Bad Section.(%s - %d",word,__LINE__); break; } if ( !fHeader ) log_string("Load_Refferals: #REFFDATA not found!"); } new_fclose(fp); return; } void write_refferals( void ) { REFFERAL_DATA *ref; FILE *fp; record_call("<write_refferals>"); if ( (fp=fopen( REFF_FILE,"w" ) )==NULL) { bug("Cannot open REFF_FILE!",0); perror(REFF_FILE); return; } fprintf( fp, "#REFF DATA\n\n" ); for ( ref = first_refferal; ref; ref = ref->next ) { fprintf( fp,"#REFFERAL\n"); fprintf( fp,"Name %s~\n", ref->name ); fprintf( fp,"Refferal %s~\n", ref->refferal ); fprintf( fp,"Site %s~\n", ref->site ); fprintf( fp,"Date %s~\n", ref->date ); fprintf( fp,"Email %s~\n", ref->email ); fprintf( fp,"$$\n\n"); } fprintf( fp,"#END DATA" ); new_fclose(fp); return; } void load_reff( REFFERAL_DATA *ref, FILE *fp ) { char *word=NULL; bool fMatch=FALSE; record_call("<load_reff>"); for( ; ; ) { word = feof( fp ) ? "$$" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) { case '*': fMatch = TRUE; fread_to_eol( fp ); break; case '$': fMatch = TRUE; return; case 'D': KEY( "Date", ref->date, fread_string( fp ) ); break; case 'E': KEY( "Email", ref->email, fread_string( fp ) ); break; case 'N': KEY( "Name", ref->name, fread_string( fp ) ); break; case 'R': KEY( "Refferal", ref->refferal, fread_string( fp ) ); break; case 'S': KEY( "Site", ref->site, fread_string( fp ) ); break; } if ( !fMatch ) { bug( "Load_Refferal: no match for %s.", word ); } } } void do_refferal( CHAR_DATA *ch, char *argument ) { record_call("<do_refferal>"); send_to_char("Function not Complete\n\r",ch); return; }