> On Mon, Aug 28, 2006 at 02:20:49PM -0700, Michael Shapiro wrote: > > > On Sun, Aug 27, 2006 at 01:55:33PM -0700, Alan Maguire wrote: > > > > quick question about multivalued properties that are order-dependent > > > > (in this case the property represents an option to a daemon that can > > > > appear multiple times on the commandline). > > > > > > > > given that smf does not guarantee order being preserved for property > > > > values, is the right thing to do to use a single astring value and a > > > > separator > > > > between each value in the string? > > > > > > Yes, that's exactly what you should do. > > > > > > Dave > > > > In terms of the command-line options thing that may be the right thing to > > do but I think the more general case is entirely broken. We *should* > > support order-dependent properties, otherwise typed multi-valued properties > > are completely useless for a large category of problems. > > I agree. > > > The only reason it doesn't work is a stupid bug in scf_entry_add_value() > > wherein the code (to make its own life easier) adds new things to the > > head of a linked list to avoid keeping a tail pointer. > > Actually, the interface wasn't derived from the implementation here. > It has long been part of the design that all collections be unordered > to "reduce the network repository requirements dramatically". > > I didn't make this decision, and don't know if the rationale still > holds. I do know that it isn't just a bug in libscf. > > > As a result, > > every multi-valued property ends up in the exact reverse order in which > > items were added. I was planning on fixing this and updating the docs. > > That addresses the libscf half. You also need to verify that the > repository format and protocol are designed to preserve ordering. > > Dave
I've confirmed that fixing scf_entry_add_value() fixes the problem, insofar as I can tell by executing experiments. Jonathan, is there some more subtle issue inside the repository I should be aware of? I don't recall this decision, but as I say above it makes no sense -- in particular it makes the use of multi-value network address properties nearly useless. -Mike -- Mike Shapiro, Solaris Kernel Development. blogs.sun.com/mws/