Annotation of 43BSD/contrib/xns/examples/passwd/PasswordLookup_server.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * Server for PasswordLookup.
        !             3:  */
        !             4: #include "PasswordLookup_support.c"
        !             5: #include <except.h>
        !             6: 
        !             7: extern CourierConnection *_serverConnection;
        !             8: 
        !             9: extern LookupUidResults LookupUid();
        !            10: 
        !            11: server_LookupUid(_buf)
        !            12:        register Unspecified *_buf;
        !            13: {
        !            14:        register Unspecified *_bp = _buf;
        !            15:        register LongCardinal _n;
        !            16:        Cardinal uid;
        !            17:        LookupUidResults _Results;
        !            18: 
        !            19:        _bp += internalize_Cardinal(&uid, _bp);
        !            20:        _Results = LookupUid(_serverConnection, 0, uid);
        !            21:        _n = sizeof_LookupUidResults(&_Results);
        !            22:        _bp = Allocate(_n);
        !            23:        externalize_LookupUidResults(&_Results, _bp);
        !            24:        SendReturnMessage(_n, _bp);
        !            25:        Deallocate(_bp);
        !            26: }
        !            27: 
        !            28: extern LookupUserResults LookupUser();
        !            29: 
        !            30: server_LookupUser(_buf)
        !            31:        register Unspecified *_buf;
        !            32: {
        !            33:        register Unspecified *_bp = _buf;
        !            34:        register LongCardinal _n;
        !            35:        String user;
        !            36:        LookupUserResults _Results;
        !            37: 
        !            38:        _bp += internalize_String(&user, _bp);
        !            39:        _Results = LookupUser(_serverConnection, 0, user);
        !            40:        _n = sizeof_LookupUserResults(&_Results);
        !            41:        _bp = Allocate(_n);
        !            42:        externalize_LookupUserResults(&_Results, _bp);
        !            43:        SendReturnMessage(_n, _bp);
        !            44:        Deallocate(_bp);
        !            45: }
        !            46: 
        !            47: Server()
        !            48: {
        !            49:        Cardinal _procedure;
        !            50:        register Unspecified *_buf;
        !            51:        Cardinal _n;
        !            52: 
        !            53:        for (;;) {
        !            54:                if (LookAheadCallMessage(PasswordLookup_NUMBER, PasswordLookup_VERSION))
        !            55:                        break;
        !            56:                _buf = ReceiveCallMessage(&_procedure);
        !            57:                DURING switch (_procedure) {
        !            58:                case 1:
        !            59:                        server_LookupUser(_buf);
        !            60:                        break;
        !            61:                case 0:
        !            62:                        server_LookupUid(_buf);
        !            63:                        break;
        !            64:                default:
        !            65:                        NoSuchProcedureValue("PasswordLookup", _procedure);
        !            66:                        break;
        !            67:                } HANDLER {
        !            68:                    Deallocate(_buf);
        !            69:                    switch (&Exception.Code) {
        !            70:                    case OtherError:
        !            71:                        _n = sizeof_T_cn754_2((T_cn754_2 *)Exception.Message);
        !            72:                        _buf = Allocate(_n);
        !            73:                        (void) externalize_T_cn754_2((T_cn754_2*)Exception.Message, _buf);
        !            74:                        SendAbortMessage(Exception.Code-ERROR_OFFSET, _n, _buf);
        !            75:                        break;
        !            76:                    case NoSuchUser:
        !            77:                        _buf = Allocate(0);
        !            78:                        SendAbortMessage(Exception.Code-ERROR_OFFSET, 0, _buf);
        !            79:                        break;
        !            80:                    default:
        !            81:                        _buf = Allocate(0);
        !            82:                        SendRejectMessage(unspecifiedError, 0, _buf);
        !            83:                        break;
        !            84:                    }
        !            85:                } END_HANDLER;
        !            86:                Deallocate(_buf);
        !            87:        }
        !            88: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.