* MA 02110-1301, USA.
*/
-#ifndef __VCARD_H__
-#define __VCARD_H__
+#ifndef __VCARD_PARSER_H__
+#define __VCARD_PARSER_H__
#include <glib.h>
G_BEGIN_DECLS
+#include <globals.h>
+
typedef enum {
// vCard 2.1 properties and up
+ // https://github.com/emacsmirror/addressbook/blob/master/vcard-21.txt
N = 0,
FN,
PHOTO,
VERSION,
KEY,
TZ,
+ SOURCE,
+ AGENT, // Removed in vCard 4.0
+ PROFILE, // Removed in vCard 4.0
// vCard 3.0 properties
+ // https://tools.ietf.org/html/rfc2426
CATEGORIES,
SORT_STRING,
PRODID,
NICKNAME,
+ NAME, // Removed in vCard 4.0
CLASS, // Removed in vCard 4.0
// rfc2739 properties
FBURL,
// rfc4770 properties
IMPP,
// vCard 4.0 properties
- SOURCE,
+ // https://tools.ietf.org/html/rfc6350
XML,
ANNIVERSARY,
CLIENTPIDMAP,
VCARD_PROPERTIES,
} Property;
-gchar* Proterties[VCARD_PROPERTIES+1] = {
- "N",
- "FN",
- "PHOTO",
- "BDAY",
- "ADR",
- "LABEL",
- "TEL",
- "EMAIL",
- "MAILER",
- "GEO",
- "TITLE",
- "ROLE",
- "LOGO",
- "ORG",
- "NOTE",
- "REV",
- "SOUND",
- "URL",
- "UID",
- "VERSION",
- "KEY",
- "TZ",
- "CATEGORIES",
- "SORT-STRING",
- "PRODID",
- "NICKNAME",
- "CLASS",
- "FBURL",
- "CAPURI",
- "CALURI",
- "CALADRURI",
- "IMPP",
- "SOURCE",
- "XML",
- "ANNIVERSARY",
- "CLIENTPIDMAP",
- "LANG",
- "GENDER",
- "KIND",
- "MEMBER",
- "RELATED",
- "BIRTHPLACE",
- "DEATHPLACE",
- "DEATHDATE",
- "EXPERTISE",
- "HOBBY",
- "INTEREST",
- "ORG-DIRECTORY",
- NULL
-};
+typedef enum {
+ VCARD_PARSER_OK,
+ VCARD_PARSER_VERSION_MISSING,
+ VCARD_PARSER_VERSION_MISMATCH,
+ VCARD_PARSER_ATTRIBUTE_VERSION_MISMATCH,
+ VCARD_PARSER_BAD_FORMAT,
+ VCARD_PARSER_ERROR,
+} VCardParserResponse;
-G_END_DECLS
+typedef struct {
+ gchar* name;
+ gchar* value;
+} VCardProperty;
+
+VCardVersion str_2_vcard_version(const gchar* version);
+gchar* vcard_version_2_str(VCardVersion version);
+Property vcard_max_property(VCardVersion version);
+VCardParserResponse vcard_parse_text(const gchar* text, VCardVersion* version, GHashTable** vcard);
+void destroy_hash_table(GHashTable* ht);
-gboolean vcard_parse_text();
+G_END_DECLS
#endif