bool counter::circular(int n) { if (!m_p[n]) return false; to_digits(n); for (auto i = m_ds.size(); --i;) { if (!m_p[rotate()]) return false; } return true; }
int pt_digits(char *str){ int len; len = strlen(str); if((len>3)&&(str[0]=='p')&&(str[1]=='t')&&(str[2]=='=')){ return to_digits(str+3); } else{ api_warn("Wrong parameters passed in the endpoints"); return 0; //ERROR handling } }
EndPoint *parse_end_point(char *endpoint){ EndPoint *result = (EndPoint*) g_malloc(sizeof(EndPoint)); int i=0,len1,len2,len, tlen; char *str2, temp[30], *host_str; //api_trace("parse_end_point: parsing %s\n", endpoint); result->pt = -1; while(1){ str2 = (char*) strpbrk(endpoint, ":"); if(str2 == NULL){ str2 = (char*) strpbrk(endpoint, ";"); if(str2 == NULL){ len = strlen(endpoint); } else{ len1 = strlen(endpoint); len2 = strlen(str2); len = len1-len2; } } else{ len1 = strlen(endpoint); len2 = strlen(str2); len = len1-len2; } strncpy(temp,endpoint,len); temp[len] = '\0'; tlen = strlen(temp); if((tlen >= 2)&&(temp[0] == '/')&&(temp[1] == '/')){ host_str = remove_slash(temp); } switch(i){ case 0: if(strcmp(temp,"rtp")==0){ result->protocol=MEDIA_RTP; } else if(strcmp(temp,"oss")==0){ result->protocol=MEDIA_OSS; } else if(strcmp(temp,"alsa")==0){ result->protocol=MEDIA_ALSA; } else if(strcmp(temp,"file")==0){ result->protocol=MEDIA_FILE; } break; case 1: if(result->protocol==MEDIA_FILE){ result->file=host_str; } else{ result->host = host_str; } break; case 2: result->port = to_digits(temp); break; case 3: result->pt = pt_digits(temp); break; default://result->options[result->nOptions++] = temp; break; } if(str2 != NULL) endpoint = str2+1; else break; i++; } return result; }