#if USE_OPENSSL
gint ssl_read(SSL *ssl, gchar *buf, gint len)
{
- gint ret;
+ gint err, ret;
if (SSL_pending(ssl) == 0) {
if (fd_check_io(SSL_get_rfd(ssl), G_IO_IN) < 0)
ret = SSL_read(ssl, buf, len);
- switch (SSL_get_error(ssl, ret)) {
+ switch ((err = SSL_get_error(ssl, ret))) {
case SSL_ERROR_NONE:
return ret;
case SSL_ERROR_WANT_READ:
case SSL_ERROR_WANT_WRITE:
errno = EAGAIN;
return -1;
+ case SSL_ERROR_ZERO_RETURN:
+ return 0;
default:
+ g_warning("SSL_read() returned error %d, ret = %d\n", err, ret);
+ if (ret == 0)
+ return 0;
return -1;
}
}
#if USE_OPENSSL
gint ssl_peek(SSL *ssl, gchar *buf, gint len)
{
- gint ret;
+ gint err, ret;
if (SSL_pending(ssl) == 0) {
if (fd_check_io(SSL_get_rfd(ssl), G_IO_IN) < 0)
ret = SSL_peek(ssl, buf, len);
- switch (SSL_get_error(ssl, ret)) {
+ switch ((err = SSL_get_error(ssl, ret))) {
case SSL_ERROR_NONE:
return ret;
case SSL_ERROR_WANT_READ:
case SSL_ERROR_WANT_WRITE:
errno = EAGAIN;
return -1;
+ case SSL_ERROR_ZERO_RETURN:
+ return 0;
default:
+ g_warning("SSL_peek() returned error %d, ret = %d\n", err, ret);
+ if (ret == 0)
+ return 0;
return -1;
}
}
#include <gtk/gtkmenuitem.h>
#include <gtk/gtkalignment.h>
#include <gtk/gtkhbox.h>
+#include <gtk/gtkvbox.h>
#include <gtk/gtkwindow.h>
#include <gtk/gtkdrawingarea.h>
{
GtkWidget *label;
GtkWidget *hbox;
- GtkWidget *align;
+ GtkWidget *vbox;
GtkWidget *item;
G_RETURN_VAL_IF_INVALID_COLOR(color_index, NULL);
* how to create pixmap menus */
label = gtk_label_new(label_colors[color_index].label);
- gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
gtk_widget_show(label);
hbox = gtk_hbox_new(FALSE, 0);
gtk_widget_show(hbox);
gtk_container_add(GTK_CONTAINER(item), hbox);
- align = gtk_alignment_new(0.5, 0.5, 0.0, 0.0);
- gtk_widget_show(align);
- gtk_container_set_border_width(GTK_CONTAINER(align), 1);
+ vbox = gtk_vbox_new(TRUE, 0);
+ gtk_widget_show(vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 1);
- gtk_container_add(GTK_CONTAINER(align), label_colors[color_index].widget);
+ gtk_container_add(GTK_CONTAINER(vbox),
+ label_colors[color_index].widget);
gtk_widget_show(label_colors[color_index].widget);
- gtk_widget_set_size_request(align, LABEL_COLOR_WIDTH,
- LABEL_COLOR_HEIGHT);
- gtk_box_pack_start(GTK_BOX(hbox), align, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 4);
return item;
GtkWidget *colorlabel_create_color_menu(void)
{
GtkWidget *label;
- GtkWidget *hbox;
- GtkWidget *align;
GtkWidget *item;
GtkWidget *menu;
gint i;
/* and the color items */
for (i = 0; i < LABEL_COLORS_ELEMS; i++) {
- GtkWidget *widget = colorlabel_create_color_widget(label_colors[i].color);
+ GtkWidget *hbox;
+ GtkWidget *vbox;
+ GtkWidget *widget;
item = gtk_menu_item_new();
- g_object_set_data(G_OBJECT(item), "color", GUINT_TO_POINTER(i + 1));
+ g_object_set_data(G_OBJECT(item), "color",
+ GUINT_TO_POINTER(i + 1));
label = gtk_label_new(label_colors[i].label);
- gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
gtk_widget_show(label);
hbox = gtk_hbox_new(FALSE, 0);
gtk_widget_show(hbox);
gtk_container_add(GTK_CONTAINER(item), hbox);
- align = gtk_alignment_new(0.5, 0.5, 0.0, 0.0);
- gtk_widget_show(align);
- gtk_container_set_border_width(GTK_CONTAINER(align), 1);
+ vbox = gtk_vbox_new(TRUE, 0);
+ gtk_widget_show(vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 1);
- gtk_container_add(GTK_CONTAINER(align), widget);
+ widget = colorlabel_create_color_widget(label_colors[i].color);
gtk_widget_show(widget);
- gtk_widget_set_size_request(align, LABEL_COLOR_WIDTH,
- LABEL_COLOR_HEIGHT);
+ gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(hbox), align, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 4);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);