aboutsummaryrefslogtreecommitdiff
path: root/src/peerinfo/gnunet-peerinfo-gtk-flags.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/peerinfo/gnunet-peerinfo-gtk-flags.c')
-rw-r--r--src/peerinfo/gnunet-peerinfo-gtk-flags.c46
1 files changed, 18 insertions, 28 deletions
diff --git a/src/peerinfo/gnunet-peerinfo-gtk-flags.c b/src/peerinfo/gnunet-peerinfo-gtk-flags.c
index 6c45e97c..4970a098 100644
--- a/src/peerinfo/gnunet-peerinfo-gtk-flags.c
+++ b/src/peerinfo/gnunet-peerinfo-gtk-flags.c
@@ -81,10 +81,8 @@ GNUNET_PEERINFO_GTK_get_flag (const char *cc)
81 81
82 if (NULL == cc) 82 if (NULL == cc)
83 return NULL; 83 return NULL;
84 if ((0 == strcasecmp (cc, "edu")) || 84 if ((0 == strcasecmp (cc, "edu")) || (0 == strcasecmp (cc, "com")) ||
85 (0 == strcasecmp (cc, "com")) || 85 (0 == strcasecmp (cc, "net")) || (0 == strcasecmp (cc, "org")) ||
86 (0 == strcasecmp (cc, "net")) ||
87 (0 == strcasecmp (cc, "org")) ||
88 (0 == strcasecmp (cc, "gov")) || (0 == strcasecmp (cc, "mil"))) 86 (0 == strcasecmp (cc, "gov")) || (0 == strcasecmp (cc, "mil")))
89 cc = "us"; 87 cc = "us";
90 if (0 == strcasecmp (cc, "uk")) 88 if (0 == strcasecmp (cc, "uk"))
@@ -93,51 +91,43 @@ GNUNET_PEERINFO_GTK_get_flag (const char *cc)
93 return NULL; 91 return NULL;
94 pos = flags_head; 92 pos = flags_head;
95 while (pos != NULL) 93 while (pos != NULL)
96 { 94 {
97 if (0 == strcmp (pos->cc, cc)) 95 if (0 == strcmp (pos->cc, cc))
98 return pos->flag; 96 return pos->flag;
99 pos = pos->next; 97 pos = pos->next;
100 } 98 }
101 mcc = GNUNET_strdup (cc); 99 mcc = GNUNET_strdup (cc);
102 for (i = 0; i < strlen (mcc); i++) 100 for (i = 0; i < strlen (mcc); i++)
103 mcc[i] = tolower (mcc[i]); 101 mcc[i] = tolower (mcc[i]);
104 dir = GNUNET_GTK_installation_get_path (GNUNET_OS_IPK_DATADIR); 102 dir = GNUNET_GTK_installation_get_path (GNUNET_OS_IPK_DATADIR);
105 GNUNET_asprintf (&fn, 103 GNUNET_asprintf (&fn, "%sgnunet-gtk%sflags%s%s.png", dir, DIR_SEPARATOR_STR,
106 "%sgnunet-gtk%sflags%s%s.png", 104 DIR_SEPARATOR_STR, mcc);
107 dir,
108 DIR_SEPARATOR_STR,
109 DIR_SEPARATOR_STR,
110 mcc);
111 GNUNET_free (dir); 105 GNUNET_free (dir);
112 flagBuf = gdk_pixbuf_new_from_file (fn, NULL); 106 flagBuf = gdk_pixbuf_new_from_file (fn, NULL);
113 pos = GNUNET_malloc (sizeof (struct Flag)); 107 pos = GNUNET_malloc (sizeof (struct Flag));
114 pos->cc = mcc; 108 pos->cc = mcc;
115 pos->flag = flagBuf; 109 pos->flag = flagBuf;
116 GNUNET_CONTAINER_DLL_insert (flags_head, 110 GNUNET_CONTAINER_DLL_insert (flags_head, flags_tail, pos);
117 flags_tail,
118 pos);
119 return flagBuf; 111 return flagBuf;
120} 112}
121 113
122 114
123/** 115/**
124 * Deallocate all cached flags. 116 * Deallocate all cached flags.
125 */ 117 */
126void 118void
127GNUNET_PEERINFO_GTK_flags_shutdown () 119GNUNET_PEERINFO_GTK_flags_shutdown ()
128{ 120{
129 struct Flag *flag; 121 struct Flag *flag;
130 122
131 while (NULL != (flag = flags_head)) 123 while (NULL != (flag = flags_head))
132 { 124 {
133 GNUNET_CONTAINER_DLL_remove (flags_head, 125 GNUNET_CONTAINER_DLL_remove (flags_head, flags_tail, flag);
134 flags_tail, 126 if (flag->flag != NULL)
135 flag); 127 g_object_unref (flag->flag);
136 if (flag->flag != NULL) 128 GNUNET_free (flag->cc);
137 g_object_unref (flag->flag); 129 GNUNET_free (flag);
138 GNUNET_free (flag->cc); 130 }
139 GNUNET_free (flag);
140 }
141} 131}
142 132
143 133