Changeset 1084
- Timestamp:
- 01/05/10 23:44:35 (14 years ago)
- Location:
- trunk
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/CMakeLists.txt
r997 r1084 248 248 # some optimisations 249 249 if (OSCamOperatingSystem MATCHES "Mac OS X") 250 add_definitions ("-O2 -Winline -Wall -Wno- implicit-function-declaration -Wno-parentheses -finline-functions -fomit-frame-pointer -m32")250 add_definitions ("-O2 -Winline -Wall -Wno-parentheses -finline-functions -fomit-frame-pointer -m32") 251 251 else (OSCamOperatingSystem MATCHES "Mac OS X") 252 add_definitions ("-O2 -Winline -Wall -Wno- implicit-function-declaration -Wno-parentheses -finline-functions -fomit-frame-pointer")252 add_definitions ("-O2 -Winline -Wall -Wno-parentheses -finline-functions -fomit-frame-pointer") 253 253 endif (OSCamOperatingSystem MATCHES "Mac OS X") 254 254 -
trunk/Makefile
r979 r1084 66 66 OS_CULI="-lncurses" \ 67 67 OS_PTLI="-lpthread" \ 68 DS_OPTS="-O2 -DOS_LINUX -DCS_CONFDIR=${CS_CONFDIR} -Winline -Wall -Wno- implicit-function-declaration -Wno-parentheses-finline-functions -fomit-frame-pointer -D'CS_SVN_VERSION="\"$(SVN_REV)\""'" \68 DS_OPTS="-O2 -DOS_LINUX -DCS_CONFDIR=${CS_CONFDIR} -Winline -Wall -Wno-parentheses -finline-functions -fomit-frame-pointer -D'CS_SVN_VERSION="\"$(SVN_REV)\""'" \ 69 69 DS_CFLAGS="-c" \ 70 70 DS_LDFLAGS="" \ … … 87 87 OS_CULI="-lncurses" \ 88 88 OS_PTLI="-lpthread -lpcsclite" \ 89 DS_OPTS="-O2 -DOS_LINUX -DCS_CONFDIR=${CS_CONFDIR} -DHAVE_PCSC=1 -I/usr/include/PCSC -Winline -Wall -Wno-implicit-function-declaration -Wno-parentheses 89 DS_OPTS="-O2 -DOS_LINUX -DCS_CONFDIR=${CS_CONFDIR} -DHAVE_PCSC=1 -I/usr/include/PCSC -Winline -Wall -Wno-implicit-function-declaration -Wno-parentheses -finline-functions -fomit-frame-pointer -D'CS_SVN_VERSION="\"$(SVN_REV)\""'" \ 90 90 DS_CFLAGS="-c" \ 91 91 DS_LDFLAGS="" \ … … 108 108 OS_CULI="-lncurses" \ 109 109 OS_PTLI="-lpthread" \ 110 DS_OPTS="-O2 -DOS_MACOSX -DNEED_DAEMON -DCS_NOSHM -DHAVE_PTHREAD_H -DUSE_PTHREAD -DCS_CONFDIR=${CS_CONFDIR} -DHAVE_PCSC=1 -Winline -Wall -Wno-implicit-function-declaration -Wno-parentheses 110 DS_OPTS="-O2 -DOS_MACOSX -DNEED_DAEMON -DCS_NOSHM -DHAVE_PTHREAD_H -DUSE_PTHREAD -DCS_CONFDIR=${CS_CONFDIR} -DHAVE_PCSC=1 -Winline -Wall -Wno-implicit-function-declaration -Wno-parentheses -finline-functions -fomit-frame-pointer -D'CS_SVN_VERSION="\"$(SVN_REV)\""'" \ 111 111 DS_CFLAGS="-c" \ 112 112 DS_LDFLAGS="-framework PCSC" \ -
trunk/csctapi/atr.c
r1071 r1084 25 25 #include "defines.h" 26 26 #include "atr.h" 27 #include "../globals.h"28 27 #include <stdlib.h> 29 28 #include <string.h> -
trunk/csctapi/config.h
r565 r1084 3 3 4 4 #include "../oscam-config.h" 5 #include "../globals.h" 5 6 6 7 /* Debug CT-API */ -
trunk/globals.h
r1083 r1084 193 193 //typedef unsigned char uchar; 194 194 //typedef unsigned long ulong; 195 196 typedef unsigned char uint8; 197 typedef unsigned short uint16; 198 typedef unsigned int uint32; 199 typedef unsigned long long uint64; 195 200 196 201 // constants … … 641 646 extern long word_atob(char *); 642 647 extern int key_atob(char *, uchar *); 643 extern int key_atob4(char *, uchar *); 648 extern int key_atob14(char *, uchar *); 649 extern int key_atob_l(char *, uchar *, int); 644 650 extern char *key_btoa(char *, uchar *); 645 651 extern char *cs_hexdump(int, uchar *, int); … … 699 705 extern void cs_disconnect_client(void); 700 706 extern int check_ecmcache(ECM_REQUEST *, ulong); 707 extern void store_logentry(char *); 701 708 extern int write_to_pipe(int, int, uchar *, int); 702 709 extern int read_from_pipe(int, uchar **, int); … … 750 757 // oscam-reader 751 758 extern int ridx, logfd; 759 extern int reader_cmd2api(uchar *, int); 760 extern int reader_cmd2icc(uchar *, int); 761 extern int card_write(uchar *, uchar *); 752 762 extern void cs_ri_brk(int); 753 763 extern void cs_ri_log(char *,...); 754 764 extern void start_cardreader(void); 755 765 extern void reader_card_info(void); 766 extern int network_tcp_connection_open(uint8 *, uint16); 756 767 extern void network_tcp_connection_close(int); 757 768 … … 811 822 extern int cryptoworks_do_emm(EMM_PACKET *); 812 823 extern int cryptoworks_card_info(void); 824 extern int CheckSctLen(const uchar *, int); 813 825 814 826 // reader-seca … … 831 843 extern void nagra2_post_process(); 832 844 845 // reader-conax 846 extern int conax_card_init(uchar *, int); 847 extern int conax_do_ecm(ECM_REQUEST *); 848 extern int conax_do_emm(EMM_PACKET *); 849 extern int conax_card_info(void); 850 851 // reader-dre 852 extern int dre_card_init(uchar *, int); 853 extern int dre_do_ecm(ECM_REQUEST *); 854 extern int dre_do_emm(EMM_PACKET *); 855 extern int dre_card_info(void); 856 833 857 // protocol modules 834 858 extern int monitor_send_idx(int, char *); -
trunk/module-camd35.c
r573 r1084 413 413 { 414 414 int handle=0; 415 handle = network_tcp_connection_open( reader[ridx].device, reader[ridx].r_port);415 handle = network_tcp_connection_open((uint8 *)reader[ridx].device, reader[ridx].r_port); 416 416 if (handle<0) return(0); 417 417 -
trunk/module-cccam.c
r941 r1084 167 167 #define X_FREE(X) do { if (X) { free(X); X = NULL; } } while(0) 168 168 169 typedef unsigned char uint8;170 typedef unsigned short uint16;171 typedef unsigned int uint32;172 typedef unsigned long long uint64;173 174 169 typedef enum { 175 170 DECRYPT, … … 310 305 cur_card >>= 2; 311 306 } 312 }313 314 static int connect_nonb(int sockfd, const struct sockaddr *saptr, socklen_t salen, int nsec)315 {316 int flags, n, error;317 socklen_t len;318 fd_set rset, wset;319 struct timeval tval;320 321 flags = fcntl(sockfd, F_GETFL, 0);322 fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);323 324 error = 0;325 cs_debug("cccam: conn_nb 1 (fd=%d)", sockfd);326 327 if ( (n = connect(sockfd, saptr, salen)) < 0) {328 if( errno==EALREADY ) {329 cs_debug("cccam: conn_nb in progress, errno=%d", errno);330 return(-1);331 }332 else if( errno==EISCONN ) {333 cs_debug("cccam: conn_nb already connected, errno=%d", errno);334 goto done;335 }336 cs_debug("cccam: conn_nb 2 (fd=%d)", sockfd);337 if (errno != EINPROGRESS) {338 cs_debug("cccam: conn_nb 3 (fd=%d)", sockfd);339 //return(-1);340 }341 }342 343 cs_debug("cccam: n = %d\n", n);344 345 /* Do whatever we want while the connect is taking place. */346 if (n == 0)347 goto done; /* connect completed immediately */348 349 FD_ZERO(&rset);350 FD_SET(sockfd, &rset);351 wset = rset;352 tval.tv_sec = nsec;353 tval.tv_usec = 0;354 355 if ( (n = select(sockfd+1, &rset, &wset, 0, nsec ? &tval : 0)) == 0) {356 //close(sockfd); // timeout357 cs_debug("cccam: conn_nb 4 (fd=%d)", sockfd);358 errno = ETIMEDOUT;359 return(-1);360 }361 362 cs_debug("cccam: conn_nb 5 (fd=%d)", sockfd);363 364 if (FD_ISSET(sockfd, &rset) || FD_ISSET(sockfd, &wset)) {365 cs_debug("cccam: conn_nb 6 (fd=%d)", sockfd);366 len = sizeof(error);367 if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &error, &len) < 0) {368 cs_debug("cccam: conn_nb 7 (fd=%d)", sockfd);369 return(-1); // Solaris pending error370 }371 } else {372 cs_debug("cccam: conn_nb 8 (fd=%d)", sockfd);373 return -2;374 }375 376 done:377 cs_debug("cccam: conn_nb 9 (fd=%d)", sockfd);378 fcntl(sockfd, F_SETFL, flags); /* restore file status flags */379 380 if (error) {381 cs_debug("cccam: conn_nb 10 (fd=%d)", sockfd);382 //close(sockfd); /* just in case */383 errno = error;384 return(-1);385 }386 return(0);387 }388 389 static int network_tcp_connection_open(uint8 *hostname, uint16 port)390 {391 392 int flags;393 if( connect_nonb(client[cs_idx].udp_fd,394 (struct sockaddr *)&client[cs_idx].udp_sa,395 sizeof(client[cs_idx].udp_sa), 5) < 0)396 {397 cs_log("cccam: connect(fd=%d) failed: (errno=%d)", client[cs_idx].udp_fd, errno);398 return -1;399 }400 flags = fcntl(client[cs_idx].udp_fd, F_GETFL, 0);401 flags &=~ O_NONBLOCK;402 fcntl(client[cs_idx].udp_fd, F_SETFL, flags );403 404 return client[cs_idx].udp_fd;405 307 } 406 308 -
trunk/module-newcamd.c
r1076 r1084 2 2 3 3 #define CWS_NETMSGSIZE 272 4 5 typedef unsigned char uint8;6 typedef unsigned short uint16;7 typedef unsigned int uint32;8 typedef unsigned long long uint64;9 4 10 5 #define CWS_FIRSTCMDNO 0xe0 … … 212 207 return -1; 213 208 return buffer[2]; 214 }215 216 int217 connect_nonb(int sockfd, const struct sockaddr *saptr, socklen_t salen, int nsec)218 {219 int flags, n, error;220 socklen_t len;221 fd_set rset, wset;222 struct timeval tval;223 224 flags = fcntl(sockfd, F_GETFL, 0);225 fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);226 227 error = 0;228 cs_debug("conn_nb 1 (fd=%d)", sockfd);229 230 if ( (n = connect(sockfd, saptr, salen)) < 0) {231 if( errno==EALREADY ) {232 cs_debug("conn_nb in progress, errno=%d", errno);233 return(-1);234 }235 else if( errno==EISCONN ) {236 cs_debug("conn_nb already connected, errno=%d", errno);237 goto done;238 }239 cs_debug("conn_nb 2 (fd=%d)", sockfd);240 if (errno != EINPROGRESS) {241 cs_debug("conn_nb 3 (fd=%d)", sockfd);242 return(-1);243 }244 }245 246 /* Do whatever we want while the connect is taking place. */247 if (n == 0)248 goto done; /* connect completed immediately */249 250 FD_ZERO(&rset);251 FD_SET(sockfd, &rset);252 wset = rset;253 tval.tv_sec = nsec;254 tval.tv_usec = 0;255 256 if ( (n = select(sockfd+1, &rset, &wset, 0, nsec ? &tval : 0)) == 0) {257 //close(sockfd); // timeout258 cs_debug("conn_nb 4 (fd=%d)", sockfd);259 errno = ETIMEDOUT;260 return(-1);261 }262 263 cs_debug("conn_nb 5 (fd=%d)", sockfd);264 265 if (FD_ISSET(sockfd, &rset) || FD_ISSET(sockfd, &wset)) {266 cs_debug("conn_nb 6 (fd=%d)", sockfd);267 len = sizeof(error);268 if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &error, &len) < 0) {269 cs_debug("conn_nb 7 (fd=%d)", sockfd);270 return(-1); // Solaris pending error271 }272 } else {273 cs_debug("conn_nb 8 (fd=%d)", sockfd);274 return -2;275 }276 277 done:278 cs_debug("conn_nb 9 (fd=%d)", sockfd);279 fcntl(sockfd, F_SETFL, flags); /* restore file status flags */280 281 if (error) {282 cs_debug("conn_nb 10 (fd=%d)", sockfd);283 //close(sockfd); /* just in case */284 errno = error;285 return(-1);286 }287 return(0);288 }289 290 int network_tcp_connection_open(uint8 *hostname, uint16 port)291 {292 int flags;293 if( connect_nonb(client[cs_idx].udp_fd,294 (struct sockaddr *)&client[cs_idx].udp_sa,295 sizeof(client[cs_idx].udp_sa), 5) < 0)296 {297 cs_log("connect(fd=%d) failed: (errno=%d)", client[cs_idx].udp_fd, errno);298 return -1;299 }300 flags = fcntl(client[cs_idx].udp_fd, F_GETFL, 0);301 flags &=~ O_NONBLOCK;302 fcntl(client[cs_idx].udp_fd, F_SETFL, flags );303 304 return client[cs_idx].udp_fd;305 209 } 306 210 -
trunk/module-radegast.c
r648 r1084 204 204 } 205 205 206 static int connect_nonb(int sockfd, const struct sockaddr *saptr, socklen_t salen, int nsec)207 {208 int flags, n, error;209 socklen_t len;210 fd_set rset, wset;211 struct timeval tval;212 213 flags = fcntl(sockfd, F_GETFL, 0);214 fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);215 216 error = 0;217 cs_debug("radegast: conn_nb 1 (fd=%d)", sockfd);218 219 if ( (n = connect(sockfd, saptr, salen)) < 0) {220 if( errno==EALREADY ) {221 cs_debug("radegast: conn_nb in progress, errno=%d", errno);222 return(-1);223 }224 else if( errno==EISCONN ) {225 cs_debug("radegast: conn_nb already connected, errno=%d", errno);226 goto done;227 }228 cs_debug("radegast: conn_nb 2 (fd=%d)", sockfd);229 if (errno != EINPROGRESS) {230 cs_debug("radegast: conn_nb 3 (fd=%d)", sockfd);231 return(-1);232 }233 }234 235 cs_debug("radegast: n = %d\n", n);236 237 /* Do whatever we want while the connect is taking place. */238 if (n == 0)239 goto done; /* connect completed immediately */240 241 FD_ZERO(&rset);242 FD_SET(sockfd, &rset);243 wset = rset;244 tval.tv_sec = nsec;245 tval.tv_usec = 0;246 247 if ( (n = select(sockfd+1, &rset, &wset, 0, nsec ? &tval : 0)) == 0) {248 //close(sockfd); // timeout249 cs_debug("radegast: conn_nb 4 (fd=%d)", sockfd);250 errno = ETIMEDOUT;251 return(-1);252 }253 254 cs_debug("radegast: conn_nb 5 (fd=%d)", sockfd);255 256 if (FD_ISSET(sockfd, &rset) || FD_ISSET(sockfd, &wset)) {257 cs_debug("radegast: conn_nb 6 (fd=%d)", sockfd);258 len = sizeof(error);259 if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &error, &len) < 0) {260 cs_debug("radegast: conn_nb 7 (fd=%d)", sockfd);261 return(-1); // Solaris pending error262 }263 } else {264 cs_debug("radegast: conn_nb 8 (fd=%d)", sockfd);265 return -2;266 }267 268 done:269 cs_debug("radegast: conn_nb 9 (fd=%d)", sockfd);270 fcntl(sockfd, F_SETFL, flags); /* restore file status flags */271 272 if (error) {273 cs_debug("cccam: conn_nb 10 (fd=%d)", sockfd);274 //close(sockfd); /* just in case */275 errno = error;276 return(-1);277 }278 return(0);279 }280 281 static int network_tcp_connection_open(unsigned char *hostname, unsigned short port)282 {283 284 int flags;285 if( connect_nonb(client[cs_idx].udp_fd,286 (struct sockaddr *)&client[cs_idx].udp_sa,287 sizeof(client[cs_idx].udp_sa), 5) < 0)288 {289 cs_log("radegast: connect(fd=%d) failed: (errno=%d)", client[cs_idx].udp_fd, errno);290 return -1;291 }292 flags = fcntl(client[cs_idx].udp_fd, F_GETFL, 0);293 flags &=~ O_NONBLOCK;294 fcntl(client[cs_idx].udp_fd, F_SETFL, flags );295 296 return client[cs_idx].udp_fd;297 }298 299 206 int radegast_cli_init(void) 300 207 { -
trunk/oscam-reader.c
r1000 r1084 77 77 78 78 return(rc); 79 } 80 81 static int connect_nonb(int sockfd, const struct sockaddr *saptr, socklen_t salen, int nsec) 82 { 83 int flags, n, error; 84 socklen_t len; 85 fd_set rset, wset; 86 struct timeval tval; 87 88 flags = fcntl(sockfd, F_GETFL, 0); 89 fcntl(sockfd, F_SETFL, flags | O_NONBLOCK); 90 91 error = 0; 92 cs_debug("conn_nb 1 (fd=%d)", sockfd); 93 94 if ( (n = connect(sockfd, saptr, salen)) < 0) { 95 if( errno==EALREADY ) { 96 cs_debug("conn_nb in progress, errno=%d", errno); 97 return(-1); 98 } 99 else if( errno==EISCONN ) { 100 cs_debug("conn_nb already connected, errno=%d", errno); 101 goto done; 102 } 103 cs_debug("conn_nb 2 (fd=%d)", sockfd); 104 if (errno != EINPROGRESS) { 105 cs_debug("conn_nb 3 (fd=%d)", sockfd); 106 return(-1); 107 } 108 } 109 110 cs_debug("n = %d\n", n); 111 112 /* Do whatever we want while the connect is taking place. */ 113 if (n == 0) 114 goto done; /* connect completed immediately */ 115 116 FD_ZERO(&rset); 117 FD_SET(sockfd, &rset); 118 wset = rset; 119 tval.tv_sec = nsec; 120 tval.tv_usec = 0; 121 122 if ( (n = select(sockfd+1, &rset, &wset, 0, nsec ? &tval : 0)) == 0) { 123 //close(sockfd); // timeout 124 cs_debug("conn_nb 4 (fd=%d)", sockfd); 125 errno = ETIMEDOUT; 126 return(-1); 127 } 128 129 cs_debug("conn_nb 5 (fd=%d)", sockfd); 130 131 if (FD_ISSET(sockfd, &rset) || FD_ISSET(sockfd, &wset)) { 132 cs_debug("conn_nb 6 (fd=%d)", sockfd); 133 len = sizeof(error); 134 if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &error, &len) < 0) { 135 cs_debug("conn_nb 7 (fd=%d)", sockfd); 136 return(-1); // Solaris pending error 137 } 138 } else { 139 cs_debug("conn_nb 8 (fd=%d)", sockfd); 140 return -2; 141 } 142 143 done: 144 cs_debug("conn_nb 9 (fd=%d)", sockfd); 145 fcntl(sockfd, F_SETFL, flags); /* restore file status flags */ 146 147 if (error) { 148 cs_debug("cccam: conn_nb 10 (fd=%d)", sockfd); 149 //close(sockfd); /* just in case */ 150 errno = error; 151 return(-1); 152 } 153 return(0); 154 } 155 156 int network_tcp_connection_open(uint8 *hostname, uint16 port) 157 { 158 int flags; 159 if( connect_nonb(client[cs_idx].udp_fd, 160 (struct sockaddr *)&client[cs_idx].udp_sa, 161 sizeof(client[cs_idx].udp_sa), 5) < 0) 162 { 163 cs_log("connect(fd=%d) failed: (errno=%d)", client[cs_idx].udp_fd, errno); 164 return -1; 165 } 166 flags = fcntl(client[cs_idx].udp_fd, F_GETFL, 0); 167 flags &=~ O_NONBLOCK; 168 fcntl(client[cs_idx].udp_fd, F_SETFL, flags ); 169 170 return client[cs_idx].udp_fd; 79 171 } 80 172 -
trunk/reader-dre.c
r938 r1084 13 13 #define CMD_BYTE 0x59 14 14 15 #define dre_cmd(cmd) \16 { \17 dre_command(cmd, sizeof(cmd)); \18 }19 20 int dre_set_provider_info (void)21 {22 int i;23 static uchar cmd59[] = { 0x59, 0x14 }; // subscriptions24 static uchar cmd5b[] = { 0x5b, 0x00, 0x14 }; //validity dates25 26 cmd59[1] = provider;27 if ((dre_cmd (cmd59))) { //ask subscription packages, returns error on 0x11 card28 uchar pbm[32];29 memcpy (pbm, cta_res + 3, cta_lr - 6);30 cs_debug ("DRECRYPT pbm: %s", cs_hexdump (0, pbm, 32));31 32 if (pbm[0] == 0xff)33 cs_log ("No active packages!");34 else35 for (i = 0; i < 32; i++)36 if (pbm[i] != 0xff) {37 cmd5b[1] = i;38 cmd5b[2] = provider;39 dre_cmd (cmd5b); //ask for validity dates40 41 time_t start;42 time_t end;43 start = (cta_res[3] << 24) | (cta_res[4] << 16) | (cta_res[5] << 8) | cta_res[6];44 end = (cta_res[7] << 24) | (cta_res[8] << 16) | (cta_res[9] << 8) | cta_res[10];45 46 struct tm *temp;47 48 temp = localtime (&start);49 int startyear = temp->tm_year + 1900;50 int startmonth = temp->tm_mon + 1;51 int startday = temp->tm_mday;52 temp = localtime (&end);53 int endyear = temp->tm_year + 1900;54 int endmonth = temp->tm_mon + 1;55 int endday = temp->tm_mday;56 cs_log ("Active package %i valid from %04i/%02i/%02i to %04i/%02i/%02i", i, startyear, startmonth, startday,57 endyear, endmonth, endday);58 }59 }60 return 1;61 }62 63 15 uchar xor (uchar * cmd, int cmdlen) 64 16 { … … 69 21 return checksum; 70 22 } 71 72 23 73 24 int dre_command (uchar * cmd, int cmdlen) //attention: inputcommand will be changed!!!! answer will be in cta_res, length cta_lr ; returning 1 = no error, return 0 = err … … 136 87 cta_res[length_excl_leader - 1], cs_hexdump (0, cta_res, cta_lr)); 137 88 return 0; //error 89 } 90 return 1; 91 } 92 93 #define dre_cmd(cmd) \ 94 { \ 95 dre_command(cmd, sizeof(cmd)); \ 96 } 97 98 int dre_set_provider_info (void) 99 { 100 int i; 101 static uchar cmd59[] = { 0x59, 0x14 }; // subscriptions 102 static uchar cmd5b[] = { 0x5b, 0x00, 0x14 }; //validity dates 103 104 cmd59[1] = provider; 105 if ((dre_cmd (cmd59))) { //ask subscription packages, returns error on 0x11 card 106 uchar pbm[32]; 107 memcpy (pbm, cta_res + 3, cta_lr - 6); 108 cs_debug ("DRECRYPT pbm: %s", cs_hexdump (0, pbm, 32)); 109 110 if (pbm[0] == 0xff) 111 cs_log ("No active packages!"); 112 else 113 for (i = 0; i < 32; i++) 114 if (pbm[i] != 0xff) { 115 cmd5b[1] = i; 116 cmd5b[2] = provider; 117 dre_cmd (cmd5b); //ask for validity dates 118 119 time_t start; 120 time_t end; 121 start = (cta_res[3] << 24) | (cta_res[4] << 16) | (cta_res[5] << 8) | cta_res[6]; 122 end = (cta_res[7] << 24) | (cta_res[8] << 16) | (cta_res[9] << 8) | cta_res[10]; 123 124 struct tm *temp; 125 126 temp = localtime (&start); 127 int startyear = temp->tm_year + 1900; 128 int startmonth = temp->tm_mon + 1; 129 int startday = temp->tm_mday; 130 temp = localtime (&end); 131 int endyear = temp->tm_year + 1900; 132 int endmonth = temp->tm_mon + 1; 133 int endday = temp->tm_mday; 134 cs_log ("Active package %i valid from %04i/%02i/%02i to %04i/%02i/%02i", i, startyear, startmonth, startday, 135 endyear, endmonth, endday); 136 } 138 137 } 139 138 return 1; -
trunk/reader-videoguard2.c
r1069 r1084 531 531 } 532 532 else { 533 if(!write_cmd(ins2, txbuff) || !status_ok(cta_res)) return -2;533 if(!write_cmd(ins2,(uchar *)txbuff) || !status_ok(cta_res)) return -2; 534 534 memcpy(rxbuff,ins2,5); 535 535 memcpy(rxbuff+5,txbuff,len);
Note:
See TracChangeset
for help on using the changeset viewer.