From: Bernhard W. <B....@gm...> - 2002-12-25 15:12:37
|
Hello, On Sunday 22 December 2002 09:25, Christoph Bartelmus wrote: > > You a right. This should be considered a bug. > Do you already have a patch to fix this? > The following patch works for me.=20 Merry Christmas! *** lirc-0.6.6/tools/lirc_client.c=09Tue Apr 24 21:05:58 2001 --- lirc-0.6.6-test/tools/lirc_client.c=09Mon Dec 23 19:13:29 2002 *************** *** 962,975 **** =09char *s; =09int do_once=3D1; =09 - =09if(scan->flags&quit) - =09{ - =09=09config->next=3DNULL; - =09} - =09else - =09{ - =09=09config->next=3Dscan->next; - =09} =09if(scan->flags&mode) =09{ =09=09lirc_clearmode(config); --- 962,967 ---- *************** *** 1116,1122 **** --- 1108,1116 ---- =09int rep; =09char *backup; =09char *remote,*button; + =09char *s=3DNULL; =09struct lirc_config_entry *scan; + =09int quit_happened; =20 =09*string=3DNULL; =09if(sscanf(code,"%*llx %x %*s %*s\n",&rep)=3D=3D1) *************** *** 1136,1169 **** =09=09} =09=09 =09=09scan=3Dconfig->next; =09=09while(scan!=3DNULL) =09=09{ =09=09=09if(lirc_iscode(scan,remote,button,rep) && =09=09=09 (scan->mode=3D=3DNULL || =09=09=09 (scan->mode!=3DNULL &&=20 =09=09=09 config->current_mode!=3DNULL && ! =09=09=09 strcasecmp(scan->mode,config->current_mode)=3D=3D0)) =09=09=09 ) =09=09=09{ - =09=09=09=09char *s; =09=09=09=09s=3Dlirc_execute(config,scan); ! =09=09=09=09if(s!=3DNULL) ! =09=09=09=09{ ! =09=09=09=09=09free(backup); ! =09=09=09=09=09*string=3Ds; ! =09=09=09=09=09return(0); ! =09=09=09=09} ! =09=09=09} ! =09=09=09if(config->next!=3DNULL) =09=09=09{ =09=09=09=09scan=3Dscan->next; =09=09=09} =09=09=09else =09=09=09{ ! =09=09=09=09scan=3DNULL; =09=09=09} =09=09} =09=09free(backup); =09} =09config->next=3Dconfig->first; =09return(0); --- 1130,1169 ---- =09=09} =20 =09=09scan=3Dconfig->next; + =09=09quit_happened=3D0; =09=09while(scan!=3DNULL) =09=09{ +=20 =09=09=09if(lirc_iscode(scan,remote,button,rep) && =09=09=09 (scan->mode=3D=3DNULL || =09=09=09 (scan->mode!=3DNULL && =09=09=09 config->current_mode!=3DNULL && ! =09=09=09 strcasecmp(scan->mode,config->current_mode)=3D=3D0)) && ! =09=09=09 quit_happened=3D=3D0 =09=09=09 ) =09=09=09{ =09=09=09=09s=3Dlirc_execute(config,scan); ! =09=09=09=09if(scan->flags&quit) =09=09=09=09{ + =09=09=09=09=09quit_happened=3D1; + =09=09=09=09=09config->next=3DNULL; =09=09=09=09=09scan=3Dscan->next; + =09=09=09=09=09continue; =09=09=09=09} =09=09=09=09else =09=09=09=09{ ! =09=09=09=09=09config->next=3Dscan->next; ! =09=09=09=09=09break; =09=09=09=09} =09=09=09} + =09=09=09scan=3Dscan->next; + =09=09} =09=09free(backup); + =09=09if(s!=3DNULL) + =09=09{ + =09=09=09*string=3Ds; + =09=09=09return(0); + =09=09} =09} =09config->next=3Dconfig->first; =09return(0); |