NISPlus

 view release on metacpan or  search on metacpan

NISPlus.xs  view on Meta::CPAN

constant(name,arg)
	char *		name
	int		arg

# the following functions are direct implementations of nis functions.
# see the manual pages on these functions for a description of what they do

void
nis_getnames(name)
  nis_name	name
  PPCODE:
  {
    nis_name *	names;
    nis_name *	names_first;

    names_first = names = nis_getnames(name);
    while(*names != NULL)
    {
      XPUSHs(sv_2mortal(newSVpv(*names, 0)));
      names++;
    }

NISPlus.xs  view on Meta::CPAN

nis_add(name, owner, group, access, ttl, type, sep, path, data)
  nis_name	name
  nis_name	owner
  nis_name	group
  unsigned long	access
  unsigned long	ttl
  char *	type
  unsigned char	sep
  char *	path
  SV *		data
  PPCODE:
  {
    nis_object	object;
    nis_result	*res;
    int		pos;
    SV		**val;

    object.zo_name = "";
    object.zo_owner = owner;
    object.zo_group = group;
    object.zo_domain = "";

NISPlus.xs  view on Meta::CPAN

  }

void
nis_add_entry(name, data, owner, group, access, ttl)
  nis_name	name
  SV *		data
  nis_name	owner
  nis_name	group
  unsigned long	access
  unsigned long	ttl
  PPCODE:
  {
    nis_result	*table;
    nis_result	*res;
    nis_object	entry;

    table = lookup(name);
    if (table == (nis_result *)NULL) XPUSHs(sv_newmortal());
    else
    {
      fill_entry(table, &entry, data, 1);

NISPlus.xs  view on Meta::CPAN

      }
      free_entry(&entry, 1);
      nis_freeresult(table);
    }
  }

void
nis_remove_entry(name, flags)
  nis_name	name
  unsigned long	flags
  PPCODE:
  {
    nis_result	*res;

    if ((res = nis_remove_entry(name, (nis_object *)NULL, flags)) ==
      (nis_result *)NULL)
      XPUSHs(sv_newmortal());
    else
    {
      XPUSHs(sv_2mortal(newSViv(res->status)));
      nis_freeresult(res);
    }
  }

void
nis_modify_entry(name, data, flags)
  nis_name	name
  SV *		data
  unsigned long	flags
  PPCODE:
  {
    nis_result	*table;
    nis_result	*res, *lres;
    nis_object	*entry;
    nis_name	tname;
    int		num;

# first, we get a reference to the table object.  This is used for
# the column names for fill_entry()
    if ((tname = (nis_name)strrchr((char *)name, ',')) == (char *)NULL)

NISPlus.xs  view on Meta::CPAN

      nis_freeresult(lres);
    }
    nis_freeresult(table);
  }

# list the names of the table entries

void
name_list(name)
  nis_name	name
  PPCODE:
  {
    nis_result	*res;
    
    res = nis_list(name, 0, (int(*)())NULL, (void *)NULL);

    if (res == (nis_result *)NULL)
    {
      croak("nis_list returned NULL");
    }
    XPUSHs(sv_2mortal(newSViv(res->status)));

NISPlus.xs  view on Meta::CPAN

    }
    nis_freeresult(res);
  }

# return an array of the contents of the table entries

void
entry_list(name, tableref)
  nis_name	name
  SV *		tableref
  PPCODE:
  {
    nis_result	*res;
    
    res=nis_list(name, MASTER_ONLY, (int(*)())NULL, (void *)NULL);

    if (res == (nis_result *)NULL)
    {
      croak("nis_list returned NULL");
    }
    XPUSHs(sv_2mortal(newSViv(res->status)));
    if (!res->status)
    {
      NISRESULT_ENTRY(res, tableref);
    }
    nis_freeresult(res);
  }

void
nis_first_entry(name)
  nis_name	name
  PPCODE:
  {
    nis_result	*res;
    u_int	num;

    res=nis_first_entry(name);

    if (res == (nis_result *)NULL) XPUSHs(sv_newmortal());
    else
    {
      XPUSHs(sv_2mortal(newSViv(res->status)));

NISPlus.xs  view on Meta::CPAN

        NISRESULT_ENTRY(res, &sv_undef);
      }
      nis_freeresult(res);
    }
  }

void
nis_next_entry(name, cookie)
  nis_name	name
  netobj	cookie
  PPCODE:
  {
    nis_result	*res;
    u_int	num;
 
    res=nis_next_entry(name, &cookie);

    if (res == (nis_result *)NULL) XPUSHs(sv_newmortal());
    else
    {
      XPUSHs(sv_2mortal(newSViv(res->status)));

NISPlus.xs  view on Meta::CPAN

void
nis_lerror(status, label)
  nis_error	status
  char *	label

# return information about an entry object

void
entry_info(path)
  nis_name	path
  PPCODE:
  {
    nis_result	*res;

    res = lookup(path);
    if (res == (nis_result *)NULL) XPUSHs(sv_newmortal());
    else
    {
      HV	*hv;

      XPUSHs(sv_2mortal(newSViv(res->status)));

NISPlus.xs  view on Meta::CPAN

      sv_free((SV *) hv);
      nis_freeresult(res);
    }
  }

# return information about a table object

void
table_info(path)
  nis_name	path
  PPCODE:
  {
    nis_result	*res;

    res = lookup(path);
    if (res == (nis_result *)NULL) XPUSHs(sv_newmortal());
    else
    {
      HV	*hv;

      XPUSHs(sv_2mortal(newSViv(res->status)));

NISPlus.xs  view on Meta::CPAN

      nis_freeresult(res);
    }
  }

# set information in an entry object

void
entry_setinfo(name, data)
  nis_name	name
  SV *          data
  PPCODE:
  {
    nis_result	*res, *res2;

    res = nis_list(name, MASTER_ONLY, (int(*)())NULL, (void *)NULL);
    if (res == (nis_result *)NULL) XPUSHs(sv_newmortal());
    else
    {
      setinfo(data, NIS_RES_OBJECT(res));

      if ((res2 = nis_modify_entry(name, NIS_RES_OBJECT(res), MOD_SAMEOBJ))

NISPlus.xs  view on Meta::CPAN

      nis_freeresult(res);
    }
  }

# set information in a table object

void
table_setinfo(path, data)
  nis_name	path
  SV *          data
  PPCODE:
  {
    nis_result	*res, *res2;
    SV		**sv;

    res = lookup(path);
    if (res == (nis_result *)NULL) XPUSHs(sv_newmortal());
    else
    {
      setinfo(data, NIS_RES_OBJECT(res));

NISPlus.xs  view on Meta::CPAN

      }
      nis_freeresult(res);
    }
  }

# return the type of an object (e.g. TABLE, ENTRY, etc)

void
obj_type(path)
  nis_name	path
  PPCODE:
  {
    nis_result	*res;

    res = lookup(path);
    if (res == (nis_result *)NULL) XPUSHs(sv_newmortal());
    else
    {
      XPUSHs(sv_2mortal(newSViv(NIS_RES_OBJECT(res)[0].zo_data.zo_type)));
      nis_freeresult(res);
    }



( run in 0.808 second using v1.01-cache-2.11-cpan-5511b514fd6 )