/* Do not remove the headers from this file! see /USAGE for more info. */

#include <security.h>

nomask int check_previous_privilege(mixed priv)
{
  return SECURE_D->check_privilege(priv,2);
}

nomask int check_privilege(mixed priv)
{
  return SECURE_D->check_privilege(priv,1);
}

nomask void require_privilege(mixed priv) {
    if (!check_privilege(priv))
	error("Permission denied: Do not have privilege " + priv + "\n");
}

nomask mixed get_protection(string file,string mode)
{
  int rw;
  switch (mode[0])
  {
    case 'w':
      rw = 1;
      break;
    case 'r':
      rw = 0;
      break;
    default:
      error("Bad argument 2 to get_protection()\n");
      break;
  }
  switch (mode[1])
  {
    case 'f':
      file += "foo";
      break;
    case 'd':
      if (file[<1]=='/')
	file += "foo";
      else
	file += "/foo";
      break;
    default:
      error("Bad argument 2 to get_protection()\n");
      break;
  }
  return SECURE_D->query_protection(file,rw);
}

mixed get_privilege(object ob)
{
  return function_exists("query_privilege",ob)==M_ACCESS && ob->query_privilege();
}
