summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSigrid <ftrvxmtrx@gmail.com>2021-01-22 10:57:43 +0100
committerSigrid <ftrvxmtrx@gmail.com>2021-01-22 10:57:43 +0100
commit90251761932a95bfa138cbba4963d435406c3c9d (patch)
tree6462bf66b89b8e2cb1087c0e470e5381bacc2921
parent6a78bb2e4f00581d85de1c5f9949782de3dd8933 (diff)
downloadplan9front-90251761932a95bfa138cbba4963d435406c3c9d.tar.xz
aux/acpi: do not expose empty files
-rw-r--r--sys/src/cmd/aux/acpi.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/sys/src/cmd/aux/acpi.c b/sys/src/cmd/aux/acpi.c
index 9bd5e38fc..cca662ef3 100644
--- a/sys/src/cmd/aux/acpi.c
+++ b/sys/src/cmd/aux/acpi.c
@@ -62,6 +62,8 @@ enum {
Qbattery,
Qcputemp,
Qctl,
+
+ Qdisable = (uvlong)-1,
};
static void rootread(Req*);
@@ -354,7 +356,7 @@ fswalk1(Fid *fid, char *name, Qid *qid)
}
for(i = 1; i < nelem(dfile); i++){ /* i=1: 0 is root dir */
- if(strcmp(dfile[i].name, name) == 0){
+ if(dfile[i].qid.path != Qdisable && strcmp(dfile[i].name, name) == 0){
*qid = dfile[i].qid;
fid->qid = *qid;
return nil;
@@ -424,12 +426,14 @@ rootread(Req *r)
if(offset == 0) /* skip root */
offset = 1;
- for(; p+2 < ep; p += n){
+ for(; p+2 < ep && offset < nelem(dfile); p += n){
if(fillstat(offset, &d, 0) < 0)
- break;
- n = convD2M(&d, (uchar*)p, ep-p);
- if(n <= BIT16SZ)
- break;
+ n = 0;
+ else{
+ n = convD2M(&d, (uchar*)p, ep-p);
+ if(n <= BIT16SZ)
+ break;
+ }
offset++;
}
r->fid->aux = (void*)offset;
@@ -540,6 +544,11 @@ threadmain(int argc, char **argv)
amlenum(amlroot, "_BIF", enumbat, nil);
amlenum(amlroot, "_PSL", enumtmp, nil);
+ if(nbats < 1)
+ dfile[Qbattery].qid.path = Qdisable;
+ if(ntherms < 1)
+ dfile[Qcputemp].qid.path = Qdisable;
+
threadpostmountsrv(&fs, srv, mtpt, MREPL);
threadexits(nil);