int xwifi_wpa_parser_interfaces_result(linkedlist list, const char* result) { S_; const char *ptr = result; KASSERT(list); KASSERT(result); linkedlist_clear(list, free); stringtokenizer tokenizer = stringtokenizer_new((const char**) &ptr); int ret; int i; char dst[512]; char delim; for(i=0; (ret = stringtokenizer_next_token2(tokenizer, "\t\n ", 2, dst, &delim)) != -1 ; i++) { if(delim == '\t') { Q_; } else if(delim == '\n') { M_("<%d> : %s", i, dst); char* alias = strdup(dst); linkedlist_add(list, alias); } } return 0; }
/** * Frees a linked list * * @param [in-out] list : a pointer to the linked list pointer */ void free_linkedlist(linkedlist_t ** list){ if(list != NULL && *list != NULL){ linkedlist_clear(*list); free(*list); *list = NULL; } }
BOOLEAN KnOSRemoveAllQueue(KnQueue_t queue) { knQueue_t* que = (knQueue_t*) queue; KnOSMutexLock(que->lock); linkedlist_clear(que->queue, finalize); KnOSMutexUnlock(que->lock); return TRUE; }
void freeStuff() { iter_t iter; Expr el; linkedlist_iterate(&exprPool, &iter); while ((el = linkedlist_next(&exprPool, &iter))){ vc_deleteExpr(el); } linkedlist_clear(&exprPool, NULL, NULL); }
void freeStuff() { iter_t iter; char* varname; hashmap_iterate(&vars, &iter); while ((varname = (char*) hashmap_next(&vars, &iter))) free(varname); hashmap_clear(&vars, NULL, NULL, NULL); Expr el; linkedlist_iterate(&exprPool, &iter); while ((el = linkedlist_next(&exprPool, &iter))){ vc_deleteExpr(el); } linkedlist_clear(&exprPool, NULL, NULL); }
int xwifi_wpa_parser_scan_result(linkedlist list, const char* result) { S_; // M_("%s", result); const char *ptr = result; KASSERT(list); KASSERT(result); linkedlist_clear(list, free); // 1. skip head line : bssid / frequency / signal level / flags / ssid stringtokenizer tokenizer = stringtokenizer_new((const char**) &ptr); int ret; int i; char dst[512]; char delim; XWifiScanInfo* scan_info = NULL; for(i=0; (ret = stringtokenizer_next_token2(tokenizer, "\t\n ", 2, dst, &delim)) != -1 ; i++) { if(delim == '\t') { KASSERT(scan_info); // M_("<%d> : %s", i, dst); KASSERT(i <= 5); switch(i) { case 1: {// bssid sscanf(dst, "%02x:%02x:%02x:%02x:%02x:%02x", (unsigned int *) &scan_info->AP.BSSID[0], (unsigned int *) &scan_info->AP.BSSID[1], (unsigned int *) &scan_info->AP.BSSID[2], (unsigned int *) &scan_info->AP.BSSID[3], (unsigned int *) &scan_info->AP.BSSID[4], (unsigned int *) &scan_info->AP.BSSID[5]); break; } case 2: { // frequency (e.g. 2412) break; } case 3: { // signal level (e.g. -87) break; } case 4: { // flags (e.g. [WEP][ESS]) break; } default: { break; } } } else if(delim == '\n') { // M_("<%d> : %s", i, dst); if(i == 5) { strcpy((char*)scan_info->AP.SSID, (const char*)dst); } // We create node here. if(scan_info) { // here to the list. linkedlist_add(list, scan_info); scan_info = NULL; } scan_info = (XWifiScanInfo*) malloc(sizeof(*scan_info)); memset(scan_info, 0, sizeof(*scan_info)); i = 0; } else { W_("Unknown delim: %c", delim); } memset(dst, 0, sizeof(dst)); } stringtokenizer_delete(tokenizer); return 0; }
void linkedlist_delete(linkedlist _list, void (*fp)(void*)) { linkedlist_clear(_list, fp); free(_list); }