ref: 7a401624c21a52bd3f8abf0e98667fad56712be3
parent: 1c179e58ed619a73da464cc140ef5bcf81588979
author: Ori Bernstein <ori@eigenstate.org>
date: Mon Dec 8 16:33:08 EST 2025
gefs: disallow deletion of nonexistent config keys
--- a/sys/src/cmd/gefs/fs.c
+++ b/sys/src/cmd/gefs/fs.c
@@ -701,7 +701,7 @@
loadhist(mnt, &mnt->cron[i]);
}
-Mount *
+Mount*
getmount(char *name)
{Mount *mnt, *hd;
@@ -2763,10 +2763,11 @@
void
setconf(int fd, int op, char *snap, char *key, char *val)
{- char kbuf[128];
+ char kbuf[128], xbuf[Kvmax];
Mount *mnt;
Tree *t;
Msg m;
+ Kvp x;
mnt = nil;
t = &fs->snap;
@@ -2787,8 +2788,11 @@
m.nv = strlen(val);
qlock(&fs->mutlk);
if(!waserror()){- fprint(fd, "set %q: %q", key, val);
- btupsert(t, &m, 1);
+ if(op == Oinsert || btlookup(t, &m, &x, xbuf, sizeof(xbuf))){+ fprint(fd, "set %s → %s\n", key, val[0]?val:"delete");
+ btupsert(t, &m, 1);
+ }else
+ fprint(fd, "set %s: no such key\n", key);
poperror();
}else
fprint(fd, "error setting config: %s\n", errmsg());
--
⑨