OS2-UPM

 view release on metacpan or  search on metacpan

UPM.xs  view on Meta::CPAN

	if (strEQ(name, "UPM_NOMEM"))
	    return (USHORT) UPM_NOMEM;
	if (strEQ(name, "UPM_NOT_LOGGED"))
	    return (USHORT) UPM_NOT_LOGGED;
	if (strEQ(name, "UPM_OK"))
	    return (USHORT) UPM_OK;
	if (strEQ(name, "UPM_OPEN_SESSIONS"))
	    return (USHORT) UPM_OPEN_SESSIONS;
	if (strEQ(name, "UPM_PASSWORD_EXP"))
	    return (USHORT) UPM_PASSWORD_EXP;
	if (strEQ(name, "UPM_PRIV_ADMIN"))
	    return (USHORT) UPM_PRIV_ADMIN;
	if (strEQ(name, "UPM_PRIV_LOCAL_ADMIN"))
	    return (USHORT) UPM_PRIV_LOCAL_ADMIN;
	if (strEQ(name, "UPM_PRIV_USER"))
	    return (USHORT) UPM_PRIV_USER;
	if (strEQ(name, "UPM_PROF_NOT_FOUND"))
	    return (USHORT) UPM_PROF_NOT_FOUND;
	if (strEQ(name, "UPM_PWDLEN"))
	    return (USHORT) UPM_PWDLEN;
	if (strEQ(name, "UPM_REMLEN"))
	    return (USHORT) UPM_REMLEN;
	if (strEQ(name, "UPM_SS_BUSY"))
	    return (USHORT) UPM_SS_BUSY;
	if (strEQ(name, "UPM_SS_DEAD"))
	    return (USHORT) UPM_SS_DEAD;
	if (strEQ(name, "UPM_SS_PWDEXPWARNING"))
	    return (USHORT) UPM_SS_PWDEXPWARNING;
	if (strEQ(name, "UPM_SYS_ERROR"))
	    return (USHORT) UPM_SYS_ERROR;
	if (strEQ(name, "UPM_UIDLEN"))
	    return (USHORT) UPM_UIDLEN;
	if (strEQ(name, "UPM_ULP_LOADED"))
	    return (USHORT) UPM_ULP_LOADED;
	if (strEQ(name, "UPM_UNAVAIL"))
	    return (USHORT) UPM_UNAVAIL;
	if (strEQ(name, "UPM_USER"))
	    return (USHORT) UPM_USER;

    errno = EINVAL;
    return 0;

not_there:
    errno = ENOENT;
    return 0;
}


MODULE = OS2::UPM		PACKAGE = OS2::UPM

BOOT:
	initialize();

int
constant(name,arg)
	char *		name
	int		arg

void
local_user()
	PPCODE:
	{
		USHORT  rc;
		PBYTE   puserid = (buffer+0);
		PUSHORT ptype   = (PUSHORT)(buffer+10);
		rc = (_THUNK_PROLOG (4+4);
		      _THUNK_FLAT (puserid);
		      _THUNK_FLAT (ptype);
		      _THUNK_CALL16 (UPMELOCU));
		if (!rc) {
			EXTEND(sp, 2);
			PUSHs(sv_2mortal(newSVpv(puserid, 0)));
			PUSHs(sv_2mortal(newSViv(*ptype)));
		} else
			last_error = rc;
	}

void
user_list(remote_node="",remote_type=UPM_LOCAL)
	char *		remote_node
	int		remote_type
	PPCODE:
	{
		USHORT  rc;
		PBYTE   premotename = (buffer+0);
		PUSHORT pread       = (PUSHORT)(buffer+18);
		PUSHORT ptotal      = (PUSHORT)(buffer+20);
		PBYTE   pentries    = (buffer+24);
		strcpy((char *)premotename, remote_node);
		rc = (_THUNK_PROLOG (4+2+4+2+4+4);
		      _THUNK_FLAT (premotename);
		      _THUNK_SHORT (remote_type);
		      _THUNK_FLAT (pentries);
		      _THUNK_SHORT (buflen-24);
		      _THUNK_FLAT (pread);
		      _THUNK_FLAT (ptotal);
		      _THUNK_CALL16 (UPMEUSRL));
		if (!rc) {
			int i;
			void *p0 = pentries;
			struct UPM_USER_LOGON *p = p0;
			EXTEND(sp, *pread * 4);
			for (i = *pread; --i >= 0; ++p) {
				PUSHs(sv_2mortal(newSVpv(p->userid, 0)));
				PUSHs(sv_2mortal(newSVpv(p->remotename, 0)));
				PUSHs(sv_2mortal(newSViv(p->remotetype)));
				PUSHs(sv_2mortal(newSViv(p->sessionid)));
			}
		} else
			last_error = rc;
	}

int
logoff(userid,remote_node="",remote_type=UPM_LOCAL)
	char *		userid
	char *		remote_node
	int		remote_type
	CODE:
	{
		USHORT rc;
		PBYTE  puserid     = (buffer+0);
		PBYTE  premotename = (buffer+9);
		strcpy((char *)puserid, userid);
		strcpy((char *)premotename, remote_node);
		rc = (_THUNK_PROLOG (4+4+2);
		      _THUNK_FLAT (puserid);
		      _THUNK_FLAT (premotename);
		      _THUNK_SHORT (remote_type);
		      _THUNK_CALL16 (UPMELGFF));
		if (rc) {
			last_error = RETVAL;
			RETVAL = FALSE;
		} else
			RETVAL = TRUE;
	}
	OUTPUT:
		RETVAL

int
logoff_user(userid,remote_node="",remote_type=UPM_LOCAL)
	char *		userid
	char *		remote_node
	int		remote_type
	CODE:
	{
		USHORT rc;
		PBYTE  puserid     = (buffer+0);
		PBYTE  premotename = (buffer+9);
		strcpy((char *)puserid, userid);
		strcpy((char *)premotename, remote_node);
		rc = (_THUNK_PROLOG (4+4+2);
		      _THUNK_FLAT (puserid);
		      _THUNK_FLAT (premotename);
		      _THUNK_SHORT (remote_type);
		      _THUNK_CALL16 (UPMEULGF));
		if (rc) {
			last_error = RETVAL;
			RETVAL = FALSE;
		} else
			RETVAL = TRUE;
	}
	OUTPUT:
		RETVAL

void
local_logon()
	PPCODE:
	{
		USHORT  rc;
		PBYTE   puserid = (buffer+0);
		PUSHORT ptype   = (PUSHORT)(buffer+10);
		rc = (_THUNK_PROLOG (4+4);
		      _THUNK_FLAT (puserid);
		      _THUNK_FLAT (ptype);
		      _THUNK_CALL16 (UPMELOCL));
		if (!rc) {
			EXTEND(sp, 2);
			PUSHs(sv_2mortal(newSVpv(puserid, 0)));
			PUSHs(sv_2mortal(newSViv(*ptype)));
		} else
			last_error = rc;
	}

int
logon(userid,password,auth_check=UPM_USER,remote_node="",remote_type=UPM_LOCAL)
	char *		userid
	char *		password
	int		auth_check
	char *		remote_node
	int		remote_type
	CODE:
	{
		USHORT rc;
		PBYTE  puserid     = (buffer+0);
		PBYTE  ppassword   = (buffer+9);
		PBYTE  premotename = (buffer+18);
		strcpy((char *)puserid, userid);
		strcpy((char *)password, password);
		strcpy((char *)premotename, remote_node);
		rc = (_THUNK_PROLOG (4+4+4+2+2);
		      _THUNK_FLAT (puserid);
		      _THUNK_FLAT (ppassword);
		      _THUNK_FLAT (premotename);
		      _THUNK_SHORT (remote_type);
		      _THUNK_SHORT (auth_check);
		      _THUNK_CALL16 (UPMELGN));
		if (rc) {
			last_error = RETVAL;
			RETVAL = FALSE;
		} else
			RETVAL = TRUE;
	}
	OUTPUT:
		RETVAL

int
logon_user(userid,password,remote_node="",remote_type=UPM_LOCAL)
	char *		userid
	char *		password
	char *		remote_node
	int		remote_type
	CODE:
	{
		USHORT rc;
		PBYTE  puserid     = (buffer+0);
		PBYTE  ppassword   = (buffer+9);
		PBYTE  premotename = (buffer+18);



( run in 2.194 seconds using v1.01-cache-2.11-cpan-71847e10f99 )