Changeset 4983 for trunk/oscam-config.c
- Timestamp:
- 04/13/11 10:52:07 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/oscam-config.c
r4980 r4983 3027 3027 3028 3028 srvid = ptr; 3029 memset(srvid, 0, sizeof(struct s_srvid)); 3030 3031 int i; 3032 char *ptr1; 3033 for (i = 0, ptr1 = strtok(payload, "|"); ptr1; ptr1 = strtok(NULL, "|"), i++){ 3034 switch(i){ 3035 case 0: 3036 cs_strncpy(srvid->prov, trim(ptr1), sizeof(srvid->prov)); 3037 break; 3038 case 1: 3039 cs_strncpy(srvid->name, trim(ptr1), sizeof(srvid->name)); 3040 break; 3041 case 2: 3042 cs_strncpy(srvid->type, trim(ptr1), sizeof(srvid->type)); 3043 break; 3044 case 3: 3045 cs_strncpy(srvid->desc, trim(ptr1), sizeof(srvid->desc)); 3046 break; 3029 3030 int i, len=0; 3031 char tmptxt[128]; 3032 struct s_srvid *srvptr; 3033 3034 int offset[4] = { -1, -1, -1, -1 }; 3035 char *ptr1, *searchptr[4] = { NULL, NULL, NULL, NULL }; 3036 char **ptrs[4] = { &srvid->prov, &srvid->name, &srvid->type, &srvid->desc }; 3037 3038 for (i = 0, ptr1 = strtok(payload, "|"); ptr1 && (i < 4) ; ptr1 = strtok(NULL, "|"), i++){ 3039 for (srvptr = new_cfg_srvid; srvptr && !searchptr[i]; srvptr=srvptr->next) { 3040 char *srv_ptrs[4] = { srvptr->prov, srvptr->name, srvptr->type, srvptr->desc }; 3041 if (srv_ptrs[i] && !strncmp(srv_ptrs[i], ptr1, strlen(ptr1))) 3042 searchptr[i]=srv_ptrs[i]; 3047 3043 } 3044 if (searchptr[i]) continue; 3045 3046 offset[i]=len; 3047 cs_strncpy(tmptxt+len, trim(ptr1), sizeof(tmptxt)-len); 3048 len+=strlen(ptr1)+1; 3049 } 3050 3051 char *tmpptr; 3052 if (!cs_malloc(&tmpptr, len, 0)) 3053 continue; 3054 3055 srvid->data=tmpptr; 3056 3057 memcpy(tmpptr, tmptxt, len); 3058 3059 for (i=0;i<4;i++) { 3060 if (searchptr[i]) { 3061 *ptrs[i] = searchptr[i]; 3062 continue; 3063 } 3064 if (offset[i]>-1) 3065 *ptrs[i] = tmpptr + offset[i]; 3048 3066 } 3049 3067 … … 3075 3093 while (srvid) { //cleanup old data: 3076 3094 ptr = srvid->next; 3095 free(srvid->data); 3077 3096 free(srvid); 3078 3097 srvid = ptr;
Note:
See TracChangeset
for help on using the changeset viewer.