projects
/
dana
/
openbox.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a6141fe
)
parse Categories tag and save them as an array of GQuarks
author
Dana Jansens
<danakj@orodu.net>
Thu, 3 Jun 2010 17:09:38 +0000
(13:09 -0400)
committer
Dana Jansens
<danakj@orodu.net>
Thu, 3 Jun 2010 17:09:38 +0000
(13:09 -0400)
obt/link.c
patch
|
blob
|
history
diff --git
a/obt/link.c
b/obt/link.c
index
bdddcf5
..
a1d0827
100644
(file)
--- a/
obt/link.c
+++ b/
obt/link.c
@@
-49,6
+49,9
@@
struct _ObtLink {
glib has something i can use. */
gchar **mime; /*!< Mime types the app can open */
glib has something i can use. */
gchar **mime; /*!< Mime types the app can open */
+ GQuark *categories; /*!< Array of quarks representing the
+ application's categories */
+
ObtLinkAppStartup startup;
gchar *startup_wmclass;
} app;
ObtLinkAppStartup startup;
gchar *startup_wmclass;
} app;
@@
-164,7
+167,21
@@
ObtLink* obt_link_from_ddfile(const gchar *ddname, GSList *paths,
}
}
}
}
- /* XXX there's more app specific stuff */
+ if ((v = g_hash_table_lookup(keys, "Categories"))) {
+ gulong i;
+ gchar *end;
+
+ link->d.app.categories = g_new(GQuark, v->value.strings.n);
+
+ c = end = v->value.strings.s;
+ for (i = 0; i < v->value.strings.n; ++i) {
+ while (*end) ++end;
+ link->d.app.categories[i] = g_quark_from_string(c);
+ c = end = end+1; /* next */
+ }
+ }
+
+ /* XXX do something with mime types */
}
else if (link->type == OBT_LINK_TYPE_URL) {
v = g_hash_table_lookup(keys, "URL");
}
else if (link->type == OBT_LINK_TYPE_URL) {
v = g_hash_table_lookup(keys, "URL");
@@
-173,6
+190,9
@@
ObtLink* obt_link_from_ddfile(const gchar *ddname, GSList *paths,
v->value.string = NULL;
}
v->value.string = NULL;
}
+ /* destroy the parsing info */
+ g_hash_table_destroy(groups);
+
return link;
}
return link;
}
@@
-184,6
+204,18
@@
void obt_link_ref(ObtLink *dd)
void obt_link_unref(ObtLink *dd)
{
if (--dd->ref < 1) {
void obt_link_unref(ObtLink *dd)
{
if (--dd->ref < 1) {
+ g_free(dd->name);
+ g_free(dd->generic);
+ g_free(dd->comment);
+ g_free(dd->icon);
+ if (dd->type == OBT_LINK_TYPE_APPLICATION) {
+ g_free(dd->d.app.exec);
+ g_free(dd->d.app.wdir);
+ g_free(dd->d.app.categories);
+ g_free(dd->d.app.startup_wmclass);
+ }
+ else if (dd->type == OBT_LINK_TYPE_URL)
+ g_free(dd->d.url.addr);
g_slice_free(ObtLink, dd);
}
}
g_slice_free(ObtLink, dd);
}
}