delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2002/02/19/07:57:48

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
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 <ptsekov AT syntrex DOT com>
X-Mailer: The Bat! (v1.53d) UNREG / CD5BF9353B3B7091
Reply-To: Pavel Tsekov <ptsekov AT syntrex DOT com>
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

------------10095A920C0255C
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

This is a forwarded message
From: Dani P. <danielpa AT wanadoo DOT es>
To: "Pavel Tsekov" <ptsekov AT syntrex DOT com>
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 <ptsekov AT syntrex DOT com>
To: Dani P. <danielpa AT wanadoo DOT es>
Cc: <cygwin AT cygwin DOT com>
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. <danielpa AT wanadoo DOT es>
> > To: <cygwin AT cygwin DOT com>
> > 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 <stdio.h>=0A=
#endif=0A=
=0A=
#ifndef _GTK_=0A=
#define _GTK_=0A=
#include <gtk/gtk.h>=0A=
#endif=0A=
=0A=
#ifndef _STRING_=0A=
#define _STRING_=0A=
#include <string.h> /*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 <stdio.h>
#endif

#ifndef _STRING_
#define _STRING_
#include <string.h>
#endif

#if (defined(_WIN32) || defined(_WIN64))=20
#include <windows.h>
#endif

#ifndef _MYSQL_
#define _MYSQL_
#include <mysql/mysql.h>
#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--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019