summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark McLoughlin <mark@skynet.ie>2002-07-12 02:08:37 +0000
committerMark McLoughlin <mmclouglin@src.gnome.org>2002-07-12 02:08:37 +0000
commit530ccb344249c016f1256a2e5612cefc7805c17a (patch)
tree5f0cf981d446abdc4922ba7a767f32ab73762588
parent97adc1833a5b73fdfbf1047ac94680ae4d4295bc (diff)
downloadgnome-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/ChangeLog6
-rw-r--r--libgnome-desktop/gnome-desktop-item.c53
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;
}
/**