MOO-cows Mailing List Archive


Re: Non-overrideable verbs

--- Phantom wrote:
[snip: internal storage not important]

The reason I want to use a 'p' flag for protected (or hell consider it 
'property-like') is that when this flag is off, verbs are treated as 
usual.  Databases loaded from an older server will still work perfectly 
fine (and don't give me that line about VF_NOT_O causing all verbs to be 
loaded from a previous db version to be made +o, that's simply a 
convesion.) Only when this flag is turned on are verbs given override 

In other words, I want to make override protection a _feature_ that only 
occours when you _want_ it and _ask_ for it, and the way it is now is the 
default.  You want to make overridable an _option_ and make the default, 
what is assumed if nothing is asked for, to be non-overridable, which 
will 1) make upgrading hell, 2) make adjusting to an upgrade hell, and 3) 
cause tons of headaches when we get spammed with complaints about "Why 
doesn't my MOO work?" every five minutes.

Keep the way it is now the default, and make overridable verbs an option 
that only is turned on when you ask for it to be turned on and chmod a 
verb +p.
--- end of quoted material ---

The reason I chose +/- o in the first place was to follow the trend in the
other properties.  Basically, each flag (except d, I suppose) increases the
"permissiveness" of the verb.  +w verbs can be written, +r verbs can be read,
+x verbs can be executed from anywhere.

Also, it is VERY similar to the +f flag on objects.  When this is set, you can
"override" the object, otherwise, no.

However, I do see the point about compatibility with existing MOO cores.  I'd
note that very few verbs in the MOO access verb_info() directly (i.e. don't use
"index" on the flags) and even fewer use set_verb_info.  In fact, @chmod on a
Christmas Core worked with no modification.  The only change that I thought
made sense was changing @verb to make the default perms "rdo" instead of "rd".

Because I'm writing this patch, I get to use my preference (o). :->  However, I
have added $server_options.use_blocked_notation to -/+b instead of +/- o.  This
means near-complete compatibility wih existing cores, and follows E_MOO's
system for it.

There is also $server_options.protect_b_flag, that will return E_PERM on any
attempt to change the flag on a verb by a non-wizard.

For those interested, I have put up a right-out-of-the-can LambdaCore at  just create <name> <password>, and "kick
Kick Me!" to get a prog bit an some quota.  Provided is a fertile object called
"Override me" that has two verbs: foo, which is -o and a bar, which is +o.  I
have also made the two $server_options +w so that they can be changed easily. 
Since this is not fully tested, I expect a few remaining bugs.  If you find an
inconsistancy, or if it panics, please email me with the circumstances at


Home | Subject Index | Thread Index