Re: [PATCH] dvb-apps/util/szap/czap.c ERROR: cannot parse service data

2010-01-25 Thread klaas de waal
On Sun, Jan 24, 2010 at 10:14 PM, Manu Abraham abraham.m...@gmail.com wrote:
 Hi Klaas,

 On Sun, Jan 24, 2010 at 2:58 PM, klaas de waal klaas.de.w...@gmail.com 
 wrote:
 The czap utility (dvb-apps/util/szap/czap.c) cannot scan the channel
 configuration file when compiled on Fedora 12 with gcc-4.4.2.

 The czap output is:

 [kl...@myth2 szap]$ ./czap -c ~/.czap/ziggo-channels.conf Cartoon
 using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
 reading channels from file '/local/klaas/.czap/ziggo-channels.conf'
  1 Cartoon:35600:INVERSION_AUTO:6875000:FEC_NONE:QAM_64:1660:1621
 ERROR: cannot parse service data

 Problem is tha the sscanf function uses the %a[^:] format
 specifier. According to man sscanf you need to define _GNU_SOURCE if
 you want this to work because it is a gnu-only extension.
 Adding a first line #define _GNU_SOURCE to czap.c and recompiling
 solves the problem.

 The czap output is now:

 [kl...@myth2 szap]$ ./czap -c ~/.czap/ziggo-channels.conf Cartoon
 using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
 reading channels from file '/local/klaas/.czap/ziggo-channels.conf'
  1 Cartoon:35600:INVERSION_AUTO:6875000:FEC_NONE:QAM_64:1660:1621
  1 Cartoon: f 35600, s 6875000, i 2, fec 0, qam 3, v 0x67c, a 0x655
 status 00 | signal  | snr b7b7 | ber 000f | unc 0098 |
 status 1f | signal d5d5 | snr f3f3 | ber 06c0 | unc 009b | 
 FE_HAS_LOCK
 status 1f | signal d5d5 | snr f4f4 | ber  | unc  | 
 FE_HAS_LOCK

 This is done on a Linux 2.6.32.2 kernel with a TT C-1501 DVB-C card.

 Signed-off-by: Klaas de Waal klaas.de.w...@gmail.com

 ---

 diff -r 61b72047a995 util/szap/czap.c
 --- a/util/szap/czap.c  Sun Jan 17 17:03:27 2010 +0100
 +++ b/util/szap/czap.c  Sun Jan 24 11:40:43 2010 +0100
 @@ -1,3 +1,4 @@
 +#define _GNU_SOURCE
  #include sys/types.h
  #include sys/stat.h
  #include sys/ioctl.h


 There seems to be other instances where _GNU_SOURCE needs to be
 defined, from a quick look. Care to send a patch against the entire
 dvb-apps tree ?

 Regards,
 Manu


Hi Manu,

I did have a reasonably good look at the code and at the compilation
log created with -pedantic added to the CFLAGS but although there
are a lot of GNU extensions used I think they will compile correct. I
do not think that the _GNU_SOURCE definitions need to be added
anywhere.

Having said that, I am not even happy anymore with the _GNU_SOURCE in
czap.c although it does solve the problem.

I have now added std=gnu99 -Wformat to the default CFLAGS in
Make.rules. This flags the use of the a format specifier as used in
the sscanf statement in czap.c as an error, although it works when
_GNU_SOURCE is defined.
I have now modified the czap.c to use the m format specifier which
does just what the 'a used to do.
This works OK, it does not give compilation messages and it does not
require _GNU_SOURCE so I think it is a better solution. Hope you like
it.

Regards,
Klaas.

Signed-off-by: Klaas de Waal klaas.de.w...@gmail.com

---

diff -r 61b72047a995 Make.rules
--- a/Make.rulesSun Jan 17 17:03:27 2010 +0100
+++ b/Make.rulesMon Jan 25 22:27:05 2010 +0100
@@ -1,6 +1,7 @@
 # build rules for linuxtv.org dvb-apps

-CFLAGS ?= -g -Wall -W -Wshadow -Wpointer-arith -Wstrict-prototypes
+CFLAGS ?= -g -Wall -W -Wshadow -Wpointer-arith -Wstrict-prototypes \
+-std=gnu99 -Wformat

 ifneq ($(lib_name),)

diff -r 61b72047a995 util/szap/czap.c
--- a/util/szap/czap.c  Sun Jan 17 17:03:27 2010 +0100
+++ b/util/szap/czap.c  Mon Jan 25 22:27:05 2010 +0100
@@ -141,7 +141,7 @@
}
printf(%3d %s, chan_no, chan);

-   if ((sscanf(chan, %a[^:]:%d:%a[^:]:%d:%a[^:]:%a[^:]:%d:%d\n,
+   if ((sscanf(chan, %m[^:]:%d:%m[^:]:%d:%m[^:]:%m[^:]:%d:%d\n,
name, frontend-frequency,
inv, frontend-u.qam.symbol_rate,
fec, mod, vpid, apid) != 8)
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] dvb-apps/util/szap/czap.c ERROR: cannot parse service data

2010-01-24 Thread Manu Abraham
Hi Klaas,

On Sun, Jan 24, 2010 at 2:58 PM, klaas de waal klaas.de.w...@gmail.com wrote:
 The czap utility (dvb-apps/util/szap/czap.c) cannot scan the channel
 configuration file when compiled on Fedora 12 with gcc-4.4.2.

 The czap output is:

 [kl...@myth2 szap]$ ./czap -c ~/.czap/ziggo-channels.conf Cartoon
 using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
 reading channels from file '/local/klaas/.czap/ziggo-channels.conf'
  1 Cartoon:35600:INVERSION_AUTO:6875000:FEC_NONE:QAM_64:1660:1621
 ERROR: cannot parse service data

 Problem is tha the sscanf function uses the %a[^:] format
 specifier. According to man sscanf you need to define _GNU_SOURCE if
 you want this to work because it is a gnu-only extension.
 Adding a first line #define _GNU_SOURCE to czap.c and recompiling
 solves the problem.

 The czap output is now:

 [kl...@myth2 szap]$ ./czap -c ~/.czap/ziggo-channels.conf Cartoon
 using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
 reading channels from file '/local/klaas/.czap/ziggo-channels.conf'
  1 Cartoon:35600:INVERSION_AUTO:6875000:FEC_NONE:QAM_64:1660:1621
  1 Cartoon: f 35600, s 6875000, i 2, fec 0, qam 3, v 0x67c, a 0x655
 status 00 | signal  | snr b7b7 | ber 000f | unc 0098 |
 status 1f | signal d5d5 | snr f3f3 | ber 06c0 | unc 009b | FE_HAS_LOCK
 status 1f | signal d5d5 | snr f4f4 | ber  | unc  | FE_HAS_LOCK

 This is done on a Linux 2.6.32.2 kernel with a TT C-1501 DVB-C card.

 Signed-off-by: Klaas de Waal klaas.de.w...@gmail.com

 ---

 diff -r 61b72047a995 util/szap/czap.c
 --- a/util/szap/czap.c  Sun Jan 17 17:03:27 2010 +0100
 +++ b/util/szap/czap.c  Sun Jan 24 11:40:43 2010 +0100
 @@ -1,3 +1,4 @@
 +#define _GNU_SOURCE
  #include sys/types.h
  #include sys/stat.h
  #include sys/ioctl.h


There seems to be other instances where _GNU_SOURCE needs to be
defined, from a quick look. Care to send a patch against the entire
dvb-apps tree ?

Regards,
Manu
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html