dvb-apps/util/[ca_]zap.c parameter parsing code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

I'm just a ittle bit perplexed. The code in the dvb_apps repository for zap that parses the command line options,as far as I can tell, should (and does) always fail with the usage() message and drop out. Basically, the arpos and argc variables in the comparisons are around the wrong way, for example the current hg code reads:

while(argpos != argc) {

if (!strcmp(argv[argpos], "-h")) {

    usage();

} else if (!strcmp(argv[argpos], "-adapter")) {


  if ((argpos - argc) < 2) //<--- will always be true, as argpos is < argc

    usage();


 if (sscanf(argv[argpos+1], "%i", &adapter_id) != 1)

	usage();

 argpos+=2;

 } else if (!strcmp(argv[argpos], "-frontend")) {

 if ((argpos - argc) < 2)

	 usage();

 if (sscanf(argv[argpos+1], "%i", &frontend_id) != 1)

	  usage();

 argpos+=2;

.
.
.

Easily fixed, by swapping the argpos and argc arguments in all the (argpos - argc) if statements ........ The perplexing thing is, that according to hg it's been like this for 6 months ... essentially, this program has done nothing but print out the -h usage instructions for the last six months (as far as I remember at least , cz_zap has been renamed to zap now, and I odon't know how to look the history for the deleted folder up via the web interface) ? Doesn't anyone *ever* test these things before they commit them ....

Anyway, should I expect this utility to be working ? Once I fix the above issues with yestrdays tip I get :

zap -adapter 1 -out :dvr MAX
CAM Application type: 01
CAM Application manufacturer: 06ff
CAM Manufacturer code: 06ff
CAM Menu string: Irdeto Access
CAM supports the following ca system ids

Where it quite happily sits until I hit control C. Lots of typical dst debug still going on on the kernel logs, and strace seems to indicate it's just doing alot of calling some sleep function. I get the neaking feeling it should be showing me some ca system id stuff and then goign on to do wonderful things with /dev/adapter1/dvr0 ...

I'm using Manu's v4l-algo tree with a Twinhan VP-1030.

some dmesg output during the above command. It all looks reasonable to me, unless "resetting state machine" is a bad thing .... THe driver is so optimistic in it's logging (the logs are smattered with SUCCESS and exclamation remarks) it's hard to know when there is a problem.



===================================

6 251 22 239 128 88 1 33

dst_ca_ioctl:  -->CA_GET_SLOT_INFO Success !

dst_ca_ioctl:  Getting Slot info

put_checksum:  Computing string checksum.

put_checksum:   -> string length : 0x07

put_checksum:   -> checksum      : 0xfb

dst_put_ci:  Put Command

dst(1) dst_comm_init: Initializing DST.

dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000]

dst(1) rdc_reset_state: Resetting state machine

dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000]

dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002]

writing [ 00 05 00 00 00 00 00 fb ]

dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000]

dst(1) dst_wait_dst_ready: dst wait ready after 2

ca_get_slot_info:  -->dst_put_ci SUCCESS !

ca_get_slot_info:  Slot info = [10]

===================================

6 251 22 10 128 88 1 6

dst_ca_ioctl:  -->CA_GET_SLOT_INFO Success !

dst_ca_ioctl:  Getting Slot info

put_checksum:  Computing string checksum.

put_checksum:   -> string length : 0x07

put_checksum:   -> checksum      : 0xfb

dst_put_ci:  Put Command

dst(1) dst_comm_init: Initializing DST.

dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000]

dst(1) rdc_reset_state: Resetting state machine

dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000]

dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002]

writing [ 00 05 00 00 00 00 00 fb ]

dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000]

dst(1) dst_wait_dst_ready: dst wait ready after 2

ca_get_slot_info:  -->dst_put_ci SUCCESS !

ca_get_slot_info:  Slot info = [206]

===================================

6 251 21 206 128 88 1 67

dst_ca_ioctl:  -->CA_GET_SLOT_INFO Success !

dst_ca_ioctl:  Getting Slot info

put_checksum:  Computing string checksum.

put_checksum:   -> string length : 0x07

put_checksum:   -> checksum      : 0xfb

dst_put_ci:  Put Command

dst(1) dst_comm_init: Initializing DST.

dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000]

dst(1) rdc_reset_state: Resetting state machine

dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000]

dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002]

writing [ 00 05 00 00 00 00 00 fb ]

dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000]










_______________________________________________

linux-dvb@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux