Notes

 view release on metacpan or  search on metacpan

Name/Name.xs  view on Meta::CPAN

#define BLOCK Perl_BLOCK

#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#include "notesname.h"

MODULE = Notes::Name   PACKAGE = Notes::Session

PROTOTYPES: DISABLE


void
create_name( s, ln_in_name )
      LN_Session *   s;
      char       *   ln_in_name;
   PREINIT:
      d_LN_XSVARS;
      STATUS         ln_rc = NOERROR;
	  DN_COMPONENTS  DNComp;
	  HV * 			 ln_hash = (HV *) NULL;
	  AV *			 ln_OU_array = (AV *) NULL;
	  AV *			 ln_CMT_array = (AV *) NULL;
	  SV *			 sv = (SV *) NULL;
	  short          i;
	  char           tmp[MAXUSERNAME];
	  char           ln_abbrev_name[MAXUSERNAME];
	  char           ln_canonical_name[MAXUSERNAME];
   ALIAS:
      createname = 0
   PPCODE:
   	  if(ln_rc = DNParse(0L, NULL, ln_in_name, &DNComp, sizeof(DNComp)))
   	  {
		  LN_SET_IVX(s, ln_rc);
		  XSRETURN_NOT_OK;
      }
      if(ln_rc = DNCanonicalize(0L, NULL, ln_in_name, (char FAR *)ln_canonical_name,
     	    						MAXUSERNAME, NULL))
	  {
 		  LN_SET_IVX(s, ln_rc);
  		  XSRETURN_NOT_OK;
      }
      if(ln_rc = DNAbbreviate(0L, NULL, ln_in_name, (char FAR *)ln_abbrev_name,
     	    						MAXUSERNAME, NULL))
	  {
 		  LN_SET_IVX(s, ln_rc);
  		  XSRETURN_NOT_OK;
      }

	  ln_hash      = (HV *)sv_2mortal((SV *)newHV());
	  ln_OU_array  = (AV *)sv_2mortal((SV *)newAV());
	  ln_CMT_array = (AV *)sv_2mortal((SV *)newAV());

      //printf ("Flags:  %lu\n", DNComp.Flags);

	  sv = newSVpv(ln_abbrev_name, 0);
      SvREADONLY_on(sv);
      hv_store(ln_hash, "Abbreviated", 11, sv, 0);

	  sv = newSVpv(ln_canonical_name, 0);
      SvREADONLY_on(sv);
      hv_store(ln_hash, "Canonical", 9, sv, 0);

      strncpy(tmp, DNComp.C, DNComp.CLength);
      tmp[DNComp.CLength] = '\0';
      sv = newSVpv(tmp, 0);
      SvREADONLY_on(sv);
      hv_store(ln_hash, "Country", 7, sv, 0);

      strncpy(tmp, DNComp.O, DNComp.OLength);
      tmp[DNComp.OLength] = '\0';
      sv = newSVpv(tmp, 0);
      SvREADONLY_on(sv);
      hv_store(ln_hash, "Organization", 12, sv, 0);

      //for ( i = 0; i < DN_OUNITS, DNComp.OULength[i]; i++)
      //{
      //   strncpy (tmp, DNComp.OU[i], DNComp.OULength[i]);
      //   tmp[DNComp.OULength[i]] = '\0';
      //   sv = newSVpv(tmp, 0);
      //   SvREADONLY_on(sv);
      //   av_store(ln_OU_array, i, sv);
      //}
      //SvREADONLY_on((SV *)ln_OU_array);
      //hv_store(ln_hash, "OrgUnits", 8, ln_OU_array, 0);

      strncpy(tmp, DNComp.CN, DNComp.CNLength);
      tmp[DNComp.CNLength] = '\0';
      sv = newSVpv(tmp, 0);
      SvREADONLY_on(sv);
      hv_store(ln_hash, "Common", 6, sv, 0);

Name/Name.xs  view on Meta::CPAN


      strncpy(tmp, DNComp.Phrase, DNComp.PhraseLength);
      tmp[DNComp.PhraseLength] = '\0';
      sv = newSVpv(tmp, 0);
      SvREADONLY_on(sv);
      hv_store(ln_hash, "Addr822Phrase", 13, sv, 0);

      strncpy(tmp, DNComp.LP, DNComp.LPLength);
      tmp[DNComp.LPLength] = '\0';
      sv = newSVpv(tmp, 0);
      SvREADONLY_on(sv);
      hv_store(ln_hash, "Addr822LocalPart", 16, sv, 0);

      strncpy(tmp, DNComp.R, DNComp.RLength);
      tmp[DNComp.RLength] = '\0';
      sv = newSVpv(tmp, 0);
      SvREADONLY_on(sv);
      hv_store(ln_hash, "Addr822Route", 12, sv, 0);

      //for ( i = 0; i < DN_MAX_COMMENTS, DNComp.CMTLength[i]; i++)
      //{
      //   strncpy (tmp, DNComp.CMT[i], DNComp.CMTLength[i]);
      //   tmp[DNComp.CMTLength[i]] = '\0';
      //   printf ("Internet Address Comment:  %s\n", tmp);
      //}

      strncpy(tmp, DNComp.Address821, DNComp.Address821Length);
      tmp[DNComp.Address821Length] = '\0';
      sv = newSVpv(tmp, 0);
      SvREADONLY_on(sv);
      hv_store(ln_hash, "Addr821", 7, sv, 0);

      strncpy(tmp, DNComp.HierarchyOnly, DNComp.HierarchyOnlyLength);
      tmp[DNComp.HierarchyOnlyLength] = '\0';
      sv = newSVpv(tmp, 0);
      SvREADONLY_on(sv);
      hv_store(ln_hash, "HierarchyOnly", 13, newSVpv(tmp, 0), 0);

      strncpy(tmp, DNComp.UID, DNComp.UIDLength);
      tmp[DNComp.UIDLength] = '\0';
      sv = newSVpv(tmp, 0);
      SvREADONLY_on(sv);
      hv_store(ln_hash, "LDAPUid", 7, sv, 0);

      strncpy(tmp, DNComp.L, DNComp.LLength);
      tmp[DNComp.LLength] = '\0';
      sv = newSVpv(tmp, 0);
      SvREADONLY_on(sv);
      hv_store(ln_hash, "Locality", 8, sv, 0);

	  LN_PUSH_NEW_HASH_OBJ( "Notes::Name", s );
	  LN_SET_OK( s );
	  XSRETURN ( 1 );


MODULE = Notes::Name	 PACKAGE = Notes::Name

void
DESTROY( name )
      LN_Name *   name;
   PPCODE:
      XSRETURN( 0 );



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