summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Mathias Palm2013-02-10 20:13:03 +0100
committerGravatar Nikias Bassen2013-02-10 20:13:03 +0100
commitfe8858c4e913993a45e9df5874dea75f9478819f (patch)
tree12c98685c31c466db7baea045db523a55c78b05d
parent20657046e72476669977197fbbad634b9110c4b8 (diff)
downloadlibvformat-fe8858c4e913993a45e9df5874dea75f9478819f.tar.gz
libvformat-fe8858c4e913993a45e9df5874dea75f9478819f.tar.bz2
Add manpages
Provides manpages instead of generating them from c2man as c2man is deprecated.
-rw-r--r--doc/Makefile.am6
-rw-r--r--doc/vf_create_object.363
-rw-r--r--doc/vf_date_string_to_time.364
-rw-r--r--doc/vf_delete_object.363
-rw-r--r--doc/vf_delete_prop.369
-rw-r--r--doc/vf_find_charset.354
-rw-r--r--doc/vf_find_prop_qual_index.397
-rw-r--r--doc/vf_get_next_object.365
-rw-r--r--doc/vf_get_next_property.354
-rw-r--r--doc/vf_get_object_type.353
-rw-r--r--doc/vf_get_prop_name.368
-rw-r--r--doc/vf_get_prop_name_string.370
-rw-r--r--doc/vf_get_prop_value.387
-rw-r--r--doc/vf_get_prop_value_base64.363
-rw-r--r--doc/vf_get_prop_value_object.352
-rw-r--r--doc/vf_get_prop_value_string.371
-rw-r--r--doc/vf_get_prop_value_time.368
-rw-r--r--doc/vf_get_property.3128
-rw-r--r--doc/vf_get_property_ex.391
-rw-r--r--doc/vf_is_modified.352
-rw-r--r--doc/vf_parse_end.354
-rw-r--r--doc/vf_parse_init.393
-rw-r--r--doc/vf_parse_text.370
-rw-r--r--doc/vf_period_string_to_time.365
-rw-r--r--doc/vf_period_time_to_string.363
-rw-r--r--doc/vf_read_file.363
-rw-r--r--doc/vf_set_prop_name_string.368
-rw-r--r--doc/vf_set_prop_value.382
-rw-r--r--doc/vf_set_prop_value_base64.373
-rw-r--r--doc/vf_set_prop_value_object.363
-rw-r--r--doc/vf_set_prop_value_string.368
-rw-r--r--doc/vf_set_prop_value_time.368
-rw-r--r--doc/vf_set_property_from_file.368
-rw-r--r--doc/vf_write_file.370
34 files changed, 2303 insertions, 3 deletions
diff --git a/doc/Makefile.am b/doc/Makefile.am
index e078504..ac63498 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -3,7 +3,7 @@ info_TEXINFOS = libvformat.texi
libvformat_TEXINFOS = libvformat-1.texi libvformat-2.texi libvformat-i.texi
install-data-hook:
- $(mkinstalldirs) $(mandir)/man3
+ $(mkinstalldirs) $(DESTDIR)$(mandir)/man3
for i in *.3; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
@@ -11,8 +11,8 @@ install-data-hook:
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " $(INSTALL_DATA) $$file $(mandir)/man3/$$inst"; \
- $(INSTALL_DATA) $$file $(mandir)/man3/$$inst; \
+ echo " $(INSTALL_DATA) $$file $(DESTDIR)$(mandir)/man3/$$inst"; \
+ $(INSTALL_DATA) $$file $(DESTDIR)$(mandir)/man3/$$inst; \
done
cp /usr/share/texmf/tex/texinfo/texinfo.tex .
diff --git a/doc/vf_create_object.3 b/doc/vf_create_object.3
new file mode 100644
index 0000000..b9ce4a4
--- /dev/null
+++ b/doc/vf_create_object.3
@@ -0,0 +1,63 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_create_object" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_create_object \- vf_create_object()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern VF_OBJECT_T *vf_create_object
+.br
+(
+.br
+ const char *p_type,
+.br
+ VF_OBJECT_T *p_parent
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "const char *p_type"
+Type of object to create.
+.TP
+.B "VF_OBJECT_T *p_parent"
+Parent object if any.
+.SH "DESCRIPTION"
+Creates an empty vformat object.
+.SH "RETURNS"
+Ptr to object if created else NULL.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_date_string_to_time.3 b/doc/vf_date_string_to_time.3
new file mode 100644
index 0000000..0bfadb4
--- /dev/null
+++ b/doc/vf_date_string_to_time.3
@@ -0,0 +1,64 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_date_string_to_time" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_date_string_to_time \- vf_date_string_to_time()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_date_string_to_time
+.br
+(
+.br
+ uint32_t *p_time,
+.br
+ const char *p_string
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "uint32_t *p_time"
+Output time value.
+.TP
+.B "const char *p_string"
+Input string.
+.SH "DESCRIPTION"
+Convert calendar string to absolute time. The basic formats are
+19960401, 19960401T073000Z.
+.SH "RETURNS"
+TRUE <=> conversion OK, FALSE else.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_delete_object.3 b/doc/vf_delete_object.3
new file mode 100644
index 0000000..0597129
--- /dev/null
+++ b/doc/vf_delete_object.3
@@ -0,0 +1,63 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_delete_object" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_delete_object \- vf_delete_object()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern void vf_delete_object
+.br
+(
+.br
+ VF_OBJECT_T *p_object,
+.br
+ bool_t all
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_OBJECT_T *p_object"
+The object to delete.
+.TP
+.B "bool_t all"
+Delete all subsequent objects?.
+.SH "DESCRIPTION"
+Cleans up the memory used by the indicated vformat object.
+.SH "RETURNS"
+(None)
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_delete_prop.3 b/doc/vf_delete_prop.3
new file mode 100644
index 0000000..ac25e96
--- /dev/null
+++ b/doc/vf_delete_prop.3
@@ -0,0 +1,69 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_delete_prop" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_delete_prop \- vf_delete_prop()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern void vf_delete_prop
+.br
+(
+.br
+ VF_OBJECT_T *p_object,
+.br
+ VF_PROP_T *p_prop,
+.br
+ bool_t dc
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_OBJECT_T *p_object"
+The object we're deleting from.
+.TP
+.B "VF_PROP_T *p_prop"
+The property we're removing.
+.TP
+.B "bool_t dc"
+Should property contents be deleted?.
+.SH "DESCRIPTION"
+Deletes indicated property from the indicated object. Deletes prop
+contents if dc is set.
+.SH "RETURNS"
+(None)
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_find_charset.3 b/doc/vf_find_charset.3
new file mode 100644
index 0000000..7c541da
--- /dev/null
+++ b/doc/vf_find_charset.3
@@ -0,0 +1,54 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_find_charset" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_find_charset \- vf_find_charset()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern const char *vf_find_charset(VF_PROP_T *p_prop);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+The property we're querying.
+.SH "DESCRIPTION"
+Locate the CHARSET property which indicates the character encoding
+in use - which indicates how the octet stream encoded in the VCARD
+is to be decoded into characters.
+.SH "RETURNS"
+Pointer to character encoding name eg. "UTF-8".
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_find_prop_qual_index.3 b/doc/vf_find_prop_qual_index.3
new file mode 100644
index 0000000..9e3f6c6
--- /dev/null
+++ b/doc/vf_find_prop_qual_index.3
@@ -0,0 +1,97 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_find_prop_qual_index" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_find_prop_qual_index \- vf_find_prop_qual_index()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_find_prop_qual_index
+.br
+(
+.br
+ VF_PROP_T *p_prop,
+.br
+ uint32_t *p_qualifier_index,
+.br
+ uint32_t *p_found_value_index,
+.br
+ const char **pp_possible_values,
+.br
+ const char *p_token,
+.br
+ vf_search_flags_t match
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+The property we're querying.
+.TP
+.B "uint32_t *p_qualifier_index"
+Ptr to output name index.
+.TP
+.B "uint32_t *p_found_value_index"
+Ptr to output index in array.
+.TP
+.B "const char **pp_possible_values"
+Array of possible values.
+.TP
+.B "const char *p_token"
+Token searched for.
+.TP
+.B "vf_search_flags_t match"
+String comparison flags.
+.SH "DESCRIPTION"
+Locate property qualifier given either an array of possible values
+or a single token that is either present or absent. For example
+if we have a property:
+
+NAME;THIRD;TIME;LUCKY:VALUE1;VALUE2;VALUE3
+
+Then there are two possible searches.
+
+Firstly we can look for the property qualifier which can take values
+from the array { "FIRST", "SECOND", THIRD" } in which case the array
+is passed as pp_possible_values and the function returns with the
+values *p_found_value_index=2, p_qualifier_index=1
+
+Secondly we can look for the token with value "TIME" in which case
+p_token is set to "TIME" and the function returns *p_qualifier_index=2.
+.SH "RETURNS"
+TRUE iff found, FALSE else.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_get_next_object.3 b/doc/vf_get_next_object.3
new file mode 100644
index 0000000..9c8efbe
--- /dev/null
+++ b/doc/vf_get_next_object.3
@@ -0,0 +1,65 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_get_next_object" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_get_next_object \- vf_get_next_object()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_get_next_object(VF_OBJECT_T **pp_object);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_OBJECT_T **pp_object"
+Ptr to pointer to current object.
+.SH "DESCRIPTION"
+Find "next" vobject. Typically called after a call to vf_read_file()
+which may well read a list of objects from a file for example:
+
+if (vf_read_file(&p_object, p_filename))
+{
+do
+{
+\ ...
+}
+while (vf_get_next_object(&p_object))
+;
+}
+
+The value of *pp_object is updated by the call if it returns TRUE.
+.SH "RETURNS"
+TRUE iff found (ie. There is a "next" object).
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_get_next_property.3 b/doc/vf_get_next_property.3
new file mode 100644
index 0000000..e6c491f
--- /dev/null
+++ b/doc/vf_get_next_property.3
@@ -0,0 +1,54 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_get_next_property" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_get_next_property \- vf_get_next_property()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_get_next_property(VF_PROP_T **pp_prop);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T **pp_prop"
+Output pointer.
+.SH "DESCRIPTION"
+Find the next property given the current search critera. User
+calls vf_get_property() to locate first in a bunch of properties
+and can iterate over the rest by calling vf_get_next_property().
+.SH "RETURNS"
+TRUE iff found, FALSE else. *Pp_prop points to the nex property.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_get_object_type.3 b/doc/vf_get_object_type.3
new file mode 100644
index 0000000..91cde4c
--- /dev/null
+++ b/doc/vf_get_object_type.3
@@ -0,0 +1,53 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_get_object_type" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_get_object_type \- vf_get_object_type()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern const char *vf_get_object_type(VF_OBJECT_T *p_object);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_OBJECT_T *p_object"
+Object to locate type of.
+.SH "DESCRIPTION"
+Return the type string identifying the indicated vformat object,
+the string after the 'BEGIN' mark so 'VCARD' or 'VNOTE' etc.
+.SH "RETURNS"
+Ptr to string.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_get_prop_name.3 b/doc/vf_get_prop_name.3
new file mode 100644
index 0000000..538c137
--- /dev/null
+++ b/doc/vf_get_prop_name.3
@@ -0,0 +1,68 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_get_prop_name" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_get_prop_name \- vf_get_prop_name()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern void vf_get_prop_name
+.br
+(
+.br
+ VF_PROP_T *p_prop,
+.br
+ char *p_buffer,
+.br
+ uint32_t bufsize
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+The property.
+.TP
+.B "char *p_buffer"
+The buffer.
+.TP
+.B "uint32_t bufsize"
+Size of the buffer.
+.SH "DESCRIPTION"
+Build the property name string in the indicated buffer.
+.SH "RETURNS"
+(None)
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_get_prop_name_string.3 b/doc/vf_get_prop_name_string.3
new file mode 100644
index 0000000..7d1cfee
--- /dev/null
+++ b/doc/vf_get_prop_name_string.3
@@ -0,0 +1,70 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_get_prop_name_string" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_get_prop_name_string \- vf_get_prop_name_string()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern char *vf_get_prop_name_string
+.br
+(
+.br
+ VF_PROP_T *p_prop,
+.br
+ uint32_t n_string
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+Property to locate string from.
+.TP
+.B "uint32_t n_string"
+Index to string requred.
+.SH "DESCRIPTION"
+Get n'th name string. For example a property may be defined as:
+
+THING;THIS=STUFF;WITH-QUALIFIERS:fred-fred-fred;gogogo;baabaabaa
+
+A call to vf_get_prop_name_string() specifying n_string=2 will
+return a pointer to the WITH-QUALIFIERS value.
+
+Return NULL if out of range request, ie. N_string=4 for X;A;B;C:foo.
+.SH "RETURNS"
+Pointer to string value if value present, NULL if index too large.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_get_prop_value.3 b/doc/vf_get_prop_value.3
new file mode 100644
index 0000000..4b821c8
--- /dev/null
+++ b/doc/vf_get_prop_value.3
@@ -0,0 +1,87 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_get_prop_value" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_get_prop_value \- vf_get_prop_value()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_get_prop_value
+.br
+(
+.br
+ VF_PROP_T *p_prop,
+.br
+ void **pp_value,
+.br
+ uint32_t *p_size,
+.br
+ vf_encoding_t *p_encoding
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+The property.
+.TP
+.B "void **pp_value"
+Pointer value.
+.TP
+.B "uint32_t *p_size"
+Integer value.
+.TP
+.B "vf_encoding_t *p_encoding"
+Type of return values.
+.SH "DESCRIPTION"
+Get hold of raw fields associated with the property. These are of
+various types:
+
+VF_ENC_VOBJECT
+.br
+- *Pp_value = pointer to contained VF_OBJECT_T which can be
+passed back to any of the object manipulation functions.
+
+VF_ENC_7BIT, VF_ENC_QUOTEDPRINTABLE
+.br
+- *Pp_value = ptr to array of char*, *p_size = number of elts.
+
+VF_ENC_8BIT, VF_BASE64
+.br
+- *Pp_value = ptr to bytes, *p_size = number of bytes.
+.SH "RETURNS"
+TRUE <=> encoding is valid, FALSE else.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_get_prop_value_base64.3 b/doc/vf_get_prop_value_base64.3
new file mode 100644
index 0000000..e9cdec5
--- /dev/null
+++ b/doc/vf_get_prop_value_base64.3
@@ -0,0 +1,63 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_get_prop_value_base64" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_get_prop_value_base64 \- vf_get_prop_value_base64()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern const uint8_t *vf_get_prop_value_base64
+.br
+(
+.br
+ VF_PROP_T *p_prop,
+.br
+ uint32_t *p_length
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+Property we're setting a value in.
+.TP
+.B "uint32_t *p_length"
+Length of the binary data.
+.SH "DESCRIPTION"
+Get a BASE64 property. Returns ptr, passes length via parameter.
+.SH "RETURNS"
+Ptr to data.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_get_prop_value_object.3 b/doc/vf_get_prop_value_object.3
new file mode 100644
index 0000000..0fa3cc6
--- /dev/null
+++ b/doc/vf_get_prop_value_object.3
@@ -0,0 +1,52 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_get_prop_value_object" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_get_prop_value_object \- vf_get_prop_value_object()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern VF_OBJECT_T *vf_get_prop_value_object(VF_PROP_T *p_prop);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+Property to locate object from.
+.SH "DESCRIPTION"
+Obtain object pointer value from VF_PROP_T.
+.SH "RETURNS"
+Pointer to vobject value (or NULL if not found).
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_get_prop_value_string.3 b/doc/vf_get_prop_value_string.3
new file mode 100644
index 0000000..4fc9a81
--- /dev/null
+++ b/doc/vf_get_prop_value_string.3
@@ -0,0 +1,71 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_get_prop_value_string" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_get_prop_value_string \- vf_get_prop_value_string()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern char *vf_get_prop_value_string
+.br
+(
+.br
+ VF_PROP_T *p_prop,
+.br
+ uint32_t n_string
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+Property to locate string from.
+.TP
+.B "uint32_t n_string"
+Index to string requred.
+.SH "DESCRIPTION"
+Obtain string pointer value from VF_PROP_T. For example a property
+may be defined as:
+
+THING;THIS=STUFF;WITH-QUALIFIERS:fred-fred-fred;gogogo;baabaabaa
+
+A call to vf_get_prop_value_string() specifying n_string=1 will
+return a pointer to the gogogo value.
+
+Return NULL if out of range request, ie. N_string=3 for N:0;1;2.
+.SH "RETURNS"
+Pointer to string value if value present, NULL if index too large.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_get_prop_value_time.3 b/doc/vf_get_prop_value_time.3
new file mode 100644
index 0000000..cf446c9
--- /dev/null
+++ b/doc/vf_get_prop_value_time.3
@@ -0,0 +1,68 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_get_prop_value_time" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_get_prop_value_time \- vf_get_prop_value_time()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_get_prop_value_time
+.br
+(
+.br
+ VF_PROP_T *p_prop,
+.br
+ uint32_t n_string,
+.br
+ long int *p_t_value
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+The property.
+.TP
+.B "uint32_t n_string"
+Which string we're decoding.
+.TP
+.B "long int *p_t_value"
+Pointer to output time value.
+.SH "DESCRIPTION"
+Fetch a time_t value from a VF property.
+.SH "RETURNS"
+TRUE iff foudn & converted OK.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3)
diff --git a/doc/vf_get_property.3 b/doc/vf_get_property.3
new file mode 100644
index 0000000..828e414
--- /dev/null
+++ b/doc/vf_get_property.3
@@ -0,0 +1,128 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_get_property" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_get_property \- vf_get_property()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_get_property
+.br
+(
+.br
+ VF_PROP_T **pp_prop,
+.br
+ VF_OBJECT_T *p_object,
+.br
+ vf_get_t ops,
+.br
+ const char *p_group,
+.br
+ const char *p_name,
+.br
+ const char *p_qualifier,
+.br
+ ...
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T **pp_prop"
+Output pointer.
+.TP
+.B "VF_OBJECT_T *p_object"
+Object to add to.
+.TP
+.B "vf_get_t ops"
+Search flags.
+.TP
+.B "const char *p_group"
+Group name if any.
+.TP
+.B "const char *p_name"
+Name of tag.
+.TP
+.B "const char *p_qualifier"
+First qualifier if any.
+.TP
+.B "..."
+Subequent qualifiers.
+.SH "DESCRIPTION"
+Basic searching function locating elements of the VOBJECT by qualified
+name. The function is a varargs function (like sprintf) and the list
+of arguments must be NULL terminated (hence the appearance of the
+p_qualifier argument in the arglist). Valid calls might be:
+
+vf_get_property(&p_out, p_object, VFGP_FIND, NULL, "N", NULL);
+.br
+- Find and return "N" properties. If there are none, return FALSE.
+
+Vf_get_property(&p_out, p_object, VFGP_FIND, NULL, "TEL", "WORK", NULL);
+.br
+- Find and return "TEL" entries qualified by the "work" attribute
+(ie. Work phone numbers). If there are none, return FALSE.
+
+Vf_get_property(&p_out, p_object, VFGP_GET, NULL, "TEL", "WORK", NULL);
+.br
+- Find and return work phone number. The entry is automatically
+added if not pre-existing.
+
+Vf_get_property(&p_out, p_object, VFGP_GET, NULL, "TEL", "WORK", NULL);
+.br
+- Find and return work phone numbers in the group identifier by the "ME"
+identifier. The entry is automatically added if not pre-existing.
+
+Vf_get_property(&p_out, p_object, VFGP_FIND, "ME", "*", NULL);
+.br
+- Effectively enumerates all entries in the "ME" group.
+
+A pointer to the first property matching the search criteria is returned
+via the pp_prop argument. The search actually locates all such matches
+and pointer to subsequent entries (if there are >1) may be found by
+calling the vf_get_next_property() function.
+
+The tags may occur in any order _except_ that the p_name must be first.
+
+Note that the VF_PROP_T returned by pp_prop is an opaque type and the
+functions vf_get_prop_xxxx() etc. Must be used to locate real "values".
+
+Cached search results (the list enumerated by subsequent calls to the
+vf_get_next_property() function) are maintained through the use of a
+a single internal pointer therefore this method is not thread safe.
+.SH "RETURNS"
+TRUE iff found/added successfully. Ptr to prop returned via pp_prop.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_get_property_ex.3 b/doc/vf_get_property_ex.3
new file mode 100644
index 0000000..9937b3f
--- /dev/null
+++ b/doc/vf_get_property_ex.3
@@ -0,0 +1,91 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_get_property_ex" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_get_property_ex \- vf_get_property_ex()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_get_property_ex
+.br
+(
+.br
+ VF_PROP_T **pp_prop,
+.br
+ VF_OBJECT_T *p_object,
+.br
+ vf_get_t ops,
+.br
+ const char *p_group,
+.br
+ const char *p_name,
+.br
+ const char *p_qualifier,
+.br
+ char args
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T **pp_prop"
+Output pointer.
+.TP
+.B "VF_OBJECT_T *p_object"
+Object to search.
+.TP
+.B "vf_get_t ops"
+Search flags.
+.TP
+.B "const char *p_group"
+Group name if any.
+.TP
+.B "const char *p_name"
+Name of tag.
+.TP
+.B "const char *p_qualifier"
+First qualifier if any.
+.TP
+.B "char args"
+Argument list.
+.SH "DESCRIPTION"
+The grunt behind vf_get_property(). Manages the search as described
+vf_get_property() but takes the list of arguments as a va_list.
+This function should be used when writing higher layer functions
+which take varargs (eg. DDX functions).
+.SH "RETURNS"
+TRUE iff found/added successfully. Ptr to prop returned via pp_prop.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_is_modified.3 b/doc/vf_is_modified.3
new file mode 100644
index 0000000..9dab0df
--- /dev/null
+++ b/doc/vf_is_modified.3
@@ -0,0 +1,52 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_is_modified" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_is_modified \- vf_is_modified()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_is_modified(VF_OBJECT_T *p_object);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_OBJECT_T *p_object"
+The object.
+.SH "DESCRIPTION"
+Fetch status of modified flag.
+.SH "RETURNS"
+TRUE iff modified since list read/write.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_parse_end.3 b/doc/vf_parse_end.3
new file mode 100644
index 0000000..80daf5c
--- /dev/null
+++ b/doc/vf_parse_end.3
@@ -0,0 +1,54 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_parse_end" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_parse_end \- vf_parse_end()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_parse_end(VF_PARSER_T *p_parse);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PARSER_T *p_parse"
+The parser.
+.SH "DESCRIPTION"
+Ensure parse completion, release memory associated with the parser.
+
+See notes for vf_parse_init().
+.SH "RETURNS"
+TRUE <=> parse complete with no error.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_parse_init.3 b/doc/vf_parse_init.3
new file mode 100644
index 0000000..3ffcc51
--- /dev/null
+++ b/doc/vf_parse_init.3
@@ -0,0 +1,93 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_parse_init" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_parse_init \- vf_parse_init()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_parse_init
+.br
+(
+.br
+ VF_PARSER_T **pp_parser,
+.br
+ VF_OBJECT_T **pp_object
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PARSER_T **pp_parser"
+Ptr to allocated parser.
+.TP
+.B "VF_OBJECT_T **pp_object"
+The object we're parsing into.
+.SH "DESCRIPTION"
+Allocate and initialise a parser. To parse a VCARD (or any vObject)
+a user allocates a parser, pushes data through it using vf_parse_text()
+and finally calls vf_parse_end():
+
+VF_PARSER_T *p_parser;
+
+if (vf_parse_init(&p_parser, pp_object))
+{
+do
+{
+char buffer[...];
+Int numchars;
+
+numchars = get_chars_from_somewhere(buffer, ...);
+
+Ret = vf_parse_text(p_parser, buffer, numchars);
+}
+while (ret && (0 < charsread))
+;
+
+if (!vf_parse_end(p_parser))
+{
+ret = FALSE;
+}
+}
+
+A parser allocated by vf_parse_init(), must be deallocated by calling
+vf_parse_end() whether or not parsing succeeds. Also, parsing may not
+be complete (ie. Values may be held buffered and not evaluated fully
+or assigned to a VF_OBJECT_T) untill the final call to vf_parse_end()
+=> after a vf_parse_init() you _must_ vf_parse_end().
+.SH "RETURNS"
+TRUE iff parser allocated successfully.
+.SH "SEE ALSO"
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_parse_text.3 b/doc/vf_parse_text.3
new file mode 100644
index 0000000..0c21fc7
--- /dev/null
+++ b/doc/vf_parse_text.3
@@ -0,0 +1,70 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_parse_text" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_parse_text \- vf_parse_text()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_parse_text
+.br
+(
+.br
+ VF_PARSER_T *p_parse,
+.br
+ char *p_chars,
+.br
+ int numchars
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PARSER_T *p_parse"
+The parser.
+.TP
+.B "char *p_chars"
+New characters to parse into object.
+.TP
+.B "int numchars"
+Number of new characters.
+.SH "DESCRIPTION"
+Parse indicated text into the object associated with the VPARSE_T.
+
+See notes for vf_parse_init().
+.SH "RETURNS"
+TRUE <=> allocation & syntax OK, FALSE else.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_period_string_to_time.3 b/doc/vf_period_string_to_time.3
new file mode 100644
index 0000000..56682f2
--- /dev/null
+++ b/doc/vf_period_string_to_time.3
@@ -0,0 +1,65 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_period_string_to_time" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_period_string_to_time \- vf_period_string_to_time()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_period_string_to_time
+.br
+(
+.br
+ VF_ISO8601_PERIOD_T *p_period,
+.br
+ const char *p_string
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_ISO8601_PERIOD_T *p_period"
+Output time value.
+.TP
+.B "const char *p_string"
+Input string.
+.SH "DESCRIPTION"
+Convert period definition string to time value. The format is
+P[aaaY][bbbM][cccW][dddD]T[eeeH][fffM][gggS] where 'aaa' is a
+number of years, bbb months etc.
+.SH "RETURNS"
+TRUE <=> conversion OK, FALSE else.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_period_time_to_string.3 b/doc/vf_period_time_to_string.3
new file mode 100644
index 0000000..ffdfe5c
--- /dev/null
+++ b/doc/vf_period_time_to_string.3
@@ -0,0 +1,63 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_period_time_to_string" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_period_time_to_string \- vf_period_time_to_string()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern uint32_t vf_period_time_to_string
+.br
+(
+.br
+ char *p_string,
+.br
+ const VF_ISO8601_PERIOD_T *p_period
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "char *p_string"
+Output string.
+.TP
+.B "const VF_ISO8601_PERIOD_T *p_period"
+Input period value.
+.SH "DESCRIPTION"
+Convert a VF_ISO8601_PERIOD_T to a string.
+.SH "RETURNS"
+Number of characters written.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_read_file.3 b/doc/vf_read_file.3
new file mode 100644
index 0000000..406736d
--- /dev/null
+++ b/doc/vf_read_file.3
@@ -0,0 +1,63 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_read_file" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_read_file \- vf_read_file()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_read_file
+.br
+(
+.br
+ VF_OBJECT_T **pp_object,
+.br
+ const char *p_name
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_OBJECT_T **pp_object"
+Pointer to output object.
+.TP
+.B "const char *p_name"
+Name of file to read.
+.SH "DESCRIPTION"
+Reads indicated VOBJECT_T file.
+.SH "RETURNS"
+TRUE <=> read OK, FALSE else.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_set_prop_name_string.3 b/doc/vf_set_prop_name_string.3
new file mode 100644
index 0000000..82e55ac
--- /dev/null
+++ b/doc/vf_set_prop_name_string.3
@@ -0,0 +1,68 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_set_prop_name_string" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_set_prop_name_string \- vf_set_prop_name_string()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_set_prop_name_string
+.br
+(
+.br
+ VF_PROP_T *p_prop,
+.br
+ uint32_t n_string,
+.br
+ const char *p_string
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+Property we're setting a value in.
+.TP
+.B "uint32_t n_string"
+Index to string.
+.TP
+.B "const char *p_string"
+Pointer to string.
+.SH "DESCRIPTION"
+Set n'th name string.
+.SH "RETURNS"
+TRUE iff allocation OK, FALSE else.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_set_prop_value.3 b/doc/vf_set_prop_value.3
new file mode 100644
index 0000000..d41e4c9
--- /dev/null
+++ b/doc/vf_set_prop_value.3
@@ -0,0 +1,82 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_set_prop_value" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_set_prop_value \- vf_set_prop_value()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_set_prop_value
+.br
+(
+.br
+ VF_PROP_T *p_prop,
+.br
+ void *p_value,
+.br
+ uint32_t n_param,
+.br
+ vf_encoding_t encoding,
+.br
+ bool_t copy
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+The property.
+.TP
+.B "void *p_value"
+Pointer to the data.
+.TP
+.B "uint32_t n_param"
+Data size or index.
+.TP
+.B "vf_encoding_t encoding"
+Encoding in use.
+.TP
+.B "bool_t copy"
+Copy the data?.
+.SH "DESCRIPTION"
+Set values associated with a property.
+
+Passing a value of encoding not the same as the current property
+encoding will cause the property contents to be freed prior to
+setting the indicated value.
+.SH "RETURNS"
+TRUE <=> re-allocation success & encoding correct, FALSE else.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_set_prop_value_base64.3 b/doc/vf_set_prop_value_base64.3
new file mode 100644
index 0000000..70821f1
--- /dev/null
+++ b/doc/vf_set_prop_value_base64.3
@@ -0,0 +1,73 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_set_prop_value_base64" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_set_prop_value_base64 \- vf_set_prop_value_base64()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_set_prop_value_base64
+.br
+(
+.br
+ VF_PROP_T *p_prop,
+.br
+ const uint8_t *p_data,
+.br
+ uint32_t length,
+.br
+ bool_t copy
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+Property we're setting a value in.
+.TP
+.B "const uint8_t *p_data"
+Pointer to the binary data.
+.TP
+.B "uint32_t length"
+Length of the binary data.
+.TP
+.B "bool_t copy"
+Copy or keep pointer.
+.SH "DESCRIPTION"
+Set the value of a property.
+.SH "RETURNS"
+TRUE <=> set successfully.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_set_prop_value_object.3 b/doc/vf_set_prop_value_object.3
new file mode 100644
index 0000000..85d96c2
--- /dev/null
+++ b/doc/vf_set_prop_value_object.3
@@ -0,0 +1,63 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_set_prop_value_object" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_set_prop_value_object \- vf_set_prop_value_object()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_set_prop_value_object
+.br
+(
+.br
+ VF_PROP_T *p_prop,
+.br
+ VF_OBJECT_T *p_object
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+Not Documented.
+.TP
+.B "VF_OBJECT_T *p_object"
+Not Documented.
+.SH "DESCRIPTION"
+Set the value of the indicated property to be a VOBJECT.
+.SH "RETURNS"
+TRUE <=> set successfully.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_set_prop_value_string.3 b/doc/vf_set_prop_value_string.3
new file mode 100644
index 0000000..47cb2d7
--- /dev/null
+++ b/doc/vf_set_prop_value_string.3
@@ -0,0 +1,68 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_set_prop_value_string" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_set_prop_value_string \- vf_set_prop_value_string()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_set_prop_value_string
+.br
+(
+.br
+ VF_PROP_T *p_prop,
+.br
+ uint32_t n_string,
+.br
+ const char *p_string
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+Property we're setting a value in.
+.TP
+.B "uint32_t n_string"
+Index to string.
+.TP
+.B "const char *p_string"
+Pointer to string.
+.SH "DESCRIPTION"
+Set the value of a property.
+.SH "RETURNS"
+TRUE <=> set successfully.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_set_prop_value_time.3 b/doc/vf_set_prop_value_time.3
new file mode 100644
index 0000000..68af0f9
--- /dev/null
+++ b/doc/vf_set_prop_value_time.3
@@ -0,0 +1,68 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_set_prop_value_time" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_set_prop_value_time \- vf_set_prop_value_time()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_set_prop_value_time
+.br
+(
+.br
+ VF_PROP_T *p_prop,
+.br
+ uint32_t n_string,
+.br
+ const long int t_value
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+The property.
+.TP
+.B "uint32_t n_string"
+Which string we're encoding to.
+.TP
+.B "const long int t_value"
+Time value.
+.SH "DESCRIPTION"
+Set a time_t value into a VF property.
+.SH "RETURNS"
+TRUE iff property added & set OK.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_set_property_from_file.3 b/doc/vf_set_property_from_file.3
new file mode 100644
index 0000000..fc0d43f
--- /dev/null
+++ b/doc/vf_set_property_from_file.3
@@ -0,0 +1,68 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_set_property_from_file" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_set_property_from_file \- vf_set_property_from_file()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_set_property_from_file
+.br
+(
+.br
+ VF_PROP_T *p_prop,
+.br
+ vf_encoding_t encoding,
+.br
+ const char *p_filename
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "VF_PROP_T *p_prop"
+The property.
+.TP
+.B "vf_encoding_t encoding"
+Encoding to use.
+.TP
+.B "const char *p_filename"
+Source filename.
+.SH "DESCRIPTION"
+Loads the indicated file into memory and sets the indicated property.
+.SH "RETURNS"
+TRUE iff succeded, FALSE else.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_write_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)
diff --git a/doc/vf_write_file.3 b/doc/vf_write_file.3
new file mode 100644
index 0000000..ebc0b74
--- /dev/null
+++ b/doc/vf_write_file.3
@@ -0,0 +1,70 @@
+.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
+.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
+.TH "vf_write_file" 3 "30 April 2003" "c2man vf_iface.h"
+.SH "NAME"
+vf_write_file \- vf_write_file()
+.SH "SYNOPSIS"
+.ft B
+#include <../vformat/vf_iface.h>
+.sp
+extern bool_t vf_write_file
+.br
+(
+.br
+ const char *p_name,
+.br
+ VF_OBJECT_T *p_object,
+.br
+ bool_t write_all
+.br
+);
+.ft R
+.SH "PARAMETERS"
+.TP
+.B "const char *p_name"
+Outpt filename.
+.TP
+.B "VF_OBJECT_T *p_object"
+The object to write.
+.TP
+.B "bool_t write_all"
+Should write p_next as well?.
+.SH "DESCRIPTION"
+Write indicated vobject to file. For lists of objects (eg. Read from
+a phonebook) the write_all parameter allows the caller to control if
+the library writes the entire list or just the head item.
+.SH "RETURNS"
+TRUE <=> written OK, FALSE else.
+.SH "SEE ALSO"
+vf_parse_init(3),
+vf_parse_text(3),
+vf_parse_end(3),
+vf_read_file(3),
+vf_get_next_object(3),
+vf_create_object(3),
+vf_get_object_type(3),
+vf_get_property(3),
+vf_get_property_ex(3),
+vf_get_next_property(3),
+vf_get_prop_value(3),
+vf_set_prop_value(3),
+vf_get_prop_value_string(3),
+vf_get_prop_name_string(3),
+vf_set_prop_name_string(3),
+vf_get_prop_name(3),
+vf_get_prop_value_object(3),
+vf_set_prop_value_object(3),
+vf_set_prop_value_string(3),
+vf_set_prop_value_base64(3),
+vf_get_prop_value_base64(3),
+vf_set_property_from_file(3),
+vf_delete_object(3),
+vf_delete_prop(3),
+vf_find_prop_qual_index(3),
+vf_is_modified(3),
+vf_find_charset(3),
+vf_date_string_to_time(3),
+vf_period_string_to_time(3),
+vf_period_time_to_string(3),
+vf_set_prop_value_time(3),
+vf_get_prop_value_time(3)