diff options
| author | Dana Jansens <danakj@orodu.net> | 2010-05-21 20:03:21 -0400 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2010-05-21 20:03:21 -0400 |
| commit | 0c8c9caba6f529c11b04643d24a5a503f49a245b (patch) | |
| tree | df20d71b526229f964212facfc5fdea33d5f71a4 /obt/ddparse.c | |
| parent | 632eb082277eb74d5e64beda779eee5b4456ca18 (diff) | |
parse OnlyShowIn/NotShowIn
Diffstat (limited to 'obt/ddparse.c')
| -rw-r--r-- | obt/ddparse.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/obt/ddparse.c b/obt/ddparse.c index 6aee25e7..c4be8e1e 100644 --- a/obt/ddparse.c +++ b/obt/ddparse.c @@ -80,6 +80,7 @@ static void parse_value_free(ObtDDParseValue *v) case OBT_DDPARSE_BOOLEAN: case OBT_DDPARSE_NUMERIC: case OBT_DDPARSE_ENUM_APPLICATION: + case OBT_DDPARSE_ENVIRONMENTS: break; default: g_assert_not_reached(); @@ -183,6 +184,69 @@ static gchar* parse_value_string(const gchar *in, return o; } +static guint parse_value_environments(const gchar *in, + const ObtDDParse *const parse, + gboolean *error) +{ + const gchar *s; + int i; + guint mask = 0; + + s = in; + while (*s) { + switch (*(s++)) { + case 'G': + if (strcmp(s, "NOME") == 0) { + mask |= OBT_LINK_ENV_GNOME; + s += 4; + } + break; + case 'K': + if (strcmp(s, "DE") == 0) { + mask |= OBT_LINK_ENV_KDE; + s += 2; + } + break; + case 'L': + if (strcmp(s, "XDE") == 0) { + mask |= OBT_LINK_ENV_LXDE; + s += 3; + } + break; + case 'R': + if (strcmp(s, "OX") == 0) { + mask |= OBT_LINK_ENV_ROX; + s += 2; + } + break; + case 'X': + if (strcmp(s, "FCE") == 0) { + mask |= OBT_LINK_ENV_XFCE; + s += 3; + } + break; + case 'O': + switch (*(s++)) { + case 'l': + if (strcmp(s, "d") == 0) { + mask |= OBT_LINK_ENV_OLD; + s += 1; + } + break; + case 'P': + if (strcmp(s, "ENBOX") == 0) { + mask |= OBT_LINK_ENV_OPENBOX; + s += 5; + } + break; + } + } + /* find the next string, or the end of the sequence */ + while (*s && *s != ';') ++s; + } + return mask; +} + static gboolean parse_value_boolean(const gchar *in, const ObtDDParse *const parse, gboolean *error) @@ -559,6 +623,9 @@ static gboolean parse_desktop_entry_value(gchar *key, const gchar *val, return FALSE; } break; + case OBT_DDPARSE_ENVIRONMENTS: + v.value.environments = parse_value_environments(val, parse, error); + break; default: g_assert_not_reached(); } |
