Merge branch 'master' of git://git.openpandora.org/pandora-libraries
[pandora-libraries.git] / include / pnd_pxml.h
index 4bca9b3..f381dde 100644 (file)
@@ -9,6 +9,10 @@ extern "C" {
 // this code is for very basic PXML.xml file parsing
 
 #define PXML_FILENAME "PXML.xml" /* a specification defined name */
+#define PXML_TAGHEAD "<PXML" /* case insensitive; allow for trailing attributes */
+#define PXML_TAGFOOT "</PXML>" /* case insensitive */
+
+#define PXML_MAXAPPS 20 /* max number of <application>'s within a single PXML */
 
 // use this handle to interact with PXML; this hides the mechanics of parsing a PXML file so that
 // it can be upgraded with impacting applications
@@ -16,7 +20,8 @@ typedef void* pnd_pxml_handle;
 
 /* pxml_fetch() will return NULL on fail, otherwise a valid handle which may be further queried
  */
-pnd_pxml_handle pnd_pxml_fetch ( char *fullpath );
+pnd_pxml_handle *pnd_pxml_fetch ( char *fullpath );
+pnd_pxml_handle *pnd_pxml_fetch_buffer ( char *filename, char *buffer );
 void pnd_pxml_delete ( pnd_pxml_handle h );
 
 /* overrides() allow for customization of a PXML that persists; ie: An application might be sitting
@@ -35,12 +40,53 @@ signed char pnd_pxml_merge_override ( pnd_pxml_handle h, char *searchpath );
 
 /* these accessor functions will return READ ONLY char*s; do not free them or modify them.
  */
-char *pnd_pxml_get_app_name ( pnd_pxml_handle h );
-char *pnd_pxml_get_icon_path ( pnd_pxml_handle h );
+char *pnd_pxml_get_app_name_en ( pnd_pxml_handle h );
+char *pnd_pxml_get_app_name_de ( pnd_pxml_handle h );
+char *pnd_pxml_get_app_name_it ( pnd_pxml_handle h );
+char *pnd_pxml_get_app_name_fr ( pnd_pxml_handle h );
+char *pnd_pxml_get_app_name ( pnd_pxml_handle h, char *iso_lang );
 char *pnd_pxml_get_unique_id ( pnd_pxml_handle h );
-char *pnd_pxml_get_primary_category ( pnd_pxml_handle h );
-char *pnd_pxml_get_exec_path ( pnd_pxml_handle h );
+char *pnd_pxml_get_standalone ( pnd_pxml_handle h );
+char *pnd_pxml_get_icon ( pnd_pxml_handle h );
+char *pnd_pxml_get_description_en ( pnd_pxml_handle h );
+char *pnd_pxml_get_description_de ( pnd_pxml_handle h );
+char *pnd_pxml_get_description_it ( pnd_pxml_handle h );
+char *pnd_pxml_get_description_fr ( pnd_pxml_handle h );
+char *pnd_pxml_get_description ( pnd_pxml_handle h, char *iso_lang);
+char *pnd_pxml_get_previewpic1 ( pnd_pxml_handle h );
+char *pnd_pxml_get_previewpic2 ( pnd_pxml_handle h );
+char *pnd_pxml_get_author_name ( pnd_pxml_handle h );
+char *pnd_pxml_get_author_website ( pnd_pxml_handle h );
+char *pnd_pxml_get_version_major ( pnd_pxml_handle h );
+char *pnd_pxml_get_version_minor ( pnd_pxml_handle h );
+char *pnd_pxml_get_version_release ( pnd_pxml_handle h );
+char *pnd_pxml_get_version_build ( pnd_pxml_handle h );
+char *pnd_pxml_get_exec ( pnd_pxml_handle h );
+char *pnd_pxml_get_execargs ( pnd_pxml_handle h );
+char *pnd_pxml_get_exec_option_no_x11 ( pnd_pxml_handle h );
+char *pnd_pxml_get_main_category ( pnd_pxml_handle h );
+char *pnd_pxml_get_subcategory1 ( pnd_pxml_handle h );
+char *pnd_pxml_get_subcategory2 ( pnd_pxml_handle h );
+char *pnd_pxml_get_altcategory ( pnd_pxml_handle h );
+char *pnd_pxml_get_altsubcategory1 ( pnd_pxml_handle h );
+char *pnd_pxml_get_altsubcategory2 ( pnd_pxml_handle h );
+char *pnd_pxml_get_osversion_major ( pnd_pxml_handle h );
+char *pnd_pxml_get_osversion_minor ( pnd_pxml_handle h );
+char *pnd_pxml_get_osversion_release ( pnd_pxml_handle h );
+char *pnd_pxml_get_osversion_build ( pnd_pxml_handle h );
+char *pnd_pxml_get_associationitem1_name ( pnd_pxml_handle h );
+char *pnd_pxml_get_associationitem1_filetype ( pnd_pxml_handle h );
+char *pnd_pxml_get_associationitem1_parameter ( pnd_pxml_handle h );
+char *pnd_pxml_get_associationitem2_name ( pnd_pxml_handle h );
+char *pnd_pxml_get_associationitem2_filetype ( pnd_pxml_handle h );
+char *pnd_pxml_get_associationitem2_parameter ( pnd_pxml_handle h );
+char *pnd_pxml_get_associationitem3_name ( pnd_pxml_handle h );
+char *pnd_pxml_get_associationitem3_filetype ( pnd_pxml_handle h );
+char *pnd_pxml_get_associationitem3_parameter ( pnd_pxml_handle h );
 char *pnd_pxml_get_clockspeed ( pnd_pxml_handle h );
+char *pnd_pxml_get_background ( pnd_pxml_handle h );
+char *pnd_pxml_get_startdir ( pnd_pxml_handle h );
+char *pnd_pxml_get_mkdir ( pnd_pxml_handle h );
 
 // for 'set' functions, pass NULL value to delete existing value without setting new one
 void pnd_pxml_set_app_name ( pnd_pxml_handle h, char *v );
@@ -48,20 +94,26 @@ void pnd_pxml_set_app_name ( pnd_pxml_handle h, char *v );
 /* utilities
  */
 unsigned char pnd_is_pxml_valid_app ( pnd_pxml_handle h ); // returns 1 when pxml seems like a valid application
+unsigned char pnd_pxml_is_affirmative ( char *v ); // return 1 for 'Y' or '!'
+
+typedef struct
+{
+       char *language;
+       char *string;
+} pnd_localized_string_t;
 
 typedef struct
 {
-       char *title_en;
-       char *title_de;
-       char *title_it;
-       char *title_fr;
+        unsigned char subapp_number; // 0 for 'only app'; 1+ for <application> # .. first <application> is 1.
+       pnd_localized_string_t *titles;
+       int titles_c;
+       int titles_alloc_c;
        char *unique_id;
        char *standalone;
        char *icon;
-       char *description_en;
-       char *description_de;
-       char *description_it;
-       char *description_fr;
+       pnd_localized_string_t *descriptions;
+       int descriptions_c;
+       int descriptions_alloc_c;
        char *previewpic1;
        char *previewpic2;
        char *author_name;
@@ -71,6 +123,7 @@ typedef struct
        char *version_release;
        char *version_build;
        char *exec;
+       char *execargs;
        char *main_category;
        char *subcategory1;
        char *subcategory2;
@@ -93,6 +146,10 @@ typedef struct
        char *clockspeed;
        char *background;
        char *startdir;
+       char *exec_no_x11;
+       char *package_name;
+       char *package_release_date;
+        char *mkdir_sp; // a colon separated list of paths to be mkdir'd (silently fail) when pnd is autodiscovered. path is always relative to the root of the hosting device.
 
 }  pnd_pxml_t;