From df1702e09e952bb72e11f9e57bff531e9be647fe Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Sun, 2 Mar 2003 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2003-03-02 --- pc/wavelan.c | 18 ++++++++++++------ pc/wavelan.h | 2 -- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/pc/wavelan.c b/pc/wavelan.c index 7e3723ecb90d981f336a681bc84dcd90f9a35576..9a57b7369dc79668231e3e4d545a8cd2567695a6 100644 --- a/pc/wavelan.c +++ b/pc/wavelan.c @@ -557,11 +557,16 @@ w_scaninfo(Ether* ether, Ctlr *ctlr, int len) Netfile **ep, *f, **fp; Block *bp; WScan *wsp; + ushort *scanbuf; + scanbuf = malloc(len*2); + if(scanbuf == nil) + return; + for (i = 0; i < len ; i++) - ctlr->scanbuf[i] = csr_ins(ctlr, WR_Data1); + scanbuf[i] = csr_ins(ctlr, WR_Data1); - len *= 2; + len /= 25; i = ether->scan; ep = ðer->f[Ntypes]; for(fp = ether->f; fp < ep && i > 0; fp++){ @@ -569,14 +574,14 @@ w_scaninfo(Ether* ether, Ctlr *ctlr, int len) if(f == nil || f->scan == 0) continue; - bp = iallocb(2048); + bp = iallocb(100*len); if(bp == nil) break; - for(j = 0; j < len/(2*25); j++){ - wsp = (WScan*)(&ctlr->scanbuf[j*25]); + for(j = 0; j < len; j++){ + wsp = (WScan*)(&scanbuf[j*25]); if(wsp->ssid_len > 32) wsp->ssid_len = 32; - bp->wp += snprint((char*)bp->wp, 2048, + bp->wp = (uchar*)seprint((char*)bp->wp, (char*)bp->lim, "ssid=%.*s;bssid=%E;signal=%d;noise=%d;chan=%d%s\n", wsp->ssid_len, wsp->ssid, wsp->bssid, wsp->signal, wsp->noise, wsp->chan, (wsp->capinfo&(1<<4))?";wep":""); @@ -584,6 +589,7 @@ w_scaninfo(Ether* ether, Ctlr *ctlr, int len) qpass(f->in, bp); i--; } + free(scanbuf); } static int diff --git a/pc/wavelan.h b/pc/wavelan.h index dce0fe74fea8cdf4366ea65dddcfcad89d1cbf65..1e055b42a848bba1bf4fe6b907ea5c694ce4ba66 100644 --- a/pc/wavelan.h +++ b/pc/wavelan.h @@ -305,8 +305,6 @@ struct Ctlr Stats; WStats; - - ushort scanbuf[25*4]; // buffer for base station scan info }; extern char* wavenames[];