Changeset 4989 for trunk/oscam-config.c
- Timestamp:
- 04/13/11 22:35:38 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/oscam-config.c
r4983 r4989 3703 3703 3704 3704 if (!strcmp(token, "blocknano")) { 3705 //reset 3706 for (i = 0 ; i < 256; i++) 3707 rdr->b_nano[i] &= ~0x01; 3705 rdr->b_nano = 0; 3708 3706 if (strlen(value) > 0) { 3709 //wildcard is used3710 3707 if (!strcmp(value,"all")) { 3711 for (i = 0 ; i < 256; i++) { 3712 rdr->b_nano[i] |= 0x01; //set all lsb's to block all nanos 3708 rdr->b_nano = 0xFFFF; 3709 } else { 3710 for (ptr = strtok(value, ","); ptr; ptr = strtok(NULL, ",")) { 3711 i = (byte_atob(ptr) % 0x80); 3712 if (i >= 0 && i <= 16) 3713 rdr->b_nano |= (1 << i); 3713 3714 } 3714 3715 } 3715 else { 3716 } 3717 return; 3718 } 3719 3720 if (!strcmp(token, "savenano")) { 3721 rdr->s_nano = 0; 3722 if (strlen(value) > 0) { 3723 if (!strcmp(value,"all")) { 3724 rdr->s_nano = 0xFFFF; 3725 } else { 3716 3726 for (ptr = strtok(value, ","); ptr; ptr = strtok(NULL, ",")) { 3717 i f ((i = byte_atob(ptr)) >= 0) {3718 rdr->b_nano[i] |= 0x01; //lsb is set when to block nano3719 }3727 i = (byte_atob(ptr) % 0x80); 3728 if (i >= 0 && i <= 16) 3729 rdr->s_nano |= (1 << i); 3720 3730 } 3721 3731 } … … 3770 3780 return; 3771 3781 } 3772 }3773 3774 if (!strcmp(token, "savenano")) {3775 //reset3776 for (i = 0 ; i < 256; i++)3777 rdr->b_nano[i] &= ~0x02;3778 if (strlen(value) > 0) {3779 //wildcard is used3780 if (!strcmp(value,"all")) {3781 for (i = 0 ; i < 256; i++) {3782 rdr->b_nano[i] |= 0x02; //set all lsb+1 to save all nanos to file3783 }3784 }3785 else {3786 for (ptr = strtok(value, ","); ptr; ptr = strtok(NULL, ",")) {3787 if ((i = byte_atob(ptr)) >= 0) {3788 rdr->b_nano[i] |= 0x02; //lsb+1 is set when to save nano to file3789 }3790 }3791 }3792 }3793 return;3794 3782 } 3795 3783 … … 4473 4461 */ 4474 4462 char *mk_t_nano(struct s_reader *rdr, uchar flag){ 4475 4476 int i, needed = 0, pos = 0; 4477 char *dot = ""; 4478 4479 for(i = 0; i < 256; ++i) 4480 if((rdr->b_nano[i] & flag)) 4463 int i, pos = 0, needed = 0; 4464 uint16_t nano = 0; 4465 4466 if (flag==0x01) 4467 nano=rdr->b_nano; 4468 else 4469 nano=rdr->s_nano; 4470 4471 for (i=0; i<16; i++) 4472 if ((1 << i) & nano) 4481 4473 needed++; 4482 4474 4483 4475 char *value; 4484 if (n eeded == 256) {4476 if (nano == 0xFFFF) { 4485 4477 if(!cs_malloc(&value, (3 * sizeof(char)) + 1, -1)) return ""; 4486 4478 snprintf(value, 4, "all"); 4487 return value;4488 4479 } else { 4489 4480 if(needed == 0 || !cs_malloc(&value, (needed * 3 * sizeof(char)) + 1, -1)) return ""; 4490 4481 value[0] = '\0'; 4491 for(i = 0; i < 256; ++i) { 4492 if(rdr->b_nano[i] & flag) { 4493 pos += snprintf(value + pos, (needed*3)+1-pos, "%s%02x", dot, i); 4494 dot=","; 4495 } 4496 } 4497 return value; 4498 } 4482 for (i=0; i<16; i++) { 4483 if ((1 << i) & nano) 4484 pos += snprintf(value + pos, (needed*3)+1-pos, "%s%02x", pos ? "," : "", (i+0x80)); 4485 } 4486 } 4487 return value; 4499 4488 } 4500 4489
Note:
See TracChangeset
for help on using the changeset viewer.