Subject: Re: binary plist support
To: Jason Thorpe <thorpej@shagadelic.org>
From: Jachym Holecek <freza@NetBSD.org>
List: tech-kern
Date: 10/27/2007 17:59:18
# Jason Thorpe 2007-10-16:
> [... comments on previous version ...]

I'm done with (hopefully) final version:

  ftp://ftp.netbsd.org/pub/NetBSD/misc/freza/bplist-2007-10-27.diff

The API is:

  <prop/prop_object.h>
  typedef enum {
	PROP_ENCODING_DEFAULT   =       0,
	PROP_ENCODING_XML       =       1,
	PROP_ENCODING_BINARY    =       2
  } prop_encoding_t;

  <prop/prop_array.h>
  /* Externalize as XML */
  char *prop_array_externalize(prop_array_t);

  /* Internalize any supported encoding */
  prop_array_t prop_array_internalize(const uint8_t *, size_t);

  /* Externalize with given encoding. */
  bool prop_array_externalize_with_encoding(prop_array_t, uint8_t **,
      size_t *, prop_encoding_t);

  /* Externalize to file with given encoding. */
  bool prop_array_externalize_to_file_with_encoding(prop_array_t,
      const char *, prop_encoding_t);

  /* Externalize to file with default encoding. */
  bool prop_array_externalize_to_file(prop_array_t, const char *);

  /* Internalize any supported encoding from file. */
  prop_array_t prop_array_internalize_from_file(const char *);

  <prop/prop_dictionary.h>
  /* ... goes much the same as prop_array.h */

As you may notice, prop_${foo}_internalize() signature has changed, I can
cook a patch against NetBSD-4 ~tomorrow so that we don't have to bloat the
API with backwards compatibility (4.0 is the first version to include
proplib and we still have time to forward-compat it).

Comments?

	-- Jachym