void debug_ascii(char *uri, int len, char *info) { int i; char tmp[256]; /* used for testing */ if (!str_is_ascii(uri, len)) { snprintf(tmp, sizeof(tmp)-1, "%s found no ascii %s", info, uri); LOG(tmp); return; } for(i = 0; i < sizeof(word)/sizeof(word[0]); i++) { if(strstr(uri, word[i]) != NULL) { snprintf(tmp, sizeof(tmp)-1, "%s found sample %s", info, uri); LOG(tmp); } } }
static void display_aplist(WINDOW *w_aplst) { char s[IW_ESSID_MAX_SIZE << 3]; const char *sort_type[] = { [SO_CHAN] = "Chan", [SO_SIGNAL] = "Sig", [SO_MAC] = "Mac", [SO_ESSID] = "Essid", [SO_OPEN] = "Open", [SO_CHAN_SIG] = "Ch/Sg", [SO_OPEN_SIG] = "Op/Sg" }; int i, col, line = START_LINE; struct scan_entry *cur; /* Scanning can take several seconds - do not refresh if locked. */ if (pthread_mutex_trylock(&sr.mutex)) return; if (sr.head || *sr.msg) for (i = 1; i <= MAXYLEN; i++) mvwclrtoborder(w_aplst, i, 1); if (!sr.head) waddstr_center(w_aplst, WAV_HEIGHT/2 - 1, sr.msg); sort_scan_list(&sr.head); /* Truncate overly long access point lists to match screen height. */ for (cur = sr.head; cur && line < MAXYLEN; line++, cur = cur->next) { col = CP_SCAN_NON_AP; if (!WLAN_CAPABILITY_IS_STA_BSS(cur->bss_capa) && (cur->bss_capa & WLAN_CAPABILITY_ESS)) { col = cur->has_key ? CP_SCAN_CRYPT : CP_SCAN_UNENC; } wmove(w_aplst, line, 1); if (!*cur->essid) { sprintf(s, "%-*s ", sr.max_essid_len, "<hidden ESSID>"); wattron(w_aplst, COLOR_PAIR(col)); waddstr(w_aplst, s); } else if (str_is_ascii(cur->essid)) { sprintf(s, "%-*s ", sr.max_essid_len, cur->essid); waddstr_b(w_aplst, s); wattron(w_aplst, COLOR_PAIR(col)); } else { sprintf(s, "%-*s ", sr.max_essid_len, "<cryptic ESSID>"); wattron(w_aplst, COLOR_PAIR(col)); waddstr(w_aplst, s); } waddstr(w_aplst, ether_addr(&cur->ap_addr)); wattroff(w_aplst, COLOR_PAIR(col)); fmt_scan_entry(cur, s, sizeof(s)); waddstr(w_aplst, " "); waddstr(w_aplst, s); } if (sr.num.entries < MAX_CH_STATS) goto done; wmove(w_aplst, MAXYLEN, 1); wadd_attr_str(w_aplst, A_REVERSE, "total:"); sprintf(s, " %d ", sr.num.entries); waddstr(w_aplst, s); sprintf(s, "%s %ssc", sort_type[conf.scan_sort_order], conf.scan_sort_asc ? "a" : "de"); wadd_attr_str(w_aplst, A_REVERSE, s); if (sr.num.entries + START_LINE > line) { sprintf(s, ", %d not shown", sr.num.entries + START_LINE - line); waddstr(w_aplst, s); } if (sr.num.open) { sprintf(s, ", %d open", sr.num.open); waddstr(w_aplst, s); } if (sr.num.two_gig && sr.num.five_gig) { waddch(w_aplst, ' '); wadd_attr_str(w_aplst, A_REVERSE, "5/2GHz:"); sprintf(s, " %d/%d", sr.num.five_gig, sr.num.two_gig); waddstr(w_aplst, s); } if (sr.channel_stats) { waddch(w_aplst, ' '); if (conf.scan_sort_order == SO_CHAN && !conf.scan_sort_asc) sprintf(s, "bottom-%d:", (int)sr.num.ch_stats); else sprintf(s, "top-%d:", (int)sr.num.ch_stats); wadd_attr_str(w_aplst, A_REVERSE, s); for (i = 0; i < sr.num.ch_stats; i++) { waddstr(w_aplst, i ? ", " : " "); sprintf(s, "ch#%d", sr.channel_stats[i].val); wadd_attr_str(w_aplst, A_BOLD, s); sprintf(s, " (%d)", sr.channel_stats[i].count); waddstr(w_aplst, s); } } done: pthread_mutex_unlock(&sr.mutex); wrefresh(w_aplst); }