Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Tue, 19 Feb 2002 12:45:35 +0100 From: Pavel Tsekov X-Mailer: The Bat! (v1.53d) UNREG / CD5BF9353B3B7091 Reply-To: Pavel Tsekov Organization: Syntrex, Inc. X-Priority: 3 (Normal) Message-ID: <2110666337.20020219124535@syntrex.com> To: cygwin AT cygwin DOT com Subject: Fwd: Re: Core dumped just only with strcat! MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------10095A920C0255C" ------------10095A920C0255C Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit This is a forwarded message From: Dani P. To: "Pavel Tsekov" Date: Monday, February 18, 2002, 9:45:51 PM Subject: Core dumped just only with strcat! ===8<==============Original message text=============== I've trying lots of things and after 1 day with it, I've achieved to work part of the code. What I did? I just declared my array before a MYSQL_RES variable. I had: MYSQL_RES * result; char petition[500]; And I changed to: char petition[500]; MYSQL_RES * result; And also I did all the string work before the mysql stuff (connection call, query call,...). And, don't ask me why, it worked! (now it crashes in other function, in a mysql_query call). I have not a reasonable answer for this behaviour... I'm quite lost. I've asked this same question to the mysql-win32 list, and it seems not to be a mysql problem (according to this list). I have attached the code (it's in mysql_procs.c, but I have attached all the files involved-- In order to compile and run, you need Gtk-win32 library), but you must pardon me because it has been written in Spanish and so, variables and comments may bore you. The problem I related you was among the first lines of the code, but the last problem I told you was among the last lines. Finally, could I ask you for forward this message to the cygwin list? After the answers which claim that the error could be caused by mysql, I unsuscribed from cywgin list, and by now, I'm not suscribed (yet). Thanks, Dani P. ----- Original Message ----- From: Pavel Tsekov To: Dani P. Cc: Sent: Monday, February 18, 2002 9:57 AM Subject: Re: Core dumped just only with strcat! > Just tried it - it doesn't dump core here. Is this snippet taken > from a larger source ? If so maybe it would be usefull to paste it > all. Maybe the core happens somewhere else... > > Still you can try to debug this by yourself - compile with -g > option and launch gdb. Then come back to the list if you suspect > a bug in cygwin and not your code :) > > Dani P. wrote: > > > Sorry, in my last posting there's an error in the piece of code: > > > > > >>char request[500]; > >>request[0]=3D'\0'; <------ "3D" should not be here > >>strcat(request,"SELECT * FROM data"); > >> > > > > I meant that this piece of code dumps a core, not the last posting. > > > > Thanks, > > > > Dani > > > > > > ----- Original Message ----- > > From: Dani P. > > To: > > Sent: Saturday, February 16, 2002 10:57 AM > > Subject: Core dumped just only with strcat! > > > > > > > >>I have installed recently cygwin in order to compile a piece of code > >>which compiled an d worked fine in Linux, using Gtk and MySQL libraries. > >>It compiles fine, but it dumps a core just only with a "strcat". I do the > >>following: > >> > >>char request[500]; > >>request[0]=3D'\0'; > >>strcat(request,"SELECT * FROM data"); > >> > >>And in that last instruction, it dumps a core. > >> > >>Could you help me? > >> > >>Thanks, > >> > >>Dani P. > >> > >> > >>-- > >>Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple > >>Bug reporting: http://cygwin.com/bugs.html > >>Documentation: http://cygwin.com/docs.html > >>FAQ: http://cygwin.com/faq/ > >> > >> > >> > > > > > > -- > > Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple > > Bug reporting: http://cygwin.com/bugs.html > > Documentation: http://cygwin.com/docs.html > > FAQ: http://cygwin.com/faq/ > > > > > > > > > > > ===8<===========End of original message text=========== ------------10095A920C0255C Content-Type: application/octet-stream; name="gui.h" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="gui.h" =0A= #ifndef _STDIO_=0A= #define _STDIO_=0A= #include =0A= #endif=0A= =0A= #ifndef _GTK_=0A= #define _GTK_=0A= #include =0A= #endif=0A= =0A= #ifndef _STRING_=0A= #define _STRING_=0A= #include /*para strlen() y strcpy() */=0A= #endif=0A= =0A= #include "mysql_procs.h"=0A= =0A= #define LIMPIAR_STATUS_BAR = gtk_statusbar_pop(GTK_STATUSBAR(status),contexto)=0A= =0A= #define entry_customer_id text_entries[0]=0A= #define entry_customer_name text_entries[1]=0A= #define entry_responsable text_entries[2]=0A= #define entry_customer_street text_entries[3]=0A= #define entry_customer_city text_entries[4]=0A= #define entry_customer_provincia text_entries[5]=0A= #define entry_customer_postal_code text_entries[6]=0A= #define entry_customer_phone text_entries[7]=0A= #define entry_customer_fax text_entries[8]=0A= #define entry_customer_dias_visita text_entries[9]=0A= #define entry_compra text_entries[10]=0A= #define entry_tecn text_entries[11]=0A= #define entry_pago text_entries[12]=0A= #define entry_actividad text_entries[13]=0A= ------------10095A920C0255C Content-Type: application/octet-stream; name="gui.c" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="gui.c" #include "gui.h" GtkWidget * lista; GtkWidget * window_nueva_entrada; GtkWidget * text_entries[14]; GtkWidget * entry_maquina; GtkWidget * entry_muela; GtkWidget * entry_forma_plano; GtkWidget * entry_end_use; GtkWidget * entry_velocidad; GtkWidget * entry_potenc; GtkWidget * entry_esp1; GtkWidget * entry_precio1; GtkWidget * entry_share1; GtkWidget * entry_esp2; GtkWidget * entry_precio2; GtkWidget * entry_share2; GtkWidget * si; GtkWidget * no; gint n=3D0; /*numero de filas */ gint fila =3D -1; /*para que no me borre filas altruistamente */ GtkWidget * status; int contexto; int id_status_bar=3D-1; MYSQL * base_de_datos; char *entries[14]; /* Primero declaro las funciones */ void nueva() { gtk_clist_clear(GTK_CLIST(lista)); gtk_entry_set_text(GTK_ENTRY(entry_customer_name), ""); gtk_entry_set_text(GTK_ENTRY(entry_responsable), ""); gtk_entry_set_text(GTK_ENTRY(entry_customer_id), ""); gtk_entry_set_text(GTK_ENTRY(entry_customer_street), ""); gtk_entry_set_text(GTK_ENTRY(entry_customer_phone), ""); gtk_entry_set_text(GTK_ENTRY(entry_customer_fax), ""); gtk_entry_set_text(GTK_ENTRY(entry_customer_city), ""); gtk_entry_set_text(GTK_ENTRY(entry_customer_provincia), ""); gtk_entry_set_text(GTK_ENTRY(entry_customer_postal_code), ""); gtk_entry_set_text(GTK_ENTRY(entry_customer_dias_visita), ""); gtk_entry_set_text(GTK_ENTRY(entry_compra), ""); gtk_entry_set_text(GTK_ENTRY(entry_tecn), ""); gtk_entry_set_text(GTK_ENTRY(entry_pago), ""); gtk_entry_set_text(GTK_ENTRY(entry_actividad), ""); gtk_entry_set_text(GTK_ENTRY(entry_maquina), ""); gtk_entry_set_text(GTK_ENTRY(entry_muela), ""); gtk_entry_set_text(GTK_ENTRY(entry_forma_plano), ""); gtk_entry_set_text(GTK_ENTRY(entry_end_use), ""); gtk_entry_set_text(GTK_ENTRY(entry_velocidad), ""); gtk_entry_set_text(GTK_ENTRY(entry_potenc), ""); gtk_entry_set_text(GTK_ENTRY(entry_esp1), ""); gtk_entry_set_text(GTK_ENTRY(entry_precio1), ""); gtk_entry_set_text(GTK_ENTRY(entry_share1), ""); gtk_entry_set_text(GTK_ENTRY(entry_esp2), ""); gtk_entry_set_text(GTK_ENTRY(entry_precio2), ""); gtk_entry_set_text(GTK_ENTRY(entry_share2), ""); n =3D 0; /*Pongo a cero los contadores de filas */ fila =3D -1; } void cerrar(GtkWidget *widget) // Ojo!! esto es peligroso. S=F3lo sirver = para cerrar ventanas // que tengan a lo sumo una box entre el bot=F3n y la ventana padre. { gtk_widget_destroy(widget->parent->parent); } void vaciar_callback() { gtk_editable_delete_text(GTK_EDITABLE(entry_customer_id),0,-1); gtk_editable_delete_text(GTK_EDITABLE(entry_customer_name),0,-1); gtk_editable_delete_text(GTK_EDITABLE(entry_responsable),0,-1); gtk_editable_delete_text(GTK_EDITABLE(entry_customer_phone),0,-1); gtk_editable_delete_text(GTK_EDITABLE(entry_customer_fax),0,-1); gtk_editable_delete_text(GTK_EDITABLE(entry_customer_city),0,-1); = gtk_editable_delete_text(GTK_EDITABLE(entry_customer_provincia),0,-1); = gtk_editable_delete_text(GTK_EDITABLE(entry_customer_dias_visita),0,-1); gtk_editable_delete_text(GTK_EDITABLE(entry_customer_street),0,-1); = gtk_editable_delete_text(GTK_EDITABLE(entry_customer_postal_code),0,-1); gtk_editable_delete_text(GTK_EDITABLE(entry_customer_id),0,-1); gtk_editable_delete_text(GTK_EDITABLE(entry_customer_id),0,-1); gtk_editable_delete_text(GTK_EDITABLE(entry_customer_id),0,-1); gtk_editable_delete_text(GTK_EDITABLE(entry_actividad),0,-1); gtk_editable_delete_text(GTK_EDITABLE(entry_compra),0,-1); gtk_editable_delete_text(GTK_EDITABLE(entry_pago),0,-1); gtk_editable_delete_text(GTK_EDITABLE(entry_tecn),0,-1); gtk_clist_clear(GTK_CLIST(lista)); n=3D0; fila=3D-1; } int is_int(gchar * id) { int b=3D1; int i=3D0; while (i< strlen(id) && b) { if (!(id[i]>=3D'0'&& id[i]<=3D'9')) b=3D0; i++; } return b; } void activar_guardar(GtkButton * button,gpointer * data) { char * pedidos[12]; int nfor; =09 g_print("Vamos a borrar antes de nada\n"); borra_registro(entries[0],base_de_datos); g_print("Borrado!\n"); g_print("Vamos a insertar los datos\n"); insertar_datos_en_BBDD(entries,base_de_datos); g_print("Insertados!"); for (nfor =3D 0; nfor < n; nfor++) { gtk_clist_get_text(GTK_CLIST(lista), nfor,0, &pedidos[0]); gtk_clist_get_text(GTK_CLIST(lista), nfor,1, &pedidos[1]); gtk_clist_get_text(GTK_CLIST(lista), nfor,2, &pedidos[2]); gtk_clist_get_text(GTK_CLIST(lista), nfor,3, &pedidos[3]); gtk_clist_get_text(GTK_CLIST(lista), nfor,4, &pedidos[4]); gtk_clist_get_text(GTK_CLIST(lista), nfor,5, &pedidos[5]); gtk_clist_get_text(GTK_CLIST(lista), nfor,6, &pedidos[6]); gtk_clist_get_text(GTK_CLIST(lista), nfor,7, &pedidos[7]); gtk_clist_get_text(GTK_CLIST(lista), nfor,8, &pedidos[8]); gtk_clist_get_text(GTK_CLIST(lista), nfor,9, &pedidos[9]); gtk_clist_get_text(GTK_CLIST(lista), nfor,10, &pedidos[10]); gtk_clist_get_text(GTK_CLIST(lista), nfor,11, &pedidos[11]); insertar_pedido_en_BBDD(entries[0],pedidos,base_de_datos); =20 } gtk_widget_destroy(GTK_WIDGET(data)); } gint delete_event(GtkWidget * widget,GdkEvent * event,gpointer data) { return(FALSE); } void destruir_dialogo(GtkWidget * widget,gpointer data) { gtk_widget_destroy(GTK_WIDGET(data)); } void dialogo_guardar() { GtkWidget * ventana; GtkWidget * box_vertical; GtkWidget * box_horizontal; GtkWidget * texto; =09 ventana =3D gtk_window_new(GTK_WINDOW_DIALOG); gtk_window_set_modal(GTK_WINDOW(ventana),TRUE); gtk_container_set_border_width(GTK_CONTAINER(ventana),10); gtk_window_set_title(GTK_WINDOW(ventana),"Guardar"); gtk_window_set_policy(GTK_WINDOW(ventana),FALSE,FALSE,TRUE); =09 si=3Dgtk_button_new_with_label("Si"); no=3Dgtk_button_new_with_label("No"); box_horizontal=3Dgtk_hbox_new(TRUE,0); gtk_box_pack_start(GTK_BOX(box_horizontal),si,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(box_horizontal),no,FALSE,FALSE,0); =09 texto=3Dgtk_label_new("El registro ya existe,\n=BFDesea = sobreescribirlo?"); =09 box_vertical=3Dgtk_vbox_new(TRUE,0); gtk_box_pack_start(GTK_BOX(box_vertical),texto,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(box_vertical),box_horizontal,FALSE,FALSE,0); =09 gtk_container_add(GTK_CONTAINER(ventana),box_vertical); =09 =09 =09 gtk_widget_show(ventana); gtk_widget_show(box_vertical); gtk_widget_show(box_horizontal); gtk_widget_show(texto); gtk_widget_show(si); gtk_widget_show(no); =09 = gtk_signal_connect(GTK_OBJECT(si),"clicked",GTK_SIGNAL_FUNC(activar_guard= ar),ventana); = gtk_signal_connect(GTK_OBJECT(no),"clicked",GTK_SIGNAL_FUNC(destruir_dial= ogo),ventana); gtk_signal_connect(GTK_OBJECT(ventana),"destroy", GTK_SIGNAL_FUNC(destruir_dialogo),ventana); = gtk_signal_connect(GTK_OBJECT(ventana),"delete_event",GTK_SIGNAL_FUNC(del= ete_event),NULL); =20 =09 } void guardar_callback() { =20 int columna; =20 MYSQL_RES * resultado; char * pedidos[12]; int nfor; =20 entries[0] =3D gtk_entry_get_text(GTK_ENTRY(entry_customer_id)); if (!strcmp(entries[0],"")||!is_int(entries[0])) { LIMPIAR_STATUS_BAR; gtk_statusbar_push(GTK_STATUSBAR(status),contexto, "No se ha podido salvar. Introduce un = n=FAmero de cliente v=E1lido"); } else { LIMPIAR_STATUS_BAR; =20 base_de_datos=3Dmysql_init(NULL); entries[1] =3D gtk_entry_get_text(GTK_ENTRY(entry_customer_name)); entries[2] =3D gtk_entry_get_text(GTK_ENTRY(entry_responsable)); entries[3] =3D = gtk_entry_get_text(GTK_ENTRY(entry_customer_street)); entries[4] =3D = gtk_entry_get_text(GTK_ENTRY(entry_customer_phone)); entries[5] =3D = gtk_entry_get_text(GTK_ENTRY(entry_customer_fax)); entries[6] =3D = gtk_entry_get_text(GTK_ENTRY(entry_customer_city)); entries[7] =3D = gtk_entry_get_text(GTK_ENTRY(entry_customer_provincia)); entries[8] =3D = gtk_entry_get_text(GTK_ENTRY(entry_customer_postal_code)); entries[9] =3D = gtk_entry_get_text(GTK_ENTRY(entry_customer_dias_visita)); entries[10] =3D gtk_entry_get_text(GTK_ENTRY(entry_compra)); entries[11] =3D gtk_entry_get_text(GTK_ENTRY(entry_tecn)); entries[12] =3D gtk_entry_get_text(GTK_ENTRY(entry_pago)); entries[13] =3D gtk_entry_get_text(GTK_ENTRY(entry_actividad)); =09 =20 if (existe(entries[0],base_de_datos))=20 { dialogo_guardar();=09 =09 } else=20 {=09 insertar_datos_en_BBDD(entries,base_de_datos); =09 for (nfor =3D 0; nfor < n; nfor++) { gtk_clist_get_text(GTK_CLIST(lista), nfor,0, &pedidos[0]); gtk_clist_get_text(GTK_CLIST(lista), nfor,1, &pedidos[1]); gtk_clist_get_text(GTK_CLIST(lista), nfor,2, &pedidos[2]); gtk_clist_get_text(GTK_CLIST(lista), nfor,3, &pedidos[3]); gtk_clist_get_text(GTK_CLIST(lista), nfor,4, &pedidos[4]); gtk_clist_get_text(GTK_CLIST(lista), nfor,5, &pedidos[5]); gtk_clist_get_text(GTK_CLIST(lista), nfor,6, &pedidos[6]); gtk_clist_get_text(GTK_CLIST(lista), nfor,7, &pedidos[7]); gtk_clist_get_text(GTK_CLIST(lista), nfor,8, &pedidos[8]); gtk_clist_get_text(GTK_CLIST(lista), nfor,9, &pedidos[9]); gtk_clist_get_text(GTK_CLIST(lista), nfor,10, &pedidos[10]); gtk_clist_get_text(GTK_CLIST(lista), nfor,11, &pedidos[11]); insertar_pedido_en_BBDD(entries[0],pedidos,base_de_datos); =20 } gtk_statusbar_push(GTK_STATUSBAR(status),contexto,"Registro guardado = con =E9xito"); } =09 mysql_close(base_de_datos); } } void acerca_callback() { GtkWidget * window_acerca; GtkWidget * vbox_aux; GtkWidget * boton_cerrar; GtkWidget * label_aux; LIMPIAR_STATUS_BAR; window_acerca =3D gtk_window_new(GTK_WINDOW_DIALOG); gtk_window_set_modal(GTK_WINDOW(window_acerca),TRUE); gtk_container_set_border_width(GTK_CONTAINER(window_acerca),10); gtk_window_set_title(GTK_WINDOW(window_acerca),"Acerca..."); gtk_window_set_policy(GTK_WINDOW(window_acerca),FALSE,FALSE,TRUE); boton_cerrar =3D gtk_button_new_with_label("Cerrar"); label_aux =3D gtk_label_new("NORTON v1.0 [Pinguins]\nPropiedad = intelectual de Daniel Perez Alcazar y David Bernal Casas\nLicenciado = bajo la licencia GPL, mas informaci=F3n: www.fsf.org"); gtk_label_set_justify(GTK_LABEL(label_aux),GTK_JUSTIFY_FILL); vbox_aux =3D gtk_vbox_new(FALSE,0); gtk_box_pack_start(GTK_BOX(vbox_aux),label_aux,FALSE,FALSE,0); gtk_box_pack_start(GTK_BOX(vbox_aux),boton_cerrar,FALSE,FALSE,0); gtk_box_set_spacing(GTK_BOX(vbox_aux),5); gtk_container_add(GTK_CONTAINER(window_acerca),vbox_aux); gtk_widget_show(window_acerca); gtk_widget_show(vbox_aux); gtk_widget_show(label_aux); gtk_widget_show(boton_cerrar); gtk_signal_connect(GTK_OBJECT(boton_cerrar),"clicked", GTK_SIGNAL_FUNC(cerrar),NULL); } void fila_seleccionada(GtkWidget * widget, gint row, gint column, GdkEventButton * event, gpointer data) { fila =3D row; LIMPIAR_STATUS_BAR; } void fila_deseleccionada(GtkWidget * widget, gint row, gint = column, GdkEventButton * event, gpointer data) { fila =3D -1; LIMPIAR_STATUS_BAR; } void borrar_entrada() { LIMPIAR_STATUS_BAR; if (n > 0 && fila >=3D 0) { gtk_clist_remove(GTK_CLIST(lista), fila); n--; } fila =3D -1; // Para evitar que quede ninguna fila seleccionada. } void incorporar() { gchar * incorporados[12]; incorporados[0]=3Dgtk_entry_get_text(GTK_ENTRY(entry_maquina)); incorporados[1]=3Dgtk_entry_get_text(GTK_ENTRY(entry_muela)); incorporados[2]=3Dgtk_entry_get_text(GTK_ENTRY(entry_forma_plano)); incorporados[3]=3Dgtk_entry_get_text(GTK_ENTRY(entry_end_use)); incorporados[4]=3Dgtk_entry_get_text(GTK_ENTRY(entry_velocidad)); incorporados[5]=3Dgtk_entry_get_text(GTK_ENTRY(entry_potenc)); incorporados[6]=3Dgtk_entry_get_text(GTK_ENTRY(entry_esp1)); incorporados[7]=3Dgtk_entry_get_text(GTK_ENTRY(entry_precio1)); incorporados[8]=3Dgtk_entry_get_text(GTK_ENTRY(entry_share1)); incorporados[9]=3Dgtk_entry_get_text(GTK_ENTRY(entry_esp2)); incorporados[10]=3Dgtk_entry_get_text(GTK_ENTRY(entry_precio2)); incorporados[11]=3Dgtk_entry_get_text(GTK_ENTRY(entry_share2)); = if(strcmp(incorporados[0],"")||strcmp(incorporados[1],"")||strcmp(incorpo= rados[2],"") = ||strcmp(incorporados[3],"")||strcmp(incorporados[4],"")||strcmp(incorpor= ados[5],"") = ||strcmp(incorporados[6],"")||strcmp(incorporados[7],"")||strcmp(incorpor= ados[8],"") = ||strcmp(incorporados[9],"")||strcmp(incorporados[10],"")||strcmp(incorpo= rados[11],"")) { gtk_clist_append(GTK_CLIST(lista), incorporados); n++; } gtk_widget_destroy(window_nueva_entrada); } void nueva_entrada() { GtkWidget * label_maquina; GtkWidget * label_muela; GtkWidget * label_forma_plano; GtkWidget * label_end_use; GtkWidget * label_velocidad; GtkWidget * label_potenc; GtkWidget * label_esp1; GtkWidget * label_precio1; GtkWidget * label_share1; GtkWidget * label_esp2; GtkWidget * label_precio2; GtkWidget * label_share2; GtkWidget * table_of_nueva_entrada; GtkWidget * boton_cerrar; GtkWidget * boton_incorporar; LIMPIAR_STATUS_BAR; window_nueva_entrada =3D gtk_window_new(GTK_WINDOW_DIALOG); /*para = diferenciar de TOP_LEVEL, para que no tenga prioridad */ = gtk_window_set_policy(GTK_WINDOW(window_nueva_entrada),FALSE,FALSE,TRUE);= gtk_window_set_title(GTK_WINDOW(window_nueva_entrada), "Introduccion de datos"); gtk_window_set_modal(GTK_WINDOW(window_nueva_entrada),TRUE); table_of_nueva_entrada =3D gtk_table_new(4, 7, FALSE); entry_maquina =3D gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), entry_maquina, 0, 1, 1, 2); label_maquina =3D gtk_label_new("MAQUINA"); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), label_maquina, 0, 1, 0, 1); entry_muela =3D gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), entry_muela, 1, 2, 1, 2); label_muela =3D gtk_label_new("MUELA"); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), label_muela, 1, 2, 0, 1); entry_forma_plano =3D gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), entry_forma_plano, 2, 3, 1, 2); label_forma_plano =3D gtk_label_new("FORMA/PLANO"); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), label_forma_plano, 2, 3, 0, 1); entry_end_use =3D gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), entry_end_use, 3, 4, 1, 2); label_end_use =3D gtk_label_new("END USE"); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), label_end_use, 3, 4, 0, 1); entry_velocidad =3D gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), entry_velocidad, 0, 1, 3, 4); label_velocidad =3D gtk_label_new("VELOCIDAD"); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), label_velocidad, 0, 1, 2, 3); entry_potenc =3D gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), entry_potenc, 1, 2, 3, 4); label_potenc =3D gtk_label_new("POTENC."); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), label_potenc, 1, 2, 2, 3); entry_esp1 =3D gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), entry_esp1, 2, 3, 3, 4); label_esp1 =3D gtk_label_new("ESP. 1"); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), label_esp1, 2, 3, 2, 3); entry_precio1 =3D gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), entry_precio1, 3, 4, 3, 4); label_precio1 =3D gtk_label_new("PRECIO 1"); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), label_precio1, 3, 4, 2, 3); entry_share1 =3D gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), entry_share1, 0, 1, 5, 6); label_share1 =3D gtk_label_new("SHARE 1%"); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), label_share1, 0, 1, 4, 5); entry_esp2 =3D gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), entry_esp2, 1, 2, 5, 6); label_esp2 =3D gtk_label_new("ESP. 2"); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), label_esp2, 1, 2, 4, 5); entry_precio2 =3D gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), entry_precio2, 2, 3, 5, 6); label_precio2 =3D gtk_label_new("PRECIO 2"); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), label_precio2, 2, 3, 4, 5); entry_share2 =3D gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), entry_share2, 3, 4, 5, 6); label_share2 =3D gtk_label_new("SHARE 2"); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), label_share2, 3, 4, 4, 5); boton_cerrar =3D gtk_button_new_with_label(" Cerrar "); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), boton_cerrar, 0, 1, 6, 7); boton_incorporar =3D gtk_button_new_with_label(" Incorporar datos \n a la tabla "); gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada), boton_incorporar, 3, 4, 6, 7); gtk_container_add(GTK_CONTAINER(window_nueva_entrada), table_of_nueva_entrada); gtk_container_border_width(GTK_CONTAINER(window_nueva_entrada), 10); gtk_widget_show(entry_maquina); gtk_widget_show(entry_muela); gtk_widget_show(entry_forma_plano); gtk_widget_show(entry_end_use); gtk_widget_show(entry_velocidad); gtk_widget_show(entry_potenc); gtk_widget_show(entry_esp1); gtk_widget_show(entry_precio1); gtk_widget_show(entry_share1); gtk_widget_show(entry_esp2); gtk_widget_show(entry_precio2); gtk_widget_show(entry_share2); gtk_widget_show(label_maquina); gtk_widget_show(label_muela); gtk_widget_show(label_forma_plano); gtk_widget_show(label_end_use); gtk_widget_show(label_velocidad); gtk_widget_show(label_potenc); gtk_widget_show(label_esp1); gtk_widget_show(label_precio1); gtk_widget_show(label_share1); gtk_widget_show(label_esp2); gtk_widget_show(label_precio2); gtk_widget_show(label_share2); gtk_widget_show(table_of_nueva_entrada); gtk_widget_show(window_nueva_entrada); gtk_widget_show(boton_cerrar); gtk_widget_show(boton_incorporar); gtk_signal_connect(GTK_OBJECT(boton_cerrar), "clicked", GTK_SIGNAL_FUNC(cerrar), NULL); gtk_signal_connect(GTK_OBJECT(boton_incorporar), "clicked", GTK_SIGNAL_FUNC(incorporar), NULL); } /* Funcion principal*/ int main(int argc, char *argv[]) { /*Declaro todo*/ GtkWidget * window; GtkWidget * table; /* <-----Datos-----> */ GtkWidget * label_responsable; GtkWidget * label_customer_id; GtkWidget * label_customer_name; GtkWidget * label_customer_street; GtkWidget * label_customer_phone; GtkWidget * label_customer_fax; GtkWidget * label_customer_city; GtkWidget * label_customer_provincia; GtkWidget * label_customer_postal_code; GtkWidget * label_customer_dias_visita; GtkWidget * label_compra; GtkWidget * label_tecn; GtkWidget * label_pago; GtkWidget * label_actividad; gchar * titles[12] =3D { "MAQUINA", "MUELA", "FORMA/PLANO", "END = USE", "VELOCIDAD", "POTENCIA", "ESP. 1", "PRECIO 1", "SHARE = 1%", "ESP. 2", "PRECIO 2", "SHARE 2"}; GtkWidget * vbox_menu_bar; GtkWidget * menu_bar; GtkWidget * submenu_registro; GtkWidget * menu_registro; GtkWidget * salvar; GtkWidget * salir; GtkWidget * vaciar; GtkWidget * submenu_ayuda; GtkWidget * menu_ayuda; GtkWidget * acerca; =20 GtkWidget * submenu_busquedas; GtkWidget * menu_busquedas; GtkWidget * buscar; GtkWidget * hbox_entries_clist; /* <-----Scrolled Window (la de la lista y la "meta")+ = viewport-----> */ GtkWidget * scrolled_window; GtkWidget * meta_scrolled_window; // GtkWidget * viewport; /* Botones */ GtkWidget * boton_nueva_entrada; GtkWidget * boton_borrar_entrada; GtkWidget * botones; GtkWidget * vbox_clist_botones; gtk_init(&argc, &argv); window =3D gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(window), 730, 500); hbox_entries_clist=3Dgtk_hbox_new(FALSE,0); table =3D gtk_table_new(2, 14, FALSE); label_customer_id =3D gtk_label_new("No. de Cliente"); entry_customer_id =3D gtk_entry_new_with_max_length(6); gtk_table_attach(GTK_TABLE(table), label_customer_id, 0, 1, 0, 1, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); = /*En la posicion 0 a la izquierda, que ocupa 1 (la celda 2 ocuparia 2!), = 0 desde arriba y que ocupa 1 */ gtk_table_attach(GTK_TABLE(table), entry_customer_id, 1, 2, 0, 1, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_widget_show(label_customer_id); gtk_widget_show(entry_customer_id); label_customer_name =3D gtk_label_new("Cliente"); entry_customer_name =3D gtk_entry_new_with_max_length(45); gtk_table_attach(GTK_TABLE(table), label_customer_name, 0, 1, 1, 2, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_table_attach(GTK_TABLE(table), entry_customer_name, 1, 2, 1, 2, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_widget_show(label_customer_name); gtk_widget_show(entry_customer_name); label_responsable =3D gtk_label_new("Responsable"); entry_responsable =3D gtk_entry_new_with_max_length(45); gtk_table_attach(GTK_TABLE(table), label_responsable, 0, 1, 2, 3, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_table_attach(GTK_TABLE(table), entry_responsable, 1, 2, 2, 3, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_widget_show(label_responsable); gtk_widget_show(entry_responsable); label_customer_street =3D gtk_label_new("Direcci=F3n"); entry_customer_street =3D gtk_entry_new_with_max_length(35); gtk_table_attach(GTK_TABLE(table), label_customer_street, 0, 1, 3, = 4, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_table_attach(GTK_TABLE(table), entry_customer_street, 1, 2, 3, = 4, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_widget_show(label_customer_street); gtk_widget_show(entry_customer_street); label_customer_phone =3D gtk_label_new("Tel=82fono"); entry_customer_phone =3D gtk_entry_new_with_max_length(13); gtk_table_attach(GTK_TABLE(table), label_customer_phone, 0, 1, 4, 5, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_table_attach(GTK_TABLE(table), entry_customer_phone, 1, 2, 4, 5, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_widget_show(label_customer_phone); gtk_widget_show(entry_customer_phone); label_customer_fax =3D gtk_label_new("Fax"); entry_customer_fax =3D gtk_entry_new_with_max_length(13); gtk_table_attach(GTK_TABLE(table), label_customer_fax, 0, 1, 5, 6, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_table_attach(GTK_TABLE(table), entry_customer_fax, 1, 2, 5, 6, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_widget_show(label_customer_fax); gtk_widget_show(entry_customer_fax); label_customer_city =3D gtk_label_new("Localidad"); entry_customer_city =3D gtk_entry_new_with_max_length(20); gtk_table_attach(GTK_TABLE(table), label_customer_city, 0, 1, 6, 7, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_table_attach(GTK_TABLE(table), entry_customer_city, 1, 2, 6, 7, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_widget_show(label_customer_city); gtk_widget_show(entry_customer_city); label_customer_provincia =3D gtk_label_new("Provincia"); entry_customer_provincia =3D gtk_entry_new_with_max_length(20); gtk_table_attach(GTK_TABLE(table), label_customer_provincia, 0, 1, = 7, 8, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_table_attach(GTK_TABLE(table), entry_customer_provincia, 1, 2, = 7, 8, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_widget_show(label_customer_provincia); gtk_widget_show(entry_customer_provincia); label_customer_postal_code =3D gtk_label_new("Codigo Postal"); entry_customer_postal_code =3D gtk_entry_new_with_max_length(5); gtk_table_attach(GTK_TABLE(table), label_customer_postal_code, 0, 1, = 8, 9, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK,GTK_SHRINK); gtk_table_attach(GTK_TABLE(table), entry_customer_postal_code, 1, 2, = 8, 9, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_widget_show(label_customer_postal_code); gtk_widget_show(entry_customer_postal_code); label_customer_dias_visita =3D gtk_label_new("Dias Visita"); entry_customer_dias_visita =3D gtk_entry_new_with_max_length(30); gtk_table_attach(GTK_TABLE(table), label_customer_dias_visita, 0, 1, = 9, 10, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK,GTK_SHRINK); gtk_table_attach(GTK_TABLE(table), entry_customer_dias_visita, 1, 2, = 9, 10, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK,GTK_SHRINK); gtk_widget_show(label_customer_dias_visita); gtk_widget_show(entry_customer_dias_visita); label_compra =3D gtk_label_new("Compra"); entry_compra =3D gtk_entry_new_with_max_length(20); gtk_table_attach(GTK_TABLE(table), label_compra, 0, 1, 10, 11, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_table_attach(GTK_TABLE(table), entry_compra, 1, 2, 10, 11, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_widget_show(label_compra); gtk_widget_show(entry_compra); label_tecn =3D gtk_label_new("T=82cnico"); entry_tecn =3D gtk_entry_new_with_max_length(20); gtk_table_attach(GTK_TABLE(table), label_tecn, 0, 1, 11, 12, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_table_attach(GTK_TABLE(table), entry_tecn, 1, 2, 11, 12, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_widget_show(label_tecn); gtk_widget_show(entry_tecn); label_pago =3D gtk_label_new("Pago"); entry_pago =3D gtk_entry_new_with_max_length(15); gtk_table_attach(GTK_TABLE(table), label_pago, 0, 1, 12, 13, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_table_attach(GTK_TABLE(table), entry_pago, 1, 2, 12, 13, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_widget_show(label_pago); gtk_widget_show(entry_pago); label_actividad =3D gtk_label_new("Actividad"); entry_actividad =3D gtk_entry_new_with_max_length(50); gtk_table_attach(GTK_TABLE(table), label_actividad, 0, 1, 13, 14, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_table_attach(GTK_TABLE(table), entry_actividad, 1, 2, 13, 14, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); gtk_widget_show(label_actividad); gtk_widget_show(entry_actividad); /* Empaquetamiento de las entries y las labels y la label */ gtk_box_pack_start(GTK_BOX(hbox_entries_clist),table,FALSE,FALSE,0); vbox_clist_botones =3D gtk_vbox_new(FALSE,0); /* Botones relacionados con el Clist */ botones =3D gtk_hbox_new(TRUE, 0); boton_nueva_entrada =3D gtk_button_new_with_label(" Introducir \n = fila "); gtk_widget_show(boton_nueva_entrada); boton_borrar_entrada =3D gtk_button_new_with_label(" Eliminar \n = entrada "); gtk_widget_show(boton_borrar_entrada); gtk_box_pack_start(GTK_BOX(botones), boton_nueva_entrada, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(botones), boton_borrar_entrada, FALSE, TRUE, 0); gtk_widget_show(botones); /* CList */ lista =3D gtk_clist_new_with_titles(12, titles); scrolled_window =3D gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, = GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(scrolled_window), lista); gtk_widget_show(scrolled_window); gtk_widget_show(lista); /* Empaquetamiento del Clist y de los botones */ = gtk_box_pack_start(GTK_BOX(vbox_clist_botones),scrolled_window,TRUE,TRUE,= 0); = gtk_box_pack_start(GTK_BOX(vbox_clist_botones),botones,FALSE,TRUE,0); gtk_widget_show(vbox_clist_botones); = gtk_box_pack_start(GTK_BOX(hbox_entries_clist),vbox_clist_botones,TRUE,TR= UE,0); gtk_window_set_title(GTK_WINDOW(window), "NORTON [Version 0.1.0 (Pinguins)]"); gtk_window_set_default_size(GTK_WINDOW(window), 700, 500); meta_scrolled_window =3D gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (meta_scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); = gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(meta_scrolled_w= indow), hbox_entries_clist); /* Creamos el men=FA */ menu_bar =3D gtk_menu_bar_new(); submenu_registro =3D gtk_menu_new(); salvar =3D gtk_menu_item_new_with_label("Guardar registro actual"); gtk_menu_append(GTK_MENU(submenu_registro),salvar); gtk_widget_show(salvar); vaciar =3D gtk_menu_item_new_with_label("Ficha nueva"); gtk_menu_append(GTK_MENU(submenu_registro),vaciar); gtk_widget_show(vaciar); salir =3D gtk_menu_item_new_with_label("Salir"); gtk_menu_append(GTK_MENU(submenu_registro),salir); gtk_widget_show(salir); menu_registro =3D gtk_menu_item_new_with_label("Registros"); = gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_registro),submenu_registro);= gtk_widget_show(menu_registro); submenu_ayuda =3D gtk_menu_new(); acerca =3D gtk_menu_item_new_with_label("Acerca..."); gtk_menu_append(GTK_MENU(submenu_ayuda),acerca); gtk_widget_show(acerca); menu_ayuda =3D gtk_menu_item_new_with_label("Ayuda"); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_ayuda),submenu_ayuda); gtk_menu_item_right_justify(GTK_MENU_ITEM(menu_ayuda)); gtk_widget_show(menu_ayuda); submenu_busquedas =3D gtk_menu_new(); buscar =3D gtk_menu_item_new_with_label("Buscar..."); gtk_menu_append(GTK_MENU(submenu_busquedas),buscar); gtk_widget_show(buscar); menu_busquedas =3D gtk_menu_item_new_with_label("B=FAsquedas"); = gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_busquedas),submenu_busquedas= ); gtk_widget_show(menu_busquedas); gtk_menu_bar_append(GTK_MENU_BAR(menu_bar),menu_registro); gtk_menu_bar_append(GTK_MENU_BAR(menu_bar),menu_busquedas); gtk_menu_bar_append(GTK_MENU_BAR(menu_bar),menu_ayuda); gtk_widget_show(menu_bar); /* Creamos la status bar */ status =3D gtk_statusbar_new(); contexto=3Dgtk_statusbar_get_context_id(GTK_STATUSBAR(status),"Barra = de estado"); gtk_widget_show(status); /* Empaquetamos los men=A3s y lo dem=A0s*/ vbox_menu_bar=3Dgtk_vbox_new(FALSE,0); gtk_box_pack_start(GTK_BOX(vbox_menu_bar),menu_bar,FALSE,FALSE,0); = gtk_box_pack_start(GTK_BOX(vbox_menu_bar),meta_scrolled_window,TRUE,TRUE,= 0); gtk_box_pack_start(GTK_BOX(vbox_menu_bar),status,FALSE,FALSE,0); gtk_widget_show(vbox_menu_bar); gtk_container_add(GTK_CONTAINER(window), vbox_menu_bar); // gtk_container_set_border_width(GTK_CONTAINER(window), 10); gtk_widget_show(table); gtk_widget_show(hbox_entries_clist); gtk_widget_show(window); gtk_widget_show(meta_scrolled_window); /*SE=D1ALES*/ gtk_signal_connect(GTK_OBJECT(window),"destroy", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(delete_event), NULL); gtk_signal_connect(GTK_OBJECT(salir), "activate", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); gtk_signal_connect(GTK_OBJECT(lista), "select_row", GTK_SIGNAL_FUNC(fila_seleccionada), NULL); gtk_signal_connect(GTK_OBJECT(lista), "unselect_row", GTK_SIGNAL_FUNC(fila_deseleccionada), NULL); gtk_signal_connect(GTK_OBJECT(boton_nueva_entrada), "clicked", GTK_SIGNAL_FUNC(nueva_entrada), NULL); gtk_signal_connect(GTK_OBJECT(boton_borrar_entrada), "clicked", GTK_SIGNAL_FUNC(borrar_entrada), NULL); gtk_signal_connect(GTK_OBJECT(acerca),"activate", GTK_SIGNAL_FUNC(acerca_callback),NULL); gtk_signal_connect(GTK_OBJECT(salvar),"activate", GTK_SIGNAL_FUNC(guardar_callback),NULL); gtk_signal_connect(GTK_OBJECT(vaciar),"activate", GTK_SIGNAL_FUNC(vaciar_callback),NULL); gtk_main(); return (0); } ------------10095A920C0255C Content-Type: application/octet-stream; name="mysql_procs.c" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="mysql_procs.c" #include "mysql_procs.h" MYSQL_RES *busqueda_por_datos(char campo[],char valor[],MYSQL = *base_de_datos,int estricto) { char peticion[MAXIMO]; /* Tengo que declararlo antes porque si no = peta! */ MYSQL_RES *resultado; =20 peticion[0]=3D'\0'; strcat(peticion,"SELECT * FROM datos WHERE ");=09 strcat(peticion, campo); strcat(peticion," LIKE "); strcat(peticion, "\""); if (!estricto) strcat(peticion, "%"); strcat(peticion,valor); if (!estricto) strcat(peticion, "%"); strcat(peticion,"\" ORDER BY id"); =20 printf("Hemos enviado la petici=F3n %s\n",peticion); if = (!mysql_real_connect(base_de_datos,NULL,NULL,NULL,"Norton",0,NULL,0)) { printf("ERROR No se pudo conectar a la base de datos. Puede que = 'mysqld' haya ca=EDdo.\n"); return; }=20 if(mysql_query(base_de_datos,peticion)=3D=3D0) { resultado=3Dmysql_store_result(base_de_datos); } else { if (base_de_datos !=3D NULL) { printf("ERROR Buscando por datos de cliente: falta de forma en la = petici=F3n.\n"); return; } else=20 { printf("ERROR No se ha cargado correctamente la base de datos.\n"); return; } } if(mysql_num_rows(resultado)=3D=3D(unsigned long)0) resultado=3DNULL; printf("Hemos acabado la busqueda!\n"); return resultado; } MYSQL_RES *busqueda_por_pedidos(char campo[],char valor[],MYSQL = *base_de_datos) { char peticion[MAXIMO]; MYSQL_RES * resultado; =20 strcat(peticion,"CREATE TEMPORARY TABLE tmp SELECT id FROM compra = WHERE "); strcat(peticion,campo); strcat(peticion," LIKE "); strcat(peticion,"\"%"); strcat(peticion,valor); strcat(peticion,"%\" ORDER BY id"); if = (!mysql_real_connect(base_de_datos,NULL,NULL,NULL,"Norton",0,NULL,0)) { printf("ERROR No se pudo conectar a la base de datos. Puede que = 'mysqld' haya ca=EDdo.\n"); return; }=20 =20 if(mysql_query(base_de_datos,peticion) !=3D 0) { printf("ERROR Con la creaci=F3n de la tabla temporal para buscar por = Pedidos.\n"); return; } peticion[0]=3D'\0';=20 strcat(peticion,"SELECT * FROM datos,tmp WHERE datos.id =3D tmp.id = ORDER BY datos.id"); if(mysql_query(base_de_datos,peticion)=3D=3D0) { resultado=3Dmysql_store_result(base_de_datos); peticion[0]=3D'\0'; strcat(peticion,"DROP TABLE tmp"); if(mysql_query(base_de_datos,peticion)!=3D0) { printf("ERROR No se pudo liberar de memoria la tabla temporal.\n"); return; } } else { if (base_de_datos !=3D NULL) { printf("ERROR Buscando por datos de cliente: falta de forma en la = petici=F3n.\n"); return; } else=20 { printf("ERROR No se ha cargado correctamente la base de datos.\n"); return; } } =20 if(mysql_num_rows(resultado)=3D=3D(unsigned long)0) = resultado=3DNULL; =20 return resultado; } int existe(char * id,MYSQL * base_de_datos) { if(busqueda_por_datos("id",id,base_de_datos,TRUE)=3D=3DNULL) return 0; else /* Ya existe el registro*/ return 1; =09 } =20 void insertar_datos_en_BBDD(char * entries_datos[],MYSQL * = base_de_datos) { char peticion[MAXIMO]; printf("Vamos a insertar"); =09 sprintf(peticion,"INSERT INTO datos VALUES = ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",= entries_datos[0],entries_datos[1],entries_datos[2],entries_datos[3], entries_datos[4],entries_datos[5],entries_datos[6],entries_datos[7], = entries_datos[8],entries_datos[9],entries_datos[10],entries_datos[11], entries_datos[12],entries_datos[13]); =09 printf("La peticion es: %s",peticion); =20 =09 /* if = (!mysql_real_connect(base_de_datos,NULL,NULL,NULL,"Norton",0,NULL,0))=20 { printf("ERROR No se pudo conectar a la base de datos. Puede que = 'mysqld' haya ca=EDdo.\n"); return; } =09 */ if(mysql_query(base_de_datos,peticion)!=3D0) { if (base_de_datos !=3D NULL)=20 { printf("ERROR Buscando por datos de cliente: falta de forma en la = petici=F3n.\n"); return; } else =20 { printf("ERROR No se ha cargado correctamente la base de datos.\n"); return; }=09 } } void insertar_pedido_en_BBDD(char * id,char *pedido[],MYSQL * = base_de_datos) { char peticion[MAXIMO]; =09 sprintf(peticion,"INSERT INTO compra VALUES = ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", id,pedido[0],pedido[1],pedido[2],pedido[3], pedido[4],pedido[5],pedido[6],pedido[7], pedido[8],pedido[9],pedido[10],pedido[11]); =20 /*if = (!mysql_real_connect(base_de_datos,NULL,NULL,NULL,"Norton",0,NULL,0)) = printf("ERROR No se pudo conectar a la base de datos. Puede que 'mysqld' = haya ca=EDdo.\n");*/ =09 if(mysql_query(base_de_datos,peticion)!=3D0) { if (base_de_datos !=3D NULL)=20 { printf("ERROR Buscando por datos de cliente: falta de forma en la = petici=F3n.\n"); return; } else =20 { printf("ERROR No se ha cargado correctamente la base de datos.\n"); return; } } } void borra_registro(char * id,MYSQL * base_de_datos) { char peticion[MAXIMO]; peticion[0]=3D'\0'; strcat(peticion,"DELETE FROM datos WHERE id=3D\""); strcat(peticion,id); strcat(peticion,"\""); printf("Vamos a borrar con: %s\n",peticion); if(mysql_query(base_de_datos,peticion)!=3D0) { if (base_de_datos !=3D NULL)=20 { printf("ERROR Buscando por datos de cliente: falta de forma en la = petici=F3n.\n"); return; } else { printf("ERROR No se ha cargado correctamente la base de datos.\n"); return; } } peticion[0]=3D'\0'; strcat(peticion,"DELETE FROM compra WHERE id=3D\""); strcat(peticion,id); strcat(peticion,"\""); printf("Vamos a borrar con: %s\n",peticion); if(mysql_query(base_de_datos,peticion)!=3D0) { if (base_de_datos !=3D NULL)=20 { printf("ERROR Buscando por datos de cliente: falta de forma en la = petici=F3n.\n"); return; } else { printf("ERROR No se ha cargado correctamente la base de datos.\n"); return; } } printf("Borrado!"); } ------------10095A920C0255C Content-Type: application/octet-stream; name="mysql_procs.h" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="mysql_procs.h" #ifndef _STDIO_ #define _STDIO_ #include #endif #ifndef _STRING_ #define _STRING_ #include #endif #if (defined(_WIN32) || defined(_WIN64))=20 #include #endif #ifndef _MYSQL_ #define _MYSQL_ #include #endif #ifndef TRUE #define TRUE 1 #endif #ifndef TRUE #define FALSE 0 #endif #define MAXIMO 500 /* No funciona en windows!!Tama=F1o m=E1ximo del = buffer. El de MySQL es de 16 KB, por lo que no problem :-) */ MYSQL_RES *busqueda_por_datos(char campo[],char valor[],MYSQL = *base_de_datos,int estricto); MYSQL_RES *busqueda_por_pedidos(char campo[],char valor[],MYSQL = *base_de_datos); int existe(char * id,MYSQL * base_de_datos); void insertar_pedido_en_BBDD(char * id,char *pedido[],MYSQL * = base_de_datos); void insertar_datos_en_BBDD(char *entries_datos[],MYSQL * = base_de_datos); void borra_registro(char * id,MYSQL * base_de_datos); ------------10095A920C0255C Content-Type: text/plain; charset=us-ascii -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/ ------------10095A920C0255C--