void do_aedit( CHAR_DATA *ch, char *argument )
{
    AREA_DATA *pArea;
    int value;
    char arg[MAX_STRING_LENGTH];

    if ( IS_NPC(ch) )
    	return;

    argument	= one_argument(argument,arg);

	if (mud_port == play_port && !is_exact_name(ch->name, MUD_OWNER))
	{
		msg( ch, "Building is not allowed on port %d.\n\r", mud_port );
		return;
	}
	if ( arg == NULL || arg[0] == '\0' )
	{
	    pArea	= ch->in_room->area;
	    if ( !IS_BUILDER( ch,pArea ) )
	    {
			msg( ch, "You are not a builder for this area.\n\rOnly %s may edit this area.\n\r", pArea->builders );
			return;
	    }
		msg( ch, "Aedit: Editting %s [file: %s] (vnum: %d)\n\r", pArea->name, pArea->file_name, pArea->vnum );
	    ch->desc->pEdit = (void *)pArea;
	    ch->desc->editor = ED_AREA;
	    return;
	}
	else
	{
	    if ( is_number( arg ) )
	    {
			value = atoi( arg );
			if ( !( pArea = get_area_data( value ) ) )
			{
			    msg( ch, "Area vnum %d does not exist.\n\r", value );
			    return;
			}
			msg( ch, "Aedit: Editting %s [file: %s] (vnum: %d)\n\r", pArea->name, pArea->file_name, pArea->vnum );
		    ch->desc->pEdit = (void *)pArea;
		    ch->desc->editor = ED_AREA;
		    return;
	    }
	    else
	    {
		    if ( !str_cmp( arg, "create" ) )
		    {
				if ( ch->pcdata->security < 9 )
				{
					msg( ch, "You do not have sufficient security to create an area.\n\r" );
					return;
				}
				aedit_create( ch, "" );
				ch->desc->editor = ED_AREA;
				return;
		    }
		    else
		    {
			    for ( pArea = area_first; pArea; pArea = pArea->next )
			    {
					if ( !str_cmp( pArea->file_name, arg ) && IS_BUILDER( ch, pArea ) )
					{
						msg( ch, "Aedit: Editting %s [file: %s] (vnum: %d)\n\r", pArea->name, pArea->file_name, pArea->vnum );
					    ch->desc->pEdit = (void *)pArea;
					    ch->desc->editor = ED_AREA;
					    return;
					}
				}
			}
		}
		return;
	}
}