home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
magazine
/
nan_news
/
toolkit
/
nwuid.prg
< prev
next >
Wrap
Text File
|
1991-08-15
|
4KB
|
131 lines
/*
* File......: NWUID.PRG
* Author....: Glenn Scott
* CIS ID....: 71620,1521
* Date......: $Date: 15 Aug 1991 23:04:10 $
* Revision..: $Revision: 1.4 $
* Log file..: $Logfile: E:/nanfor/src/nwuid.prv $
*
* This is an original work by Glenn Scott and is placed in the
* public domain.
*
* Modification history:
* ---------------------
*
* $Log: E:/nanfor/src/nwuid.prv $
*
* Rev 1.4 15 Aug 1991 23:04:10 GLENN
* Forest Belt proofread/edited/cleaned up doc
*
* Rev 1.3 14 Jun 1991 19:52:34 GLENN
* Minor edit to file header
*
* Rev 1.2 14 Jun 1991 04:31:30 GLENN
* Return value still needs to have nulls (chr(0)) removed. Put that back
* in.
*
* Rev 1.1 12 Jun 1991 02:25:22 GLENN
* Documentation correction and revision of ft_int86() call to account
* for Ted's new string passing conventions.
*
* Rev 1.0 01 Apr 1991 01:01:56 GLENN
* Nanforum Toolkit
*
*/
/* $DOC$
* $FUNCNAME$
* FT_NWUID()
* $CATEGORY$
* NetWare
* $ONELINER$
* Return the current Novell NetWare User ID
* $SYNTAX$
* FT_NWUID( [ <nConnection> ] ) -> cUid
* $ARGUMENTS$
* <nConnection> is a connection number, or logical station number,
* to find a userid for. Under NetWare 286, this number can be from
* 1 to 100. Under NetWare 386, 1-250. If not supplied, FT_NWUID()
* defaults to the current connection (i.e., the connection running
* the application).
* $RETURNS$
* A string containing the userid, or "login name."
* The maximum length of this string, as defined by current
* versions of Novell NetWare, is 48 characters.
* $DESCRIPTION$
* FT_NWUID() returns the current NetWare userid, or "login
* name." This is useful for implementing security or audit
* trail procedures within your programs.
*
* There is no simple way a user can "fool" this function into
* retrieving an incorrect value, provided a NetWare shell is loaded.
*
* This function requires FT_INT86() and FT_NWLSTAT()
*
* This function does NOT test for the existence of the NetWare shell.
* The behavior is undefined if no shell is loaded. You'll usually get
* garbage. This function has not been tested on NetWare 386.
* $EXAMPLES$
* QOut( "I am: " + FT_NWUID() )
*
* FOR x := 1 TO 100
* cUid := FT_NWUID( x )
* IF .NOT Empty( cUid )
* QOut( Str( x, 3 ) + Space(3) + cUid )
* ENDIF
* NEXT
* $END$
*/
#include "FTINT86.CH"
#define DOS 33
#define NW_LOG 227
#ifdef FT_TEST
FUNCTION MAIN()
local x, cUid
QOut( "I am: [" + FT_NWUID() + "]" )
QOut( "---------------------" )
for x:= 1 to 100
cUid := FT_NWUID( x )
if .not. empty( cUid )
QOut( str( x, 3 ) + space(3) + cUid )
endif
next
return ( nil )
#endif
FUNCTION FT_NWUID( nConn )
LOCAL aRegs[ INT86_MAX_REGS ], ;
cReqPkt, ;
cRepPkt
nConn := IIF( nConn == nil, FT_NWLSTAT(), nConn )
// Set up request packet
cReqPkt := chr( 22 ) // Function 22: Get Connection Information
cReqPkt += chr( nConn )
cReqPkt := i2bin( len( cReqPkt ) ) + cReqPkt
// Set up reply packet
cRepPkt := space(63)
// Assign registers
aRegs[ AX ] := MAKEHI( NW_LOG )
aRegs[ DS ] := cReqPkt
aRegs[ SI ] := REG_DS
aRegs[ ES ] := cRepPkt
aRegs[ DI ] := REG_ES
FT_INT86( DOS, aRegs )
RETURN alltrim( strtran( substr( aRegs[ ES ], 9, 48 ), chr(0) ) )