const c_char* cmx_snapshotKind( const c_char* snapshot) { c_char* copy; c_char* temp; c_char* saveptr; const c_char* result; result = NULL; if(snapshot != NULL){ copy = (c_char*)(os_malloc(strlen(snapshot) + 1)); os_strcpy(copy, snapshot); temp = os_strtok_r((c_char*)copy, "</>", &saveptr); /*<xxxxxxSnapshot>*/ if(temp != NULL){ if(strcmp(temp, "readerSnapshot") == 0){ result = "READERSNAPSHOT"; } else if(strcmp(temp, "writerSnapshot") == 0){ result = "WRITERSNAPSHOT"; } } os_free(copy); } return result; }
static c_iter getCPUAffinities(cf_element root) { c_iter affinities = NULL; cf_element domain; cf_element cpuAffinity; cf_data data; assert(root); if (root && (domain = (cf_element)cf_elementChild(root, "Domain")) ) { cpuAffinity = cf_element(cf_elementChild(domain, CFG_CPUAFFINITY)); if (cpuAffinity != NULL) { data = cf_data(cf_elementChild(cpuAffinity, "#text")); if (data != NULL) { char *saveptr; char *next; char *value; value = cf_dataValue(data).is.String; next = os_strtok_r(value, ",", &saveptr); while ( next != NULL ) { signed int corenum; struct cpuAffinity *newCpuAffinity; sscanf( next, "%d", &corenum); newCpuAffinity = (struct cpuAffinity *)malloc (sizeof(struct cpuAffinity)); newCpuAffinity->cpuNumber = corenum; affinities = c_iterInsert(affinities, newCpuAffinity); next = os_strtok_r(NULL, ",", &saveptr); } } } } return affinities; }
cmx_readerSnapshot cmx_readerSnapshotLookup( const c_char* snapshot) { c_char* saveptr; c_char* copy; c_char* temp; cmx_readerSnapshot s; os_mutex m; s = NULL; if(snapshot != NULL){ copy = (c_char*)(os_malloc(strlen(snapshot) + 1)); if (copy != NULL){ os_strcpy(copy, snapshot); temp = os_strtok_r((c_char*)copy, "</>", &saveptr); /*<readerSnapshot>*/ temp = os_strtok_r(NULL, "</>", &saveptr); /*<id>*/ temp = os_strtok_r(NULL, "</>", &saveptr); /*... the pointer*/ if(temp != NULL){ (void)sscanf(temp, PA_ADDRFMT, (c_address *)(&s)); m = cmx_getReaderSnapshotMutex(); os_mutexLock(&m); if(c_iterContains(readerSnapshots, s) == FALSE){ s = NULL; } os_mutexUnlock(&m); } os_free(copy); } } return s; }