git: 9front

Download patch

ref: a61cf2a051bd031a67f525341ffddc9904cfec19
parent: 55685c6d1d2b0bd511d20324a10f4f460bad46e1
parent: 8f889e60923baa6314ba090031e164c3f1c98caf
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Wed Oct 3 14:19:17 EDT 2012

merge

--- a/sys/src/cmd/hjfs/cons.c
+++ b/sys/src/cmd/hjfs/cons.c
@@ -64,6 +64,14 @@
 }
 
 int
+cmdsync(int, char **)
+{
+	sync(1);
+	dprint("hjfs: sync\n");
+	return 0;
+}
+
+int
 cmdhalt(int, char **)
 {
 	shutdown();
@@ -232,6 +240,43 @@
 }
 
 int
+cmddebugchdeind(int, char **argv)
+{
+	Chan *ch;
+	uchar *c;
+	Buf *b;
+	int loc, new;
+
+	loc = strtol(argv[2], nil, 0);
+	new = strtol(argv[3], nil, 0);
+	if(loc >= DENTRYSIZ)
+		return -9001;
+	ch = chanattach(fsmain, 0);
+	if(ch == nil)
+		return -1;
+	ch->uid = -1;
+	if(walkpath(ch, argv[1], nil) < 0)
+		goto error;
+	rlock(fsmain);
+	b = getbuf(fsmain->d, ch->loc->blk, TDENTRY, 0);
+	if(b == nil){
+		runlock(fsmain);
+		goto error;
+	}
+	c = (uchar *) &b->de[ch->loc->deind];
+	dprint("hjfs: loc %d, old value %#.2x, new value %#.2x\n", loc, c[loc], new);
+	c[loc] = new;
+	b->op |= BDELWRI;
+	putbuf(b);
+	runlock(fsmain);
+	chanclunk(ch);
+	return 0;
+error:
+	chanclunk(ch);
+	return -1;
+}
+
+int
 cmddebuggetblk(int argc, char **argv)
 {
 	Chan *ch;
@@ -285,6 +330,7 @@
 	{"create", 0, cmdcreate},
 	{"disallow", 1, cmddisallow},
 	{"dump", 1, cmddump},
+	{"sync", 1, cmdsync},
 	{"halt", 1, cmdhalt},
 	{"newuser", 0, cmdnewuser},
 	{"echo", 2, cmdecho},
@@ -291,6 +337,7 @@
 	{"df", 1, cmddf},
 	{"debug-deind", 2, cmddebugdeind},
 	{"debug-getblk", 0, cmddebuggetblk},
+	{"debug-chdeind", 4, cmddebugchdeind},
 };
 
 
--