tmuck2.4/
tmuck2.4/admin/scripts/
tmuck2.4/docs/
tmuck2.4/minimal-db/
tmuck2.4/minimal-db/data/
tmuck2.4/minimal-db/logs/
tmuck2.4/minimal-db/muf/
tmuck2.4/old/
tmuck2.4/src/
tmuck2.4/src/compile/
tmuck2.4/src/editor/
tmuck2.4/src/game/
tmuck2.4/src/interface/
tmuck2.4/src/scripts/
tmuck2.4/src/utilprogs/
/* Copyright (c) 1992 by David Moore.  All rights reserved. */
/* prog.c,v 2.4 1994/02/04 02:13:30 dmoore Exp */
#include "config.h"

#include "db.h"
#include "match.h"
#include "buffer.h"
#include "externs.h"

void do_prog(const dbref player, const char *name, const char *ignore1, const char *ignore2)
{
    dbref prog;
    struct match_data md;
  
    if (!Mucker(player)) {
	notify(player, "You're no programmer!");
	return;
    }
  
    if (!*name) {
	notify(player, "No program name given.");
	return;
    }
  
    init_match(player, name, TYPE_PROGRAM, &md);
  
    match_possession(&md);
    match_neighbor(&md);
    match_absolute(&md);
    prog = match_result(&md);

    if (prog == AMBIGUOUS) {
	notify(player, "I don't know which one you mean!");
	return;
    }

    if (prog == NOTHING) {
	prog = make_object(TYPE_PROGRAM, name, player, player, player);

	PushContents(player, prog);
	notify(player, "Program %s created with number %d.",
	       name, prog);

	begin_editing(player, prog, 0);
    } else {
	if ((Typeof(prog) != TYPE_PROGRAM)
	    || !controls(player, prog, Wizard(player))) {
	    notify(player, "Permission denied!");
	    return;
	}

	begin_editing(player, prog, 1);
    }
}