Annotation of 43BSDReno/contrib/isode-beta/quipu/dish/user.c, revision 1.1

1.1     ! root        1: /* user.c - */
        !             2: 
        !             3: #ifndef        lint
        !             4: static char *rcsid = "$Header: /f/osi/quipu/dish/RCS/user.c,v 7.4 90/07/09 14:47:27 mrose Exp $";
        !             5: #endif
        !             6: 
        !             7: /* 
        !             8:  * $Header: /f/osi/quipu/dish/RCS/user.c,v 7.4 90/07/09 14:47:27 mrose Exp $
        !             9:  *
        !            10:  *
        !            11:  * $Log:       user.c,v $
        !            12:  * Revision 7.4  90/07/09  14:47:27  mrose
        !            13:  * sync
        !            14:  * 
        !            15:  * Revision 7.3  90/03/15  11:18:37  mrose
        !            16:  * quipu-sync
        !            17:  * 
        !            18:  * Revision 7.2  90/01/11  18:37:47  mrose
        !            19:  * real-sync
        !            20:  * 
        !            21:  * Revision 7.1  89/12/19  16:21:07  mrose
        !            22:  * sync
        !            23:  * 
        !            24:  * Revision 7.0  89/11/23  22:20:25  mrose
        !            25:  * Release 6.0
        !            26:  * 
        !            27:  */
        !            28: 
        !            29: /*
        !            30:  *                               NOTICE
        !            31:  *
        !            32:  *    Acquisition, use, and distribution of this module and related
        !            33:  *    materials are subject to the restrictions of a license agreement.
        !            34:  *    Consult the Preface in the User's Manual for the full terms of
        !            35:  *    this agreement.
        !            36:  *
        !            37:  */
        !            38: 
        !            39: 
        !            40: #include "quipu/util.h"
        !            41: #include "quipu/read.h"
        !            42: #include "quipu/sequence.h"
        !            43: 
        !            44: extern struct dua_sequence * current_sequence;
        !            45: extern struct dua_sequence * top_sequence;
        !            46: 
        !            47: #include "isoaddrs.h"
        !            48: 
        !            49: #define        OPT     (!frompipe || rps -> ps_byteno == 0 ? opt : rps)
        !            50: #define        RPS     (!frompipe || opt -> ps_byteno == 0 ? rps : opt)
        !            51: extern char    frompipe;
        !            52: extern PS      opt, rps;
        !            53: 
        !            54: extern  char    fred_flag;
        !            55: 
        !            56: 
        !            57: call_ds (argc,argv)
        !            58: int argc;
        !            59: char ** argv;
        !            60: {
        !            61: extern char bound;
        !            62: extern char * myname;
        !            63: extern char * dsa_address;
        !            64: extern char * isodeversion;
        !            65: extern char * dsapversion;
        !            66: extern char * quipuversion;
        !            67: extern char * dishversion;
        !            68: extern DN      fixed_pos;
        !            69: extern DN      user_name;
        !            70: extern struct PSAPaddr dsa_bound;
        !            71: 
        !            72:        fred_flag = FALSE;
        !            73: 
        !            74:        if (argc > 1 && test_arg (argv[1], "-fred", 4)) {
        !            75:            fred_flag = TRUE;
        !            76:            argc--, argv++;
        !            77:        }
        !            78: 
        !            79:        if (argc > 1) {
        !            80:                if (test_arg (argv[1],"-sequence",1)) {
        !            81:                        show_sequence (RPS,argv[2]);
        !            82:                        return;
        !            83:                } else if (test_arg (argv[1], "-alias", 1)) {
        !            84:                        new_alias (argv[2]);
        !            85:                        return;
        !            86:                } else if (test_arg (argv[1], "-version", 1)) {
        !            87:                    ps_printf (RPS,"ISODE version %s\n",isodeversion);
        !            88:                    ps_printf (RPS,"DSAP  version %s\n",dsapversion);
        !            89:                    ps_printf (RPS,"QUIPU version %s\n",quipuversion);
        !            90:                    ps_printf (RPS,"DISH  version %s\n",dishversion);
        !            91:                    return;
        !            92:                } else if (test_arg (argv[1], "-user", 1)) {
        !            93:                        if (fred_flag && user_name)
        !            94:                            ufn_dn_print_aux (RPS, user_name, NULLDN, 0);
        !            95:                        else
        !            96:                            dn_print (RPS, user_name, EDBOUT);
        !            97:                        ps_print (RPS, "\n");
        !            98:                        return;
        !            99:                } else if (test_arg (argv[1], "-syntax", 2)) {
        !           100:                        int i;  
        !           101:                        char * syntax2str();
        !           102:                        for (i=1;i<MAX_AV_SYNTAX;i++) {
        !           103:                                if (syntax2str(i) == NULLCP)
        !           104:                                        return;
        !           105:                                ps_printf (RPS, "%s\n",syntax2str(i));
        !           106:                        }
        !           107:                        return;
        !           108:                } else {
        !           109:                        Usage (argv[0]);
        !           110:                        return;
        !           111:                }
        !           112:        }
        !           113: 
        !           114:        if (bound) {
        !           115:                ps_printf (RPS, "Connected to ");
        !           116:                if (strcmp (myname, dsa_address))
        !           117:                    ps_printf (RPS, "%s at ", myname);
        !           118:                ps_printf (RPS, "%s\n", pa2str (&dsa_bound));
        !           119:        }
        !           120:        else 
        !           121:                ps_print (RPS,"Not connected to a DSA (cache exists)\n");
        !           122:        ps_print (RPS,"Current position: ");
        !           123:        if (fred_flag && fixed_pos)
        !           124:            ufn_dn_print_aux (RPS, fixed_pos, NULLDN, 0);
        !           125:        else
        !           126:            ps_print (RPS, "@"), dn_print (RPS, fixed_pos, EDBOUT);
        !           127:        ps_print (RPS, "\nUser name: ");
        !           128:        if (fred_flag && user_name)
        !           129:            ufn_dn_print_aux (RPS, user_name, NULLDN, 0);
        !           130:        else
        !           131:            ps_print (RPS, "@"), dn_print (RPS, user_name, EDBOUT);
        !           132:        ps_print (RPS, "\n");
        !           133:        if (current_sequence != NULL_DS)
        !           134:                ps_printf (RPS,"Current sequence '%s'\n",current_sequence->ds_name);
        !           135: }
        !           136: 
        !           137: 
        !           138: /*  */
        !           139: 
        !           140: static new_alias (cp)
        !           141: char   *cp;
        !           142: {
        !           143:     int            seqno;
        !           144:     DN     sdn;
        !           145: 
        !           146:     if ((sdn = str2dn (*cp != '@' ? cp : cp + 1)) == NULLDN) {
        !           147:        ps_printf (OPT, "Invalid DN for alias: %s\n", cp);
        !           148:        return;
        !           149:     }
        !           150: 
        !           151:     set_sequence ("default");
        !           152:     if (seqno = add_sequence (sdn)) {
        !           153:        ps_printf (RPS, "%-3d ", seqno);
        !           154:        if (fred_flag && sdn)
        !           155:            ufn_dn_print_aux (RPS, sdn, NULLDN, 0);
        !           156:        else
        !           157:            ps_print (RPS, "@"), dn_print (RPS, sdn, EDBOUT);
        !           158:        ps_print (RPS, "\n");
        !           159:     }
        !           160: }
        !           161: 
        !           162: dish_error (ps,error)
        !           163: PS ps;
        !           164: struct DSError * error;
        !           165: {
        !           166: struct access_point * ap;
        !           167: extern char neverefer;
        !           168: extern int chase_flag;
        !           169: 
        !           170:        if (error->dse_type == DSE_ABANDONED) {
        !           171:                ps_print (ps,"(DAP call interrupted - abandon successful)\n");
        !           172:                return (0);
        !           173:        }
        !           174: 
        !           175:        if (error->dse_type == DSE_ABANDON_FAILED) {
        !           176:                ps_print (ps,"(DAP call interrupted - abandon unsuccessful)\n");
        !           177:                return (0);
        !           178:        }
        !           179: 
        !           180:        if (error->dse_type == DSE_INTRERROR) {
        !           181:                ps_print (ps,"(DAP call interrupted)\n");
        !           182:                return (0);
        !           183:        }
        !           184: 
        !           185:        if ((error->dse_type != DSE_REFERRAL) 
        !           186:                || ((chase_flag == 0) && neverefer) 
        !           187:                || (chase_flag == 1)) {
        !           188:                ds_error (ps,error);
        !           189:                return (0);
        !           190:        }
        !           191: 
        !           192: 
        !           193:        if (error->ERR_REFERRAL.DSE_ref_candidates == NULLCONTINUATIONREF) {
        !           194:                ps_print (ps,"*** Referral error (but no reference !!!) ***\n");
        !           195:                return (0);
        !           196:        }
        !           197: 
        !           198:        for (ap = error->ERR_REFERRAL.DSE_ref_candidates->cr_accesspoints; 
        !           199:                                ap != NULLACCESSPOINT; ap=ap->ap_next) {
        !           200: 
        !           201:                if (chase_flag != 2) {
        !           202:                        ps_print (ps,"Referral to ");
        !           203:                        dn_print (ps,ap->ap_name,EDBOUT);
        !           204: 
        !           205:                        if (yesno (". Chase ? ") == FALSE)      
        !           206:                                continue;
        !           207:                } else if (!frompipe) {
        !           208:                        ps_print (ps,"Referring to ");
        !           209:                        dn_print (ps,ap->ap_name,EDBOUT);
        !           210:                        ps_print (ps,"...\n");
        !           211:                        (void) ps_flush (ps);
        !           212:                }
        !           213: 
        !           214:                if (referral_bind (ap->ap_address) != 0) 
        !           215:                        return (1);
        !           216: 
        !           217:                if (chase_flag == 2)
        !           218:                        break; /* only try first - otherwise possible looping */
        !           219:        }
        !           220:        return (0);
        !           221: }

unix.superglobalmegacorp.com

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