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

1.1     ! root        1: /* read.c - */
        !             2: 
        !             3: #ifndef        lint
        !             4: static char *rcsid = "$Header: /f/osi/quipu/dish/RCS/read.c,v 7.0 89/11/23 22:20:18 mrose Rel $";
        !             5: #endif
        !             6: 
        !             7: /* 
        !             8:  * $Header: /f/osi/quipu/dish/RCS/read.c,v 7.0 89/11/23 22:20:18 mrose Rel $
        !             9:  *
        !            10:  *
        !            11:  * $Log:       read.c,v $
        !            12:  * Revision 7.0  89/11/23  22:20:18  mrose
        !            13:  * Release 6.0
        !            14:  * 
        !            15:  */
        !            16: 
        !            17: /*
        !            18:  *                               NOTICE
        !            19:  *
        !            20:  *    Acquisition, use, and distribution of this module and related
        !            21:  *    materials are subject to the restrictions of a license agreement.
        !            22:  *    Consult the Preface in the User's Manual for the full terms of
        !            23:  *    this agreement.
        !            24:  *
        !            25:  */
        !            26: 
        !            27: 
        !            28: #include "quipu/util.h"
        !            29: #include "quipu/read.h"
        !            30: #include "quipu/entry.h"
        !            31: 
        !            32: extern DN       dn;
        !            33: 
        !            34: #define        OPT     (!frompipe || rps -> ps_byteno == 0 ? opt : rps)
        !            35: #define        RPS     (!frompipe || opt -> ps_byteno == 0 ? rps : opt)
        !            36: extern char    frompipe;
        !            37: extern PS      opt, rps;
        !            38: 
        !            39: extern DN       current_dn;
        !            40: extern Entry    current_entry;
        !            41: char            value_flag;
        !            42: char           all_flag;
        !            43: char           name_flag;
        !            44: char           show_all_flag;
        !            45: Attr_Sequence   as_flag = NULLATTR;
        !            46: Attr_Sequence   tmp_ignore = NULLATTR;
        !            47: char            flag_show;
        !            48: char           key_flag;
        !            49: char           print_format;
        !            50: 
        !            51: read_cache (argc, argv)
        !            52: int             argc;
        !            53: char          **argv;
        !            54: {
        !            55: extern char    doneget;
        !            56: 
        !            57:        if (doneget)
        !            58:                return (argc);
        !            59: 
        !            60:        return (read_cache_aux (argc,argv,TRUE, (CommonArgs *) 0));
        !            61: }
        !            62: 
        !            63: read_cache_aux (argc, argv, ali, ca)
        !            64: int             argc;
        !            65: char          **argv;
        !            66: char           ali;
        !            67: CommonArgs     *ca;
        !            68: {
        !            69:        Entry           read_entry;
        !            70:        int             x = 1;
        !            71:        char            noread_flag = FALSE;
        !            72:        char            do_read = FALSE;
        !            73:        Attr_Sequence   as;
        !            74:        extern int      copy_flag;
        !            75:        int             deref = FALSE;
        !            76:        struct ds_read_arg read_arg;
        !            77: 
        !            78:        value_flag = TRUE;
        !            79:        all_flag = TRUE;
        !            80:        show_all_flag = FALSE;
        !            81:        if (as_flag != NULLATTR) {
        !            82:                as_free (as_flag);
        !            83:                as_flag = NULLATTR;
        !            84:        }
        !            85:        flag_show = TRUE;
        !            86:        key_flag = TRUE;
        !            87: 
        !            88:        if (ca)
        !            89:            read_arg.rda_common = *ca;  /* struct copy */
        !            90:        else
        !            91:            if ((argc = service_control (OPT, argc, argv, &read_arg.rda_common)) == -1)
        !            92:                return (-1);
        !            93: 
        !            94:        if ( (argc = set_read_flags (argc,argv)) == -1)
        !            95:                return (-1);
        !            96: 
        !            97:        read_arg.rda_eis.eis_infotypes = value_flag;
        !            98:        read_arg.rda_eis.eis_allattributes = all_flag;  
        !            99:        read_arg.rda_eis.eis_select = as_flag;
        !           100: 
        !           101:        if (!copy_flag)
        !           102:                do_read = TRUE;
        !           103: 
        !           104:        for (x=1; x< argc; x++) {
        !           105:                if (test_arg (argv[x], "-nocache",4))
        !           106:                        do_read = TRUE;
        !           107:                else if (test_arg (argv[x], "-cache",2)) 
        !           108:                        noread_flag = TRUE;
        !           109:                else
        !           110:                        continue;
        !           111:                shuffle_up (argc--,argv,x--);
        !           112:        }
        !           113: 
        !           114:        if ( ! ali ) 
        !           115:                read_arg.rda_common.ca_servicecontrol.svc_options |= SVC_OPT_DONTDEREFERENCEALIAS;
        !           116: 
        !           117:         else if ((read_arg.rda_common.ca_servicecontrol.svc_options & SVC_OPT_DONTDEREFERENCEALIAS) == 0)
        !           118:                 deref = TRUE;
        !           119: 
        !           120:        if ((read_entry = local_find_entry (dn, deref)) != NULLENTRY) {
        !           121: 
        !           122:                for (as = as_flag; as!= NULLATTR; as = as->attr_link)
        !           123:                        if (as_find_type (read_entry->e_attributes, as->attr_type) == NULL) 
        !           124:                                do_read = TRUE;
        !           125:                
        !           126:                if (value_flag && (!read_entry->e_lock))
        !           127:                        do_read = TRUE;
        !           128: 
        !           129:                if ((read_arg.rda_eis.eis_allattributes == 1) && (!read_entry->e_complete))
        !           130:                        do_read = TRUE;
        !           131: 
        !           132:                current_entry = read_entry;
        !           133:                dn_free (current_dn);
        !           134:                current_dn = get_copy_dn (read_entry);
        !           135:        } else 
        !           136:                do_read = TRUE;
        !           137: 
        !           138:        if (do_read)
        !           139:                if (noread_flag)
        !           140:                        if (read_entry == NULLENTRY) {
        !           141:                                ps_print (OPT, "No data in cache, but '-cache' prevents me reading it!\n");
        !           142:                                return (-1);
        !           143:                        } else
        !           144:                                ps_print (OPT, "Read required, but '-cache' specified,\nproceeding using cache...\n");
        !           145:                else {
        !           146:                        struct DSError  error;
        !           147:                        struct ds_read_result result;
        !           148:                                
        !           149:                        read_arg.rda_object = dn;
        !           150:                                
        !           151:                        if (rebind () != OK)
        !           152:                                return(-2);
        !           153:                                
        !           154:                        /* Strong authentication */
        !           155:                        if (read_arg.rda_common.ca_security != 
        !           156:                                (struct security_parms *) 0)
        !           157:                        {
        !           158:                        struct signature *sign_operation();
        !           159:                        int encode_DAS_ReadArgumentData();
        !           160: 
        !           161:                        read_arg.rda_common.ca_sig =
        !           162:                                sign_operation((caddr_t)&read_arg,
        !           163:                                        encode_DAS_ReadArgumentData);
        !           164:                        }
        !           165: 
        !           166:                        while (ds_read (&read_arg, &error, &result) != DS_OK) {
        !           167:                                if (dish_error (OPT, &error) == 0)
        !           168:                                        return (-2);
        !           169:                                read_arg.rda_object = error.ERR_REFERRAL.DSE_ref_candidates->cr_name;
        !           170:                        }
        !           171:                                
        !           172:                        if (result.rdr_entry.ent_attr == NULLATTR) {
        !           173:                                ps_print (OPT, "No attributes\n");
        !           174:                                return (-2);
        !           175:                        }
        !           176:                                
        !           177:                        if (result.rdr_common.cr_aliasdereferenced) {
        !           178:                                ps_print (RPS, "(Alias dereferenced)\n");
        !           179:                        }
        !           180:                                
        !           181:                        cache_entry (&(result.rdr_entry), read_arg.rda_eis.eis_allattributes, value_flag);
        !           182:                                
        !           183:                        entryinfo_comp_free (&result.rdr_entry,0);
        !           184:                                
        !           185:                        return (argc);
        !           186:                }
        !           187: 
        !           188:        return (argc);
        !           189: }
        !           190: 
        !           191: 
        !           192: set_read_flags (argc,argv)
        !           193: int argc;
        !           194: char ** argv;
        !           195: {
        !           196: register int x;
        !           197: AttributeType at;
        !           198: extern char allow_move;
        !           199: 
        !           200:        print_format = READOUT;
        !           201:        tmp_ignore = NULLATTR;
        !           202: 
        !           203:        for (x = 1; x < argc; x++) {
        !           204:                if (test_arg (argv[x], "-all",1)) {
        !           205:                        show_all_flag = TRUE;
        !           206:                        all_flag = TRUE;
        !           207:                } else if (test_arg (argv[x], "-noall",3)) {
        !           208:                        show_all_flag = FALSE;
        !           209:                        all_flag = FALSE;
        !           210:                } else if (test_arg (argv[x], "-value",1))
        !           211:                        value_flag = EIS_ATTRIBUTESANDVALUES;
        !           212:                else if (test_arg (argv[x], "-novalue",3))
        !           213:                        value_flag = EIS_ATTRIBUTETYPESONLY;
        !           214:                else if (test_arg (argv[x], "-show",2)) 
        !           215:                        flag_show = TRUE;
        !           216:                else if (test_arg (argv[x], "-noshow",4))
        !           217:                        flag_show = FALSE;
        !           218:                else if (test_arg(argv[x],"-noname",3)) 
        !           219:                        name_flag = FALSE;
        !           220:                else if (test_arg (argv[x],"-name",2))
        !           221:                        name_flag = TRUE;
        !           222:                else if (test_arg (argv[x], "-key",1)) 
        !           223:                        key_flag = TRUE;
        !           224:                else if (test_arg (argv[x], "-nokey",3))
        !           225:                        key_flag = FALSE;
        !           226:                else if (test_arg (argv[x], "-edb",3))
        !           227:                        print_format = EDBOUT;
        !           228:                else if (test_arg (argv[x], "-sequence",3)) {
        !           229:                        if (x + 1 == argc) {    
        !           230:                                ps_printf (OPT, "We need a sequence name.\n");
        !           231:                                return (-1);
        !           232:                        } else {
        !           233:                                shuffle_up (argc--, argv, x);
        !           234:                                set_sequence (argv[x]);
        !           235:                        }
        !           236:                } else if (test_arg (argv[x],"-types",2)) {
        !           237:                        shuffle_up (argc--, argv, x);
        !           238:                        if (x >= argc) {
        !           239:                                ps_printf (OPT,"-types argument missing\n");
        !           240:                                return (-1);
        !           241:                        }
        !           242:                        if ((at = AttrT_new (argv[x])) != NULLAttrT) {
        !           243:                                show_all_flag = TRUE;
        !           244:                                all_flag = FALSE;
        !           245:                                as_flag = as_merge (as_flag,as_comp_new (AttrT_cpy (at), NULLAV, NULLACL_INFO));
        !           246:                        } else {
        !           247:                                ps_printf (OPT,"Unknown attribute type %s\n",argv[x]);
        !           248:                                return (-1);
        !           249:                        }
        !           250:                        for (x++; x < argc;) {
        !           251:                                if (*argv[x] == '-') 
        !           252:                                        break;
        !           253:                                if ((at = AttrT_new (argv[x])) != NULLAttrT) 
        !           254:                                        as_flag = as_merge (as_flag,as_comp_new (AttrT_cpy (at), NULLAV, NULLACL_INFO));
        !           255:                                else
        !           256:                                        break;
        !           257:                                shuffle_up (argc--,argv,x);
        !           258:                        }
        !           259:                        x--;
        !           260:                } else if (test_arg (argv[x],"-notypes",4)) {
        !           261:                        shuffle_up (argc--, argv, x);
        !           262:                        if (x >= argc) {
        !           263:                                ps_printf (OPT,"-notypes argument missing\n");
        !           264:                                return (-1);
        !           265:                        }
        !           266:                        if ((at = AttrT_new (argv[x])) != NULLAttrT) {
        !           267:                                tmp_ignore = as_merge (tmp_ignore,as_comp_new (AttrT_cpy (at), NULLAV, NULLACL_INFO));
        !           268:                        } else {
        !           269:                                ps_printf (OPT,"Unknown attribute type %s\n",argv[x]);
        !           270:                                return (-1);
        !           271:                        }
        !           272:                        for (x++; x < argc;) {
        !           273:                                if (*argv[x] == '-') 
        !           274:                                        break;
        !           275:                                if ((at = AttrT_new (argv[x])) != NULLAttrT) 
        !           276:                                        tmp_ignore = as_merge (tmp_ignore,as_comp_new (AttrT_cpy (at), NULLAV, NULLACL_INFO));
        !           277:                                else
        !           278:                                        break;
        !           279:                                shuffle_up (argc--,argv,x);
        !           280:                        }
        !           281:                        x--;
        !           282:                } else if (test_arg (argv[x],"-proc",3)) {
        !           283:                        short sntx;
        !           284:                        shuffle_up (argc--, argv, x);
        !           285:                        if (x >= argc) {
        !           286:                                ps_printf (OPT,"<syntax> missing\n");
        !           287:                                return (-1);
        !           288:                        }
        !           289:                        if ((sntx = str2syntax (argv[x])) == 0) {
        !           290:                                if (lexequ (argv[x],"ASN") != 0) {
        !           291:                                        ps_printf (OPT,"Unknown syntax %s\n",argv[x]);
        !           292:                                        return (-1);
        !           293:                                }
        !           294:                        }
        !           295:                        shuffle_up (argc--, argv, x);
        !           296:                        set_av_pe_print (sntx,argv[x]);
        !           297:                } else if (allow_move) {
        !           298:                        if (move (argv[x]) != OK)
        !           299:                                continue;
        !           300:                } else 
        !           301:                        continue;
        !           302: 
        !           303:                shuffle_up (argc--,argv,x--);
        !           304:        }
        !           305:        return (argc);
        !           306: }

unix.superglobalmegacorp.com

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