diff options
author | Mark McLoughlin <mark@skynet.ie> | 2002-07-12 02:08:37 +0000 |
---|---|---|
committer | Mark McLoughlin <mmclouglin@src.gnome.org> | 2002-07-12 02:08:37 +0000 |
commit | 530ccb344249c016f1256a2e5612cefc7805c17a (patch) | |
tree | 5f0cf981d446abdc4922ba7a767f32ab73762588 | |
parent | 97adc1833a5b73fdfbf1047ac94680ae4d4295bc (diff) | |
download | gnome-desktop-530ccb344249c016f1256a2e5612cefc7805c17a.tar.gz |
be a bit smarter with strcmps, switch on the first letter and then
2002-07-12 Mark McLoughlin <mark@skynet.ie>
* gnome-desktop-item.c: (type_from_string): be a bit
smarter with strcmps, switch on the first letter and
then compare.
-rw-r--r-- | libgnome-desktop/ChangeLog | 6 | ||||
-rw-r--r-- | libgnome-desktop/gnome-desktop-item.c | 53 |
2 files changed, 41 insertions, 18 deletions
diff --git a/libgnome-desktop/ChangeLog b/libgnome-desktop/ChangeLog index b5ea381d..d9e37092 100644 --- a/libgnome-desktop/ChangeLog +++ b/libgnome-desktop/ChangeLog @@ -1,3 +1,9 @@ +2002-07-12 Mark McLoughlin <mark@skynet.ie> + + * gnome-desktop-item.c: (type_from_string): be a bit + smarter with strcmps, switch on the first letter and + then compare. + 2002-06-19 Arvind Samptur <arvind.samptur@wipro.com> * gnome-ditem-edit.c: (setup_option) Get the diff --git a/libgnome-desktop/gnome-desktop-item.c b/libgnome-desktop/gnome-desktop-item.c index cce3394d..9a37b4ad 100644 --- a/libgnome-desktop/gnome-desktop-item.c +++ b/libgnome-desktop/gnome-desktop-item.c @@ -284,28 +284,45 @@ readbuf_close (ReadBuf *rb) g_free (rb); } -static GnomeDesktopItemType G_GNUC_CONST +static GnomeDesktopItemType type_from_string (const char *type) { - if (type == NULL) { + if (!type) return GNOME_DESKTOP_ITEM_TYPE_NULL; - } else if (strcmp (type, "Application") == 0) { - return GNOME_DESKTOP_ITEM_TYPE_APPLICATION; - } else if (strcmp (type, "Link") == 0) { - return GNOME_DESKTOP_ITEM_TYPE_LINK; - } else if (strcmp (type, "FSDevice") == 0) { - return GNOME_DESKTOP_ITEM_TYPE_FSDEVICE; - } else if (strcmp (type, "MimeType") == 0) { - return GNOME_DESKTOP_ITEM_TYPE_MIME_TYPE; - } else if (strcmp (type, "Directory") == 0) { - return GNOME_DESKTOP_ITEM_TYPE_DIRECTORY; - } else if (strcmp (type, "Service") == 0) { - return GNOME_DESKTOP_ITEM_TYPE_SERVICE; - } else if (strcmp (type, "ServiceType") == 0) { - return GNOME_DESKTOP_ITEM_TYPE_SERVICE_TYPE; - } else { - return GNOME_DESKTOP_ITEM_TYPE_OTHER; + + switch (type [0]) { + case 'A': + if (!strcmp (type, "Application")) + return GNOME_DESKTOP_ITEM_TYPE_APPLICATION; + break; + case 'L': + if (!strcmp (type, "Link")) + return GNOME_DESKTOP_ITEM_TYPE_LINK; + break; + case 'F': + if (!strcmp (type, "FSDevice")) + return GNOME_DESKTOP_ITEM_TYPE_FSDEVICE; + break; + case 'M': + if (!strcmp (type, "MimeType")) + return GNOME_DESKTOP_ITEM_TYPE_MIME_TYPE; + break; + case 'D': + if (!strcmp (type, "Directory")) + return GNOME_DESKTOP_ITEM_TYPE_DIRECTORY; + break; + case 'S': + if (!strcmp (type, "Service")) + return GNOME_DESKTOP_ITEM_TYPE_SERVICE; + + else if (!strcmp (type, "ServiceType")) + return GNOME_DESKTOP_ITEM_TYPE_SERVICE_TYPE; + break; + default: + break; } + + return GNOME_DESKTOP_ITEM_TYPE_OTHER; } /** |