[gq-commit] gq/src dt_entry.c,1.6,1.7 dt_password.c,1.8,1.9 dt_text.c,1.5,1.6 dt_time.c,1.1,1.2
Status: Beta
Brought to you by:
sur5r
From: <sta...@us...> - 2002-07-12 20:21:17
|
Update of /cvsroot/gqclient/gq/src In directory usw-pr-cvs1:/tmp/cvs-serv1447 Modified Files: dt_entry.c dt_password.c dt_text.c dt_time.c Log Message: * Made GtkEditable based displaytype robust wrt binary data. Now the user can switch between any of the displaytypes available without loosing data. (NOTE: Using glibc 2.1 may lead to crashes during displaytype switches due to buggy iconv implementations) Index: dt_entry.c =================================================================== RCS file: /cvsroot/gqclient/gq/src/dt_entry.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** dt_entry.c 9 Jul 2002 10:31:11 -0000 1.6 --- dt_entry.c 12 Jul 2002 20:21:14 -0000 1.7 *************** *** 50,53 **** --- 50,54 ---- #include "ldif.h" /* for b64_decode */ #include "syntax.h" + #include "dtutil.h" *************** *** 82,93 **** (gpointer) hash); if(data) { ! GByteArray *encoded = ! DT_ENTRY(form->dt_handler)->encode(data->data, data->len); ! /* printf("setting text '%s' orglen=%d len1=%d len2=%d\n", */ ! /* encoded->data, */ ! /* data->len, */ ! /* encoded->len, strlen(encoded->data)); */ ! gtk_entry_set_text(GTK_ENTRY(inputbox), encoded->data); ! g_byte_array_free(encoded, TRUE); } --- 83,87 ---- (gpointer) hash); if(data) { ! dt_entry_set_data(form, data, inputbox); } *************** *** 97,123 **** GByteArray *dt_entry_get_data(struct formfill *form, GtkWidget *widget) { ! GByteArray *copy; ! int l; ! ! gchar *content = gtk_editable_get_chars(GTK_EDITABLE(widget), 0, -1); ! if (!content) return NULL; ! ! l = strlen(content); ! if (l == 0) { ! g_free(content); ! return NULL; ! } ! ! copy = DT_ENTRY(form->dt_handler)->decode(content, strlen(content)); ! ! /* printf("getting orgtext '%s' text '%s' orglen=%d len1=%d len2=%d\n", */ ! /* content, */ ! /* copy->data, */ ! /* strlen(content), */ ! /* copy->len, strlen(copy->data)); */ ! ! g_free(content); ! ! return copy; } --- 91,95 ---- GByteArray *dt_entry_get_data(struct formfill *form, GtkWidget *widget) { ! return editable_get_text(GTK_EDITABLE(widget)); } *************** *** 126,140 **** { if(data) { ! GByteArray *encoded = ! DT_ENTRY(form->dt_handler)->encode(data->data, data->len); ! /* printf("setting text '%s' orglen=%d len1=%d len2=%d\n", */ ! /* encoded->data, */ ! /* data->len, */ ! /* encoded->len, strlen(encoded->data)); */ ! ! gtk_entry_set_text(GTK_ENTRY(widget), encoded->data); ! g_byte_array_free(encoded, TRUE); } else { ! gtk_entry_set_text(GTK_ENTRY(widget), ""); } } --- 98,110 ---- { if(data) { ! editable_set_text(GTK_EDITABLE(widget), data, ! DT_ENTRY(form->dt_handler)->encode, ! DT_ENTRY(form->dt_handler)->decode); } else { ! GByteArray *c = g_byte_array_new(); ! editable_set_text(GTK_EDITABLE(widget), c, ! DT_ENTRY(form->dt_handler)->encode, ! DT_ENTRY(form->dt_handler)->decode); ! g_byte_array_free(c, TRUE); } } *************** *** 148,152 **** memset(gb->data, 0, len + 1); decode_string(gb->data, val, len); ! /* trusting g_byte_array_set_size to keep that nul-byte */ g_byte_array_set_size(gb, strlen(gb->data)); } --- 118,122 ---- memset(gb->data, 0, len + 1); decode_string(gb->data, val, len); ! /* trusting g_byte_array_set_size to keep that nul-byte - FIXME */ g_byte_array_set_size(gb, strlen(gb->data)); } Index: dt_password.c =================================================================== RCS file: /cvsroot/gqclient/gq/src/dt_password.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** dt_password.c 12 Jul 2002 17:59:47 -0000 1.8 --- dt_password.c 12 Jul 2002 20:21:14 -0000 1.9 *************** *** 55,58 **** --- 55,59 ---- #include "encode.h" #include "ldif.h" /* for b64_decode */ + #include "dtutil.h" #include "dt_password.h" *************** *** 321,328 **** if(data) { ! GByteArray *encoded = ! DT_PASSWORD(form->dt_handler)->encode(data->data, data->len); ! gtk_entry_set_text(GTK_ENTRY(entry), encoded->data); ! g_byte_array_free(encoded, TRUE); if(data->data[0] == '{') { --- 322,328 ---- if(data) { ! editable_set_text(GTK_EDITABLE(entry), data, ! DT_PASSWORD(form->dt_handler)->encode, ! DT_PASSWORD(form->dt_handler)->decode); if(data->data[0] == '{') { *************** *** 341,364 **** GByteArray *dt_password_get_data(struct formfill *form, GtkWidget *hbox) { ! GByteArray *copy; GtkWidget *combo; GList *boxchildren; - gchar *content; gchar *crypt_type; - int l; boxchildren = GTK_BOX(hbox)->children; - content = gtk_editable_get_chars(GTK_EDITABLE(((struct _GtkBoxChild *) boxchildren->data)->widget), 0, -1); - - if (!content) return NULL; - - l = strlen(content); - if (l == 0) { - g_free(content); - return NULL; - } ! copy = DT_PASSWORD(form->dt_handler)->decode(content, ! strlen(content)); if(boxchildren->next) { --- 341,352 ---- GByteArray *dt_password_get_data(struct formfill *form, GtkWidget *hbox) { ! GByteArray *data; GtkWidget *combo; GList *boxchildren; gchar *crypt_type; boxchildren = GTK_BOX(hbox)->children; ! data = editable_get_text(GTK_ENTRY(((struct _GtkBoxChild *) boxchildren->data)->widget)); if(boxchildren->next) { *************** *** 367,383 **** boxchildren = boxchildren->next; combo = ((struct _GtkBoxChild *) boxchildren->data)->widget; ! crypt_type = gtk_editable_get_chars(GTK_EDITABLE(GTK_COMBO(combo)->entry), 0, -1); ! cryptflag = tokenize(cryptmap, crypt_type); /* check to see if the content was already crypted.... */ ! if (copy && copy->data[0] != '{') { /* need to crypt the stuff */ CryptFunc *cryptfunc = detokenize_data(cryptmap, cryptflag); if (cryptfunc != NULL) { ! GByteArray *crypted = cryptfunc(copy->data, copy->len); ! g_byte_array_free(copy, TRUE); ! copy = crypted; } } --- 355,372 ---- boxchildren = boxchildren->next; combo = ((struct _GtkBoxChild *) boxchildren->data)->widget; ! crypt_type = ! gtk_editable_get_chars(GTK_EDITABLE(GTK_COMBO(combo)->entry), ! 0, -1); cryptflag = tokenize(cryptmap, crypt_type); /* check to see if the content was already crypted.... */ ! if (data && data->data[0] != '{') { /* need to crypt the stuff */ CryptFunc *cryptfunc = detokenize_data(cryptmap, cryptflag); if (cryptfunc != NULL) { ! GByteArray *crypted = cryptfunc(data->data, data->len); ! g_byte_array_free(data, TRUE); ! data = crypted; } } *************** *** 392,398 **** /* copy->len, strlen(copy->data)); */ ! g_free(content); ! ! return copy; } --- 381,385 ---- /* copy->len, strlen(copy->data)); */ ! return data; } Index: dt_text.c =================================================================== RCS file: /cvsroot/gqclient/gq/src/dt_text.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** dt_text.c 9 Jul 2002 10:31:11 -0000 1.5 --- dt_text.c 12 Jul 2002 20:21:14 -0000 1.6 *************** *** 56,60 **** dt_text_get_widget, dt_entry_get_data, /* reuse method from dt_entry */ ! dt_text_set_data, bervalLDAPMod /* reuse method from dt_entry */ }, --- 56,60 ---- dt_text_get_widget, dt_entry_get_data, /* reuse method from dt_entry */ ! dt_entry_set_data, bervalLDAPMod /* reuse method from dt_entry */ }, *************** *** 76,87 **** gtk_text_set_editable(GTK_TEXT(inputbox), TRUE); if(data) { ! GByteArray *encoded = DT_TEXT(form->dt_handler)->encode(data->data, data->len); ! ! gtk_text_freeze(GTK_TEXT(inputbox)); ! gtk_text_set_point(GTK_TEXT(inputbox), 0); ! gtk_text_insert(GTK_TEXT(inputbox), NULL, NULL, NULL, encoded->data, -1); ! gtk_text_thaw(GTK_TEXT(inputbox)); ! ! g_byte_array_free(encoded, TRUE); } --- 76,80 ---- gtk_text_set_editable(GTK_TEXT(inputbox), TRUE); if(data) { ! dt_entry_set_data(form, data, inputbox); } *************** *** 89,92 **** --- 82,86 ---- } + #if 0 void dt_text_set_data(struct formfill *form, GByteArray *data, GtkWidget *widget) *************** *** 106,131 **** } gtk_text_thaw(GTK_TEXT(widget)); - } - - #if 0 - GByteArray *dt_text_get_data(struct formfill *form, GtkWidget *widget) - { - GByteArray *copy; - int l; - - gchar *content = gtk_editable_get_chars(GTK_EDITABLE(widget), 0, -1); - if (!content) return NULL; - - l = strlen(content); - if (l == 0) { - g_free(content); - return NULL; - } - - copy = DT_TEXT(form->dt_handler)->decode(content, strlen(content)); - - g_free(content); - - return copy; } #endif --- 100,103 ---- Index: dt_time.c =================================================================== RCS file: /cvsroot/gqclient/gq/src/dt_time.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** dt_time.c 9 Jul 2002 10:43:37 -0000 1.1 --- dt_time.c 12 Jul 2002 20:21:14 -0000 1.2 *************** *** 45,48 **** --- 45,49 ---- #include "util.h" #include "formfill.h" + #include "dtutil.h" #include "dt_time.h" #include "i18n.h" *************** *** 438,466 **** GtkWidget *widget) { ! GtkWidget *inputbox = dt_time_retrieve_inputbox(widget); ! int l; ! GByteArray *gb; ! ! gchar *content = gtk_editable_get_chars(GTK_EDITABLE(inputbox), 0, -1); ! ! /* printf("content=%s\n", content); */ ! ! if (!content) return NULL; ! ! l = strlen(content); ! if (l == 0) { ! g_free(content); ! return NULL; ! } ! ! gb = g_byte_array_new(); ! ! if (gb) { ! g_byte_array_append(gb, content, l); ! } ! ! g_free(content); ! ! return gb; } --- 439,443 ---- GtkWidget *widget) { ! return editable_get_text(GTK_EDITABLE(dt_time_retrieve_inputbox(widget))); } *************** *** 469,484 **** GtkWidget *widget) { ! GtkWidget *inputbox; ! gchar *buf; ! ! if (!data) return; ! ! inputbox = dt_time_retrieve_inputbox(widget); ! buf= g_malloc0(data->len + 1); ! ! memcpy(buf, data->data, data->len); ! ! gtk_entry_set_text(GTK_ENTRY(inputbox), buf); ! g_free(buf); } --- 446,453 ---- GtkWidget *widget) { ! if (data) ! editable_set_text(GTK_EDITABLE(dt_time_retrieve_inputbox(widget)), ! data, ! NULL, NULL); } |