101 lines · 1.9 KB · Text
RawDownload
--- /sys/src/9/port/devsrv.c	Sat Jun 22 17:25:03 2013+++ ../frontmods/port/devsrv.c	Fri Dec 22 02:26:47 2017@@ -6,19 +6,7 @@ #include	"../port/error.h"  -typedef struct Srv Srv;-struct Srv-{-	char	*name;-	char	*owner;-	ulong	perm;-	Chan	*chan;-	Srv	*link;-	ulong	path;-};- static QLock	srvlk;-static Srv	*srv; static int	qidpath;  static Srv*@@ -26,7 +14,7 @@ { 	Srv *sp; -	for(sp = srv; sp != nil; sp = sp->link) {+	for(sp = up->sgrp->srvgrp; sp != nil; sp = sp->link) { 		if(sp->path == qidpath || (name != nil && strcmp(sp->name, name) == 0)) 			return sp; 	}@@ -48,7 +36,7 @@ 	if(name != nil) 		sp = srvlookup(name, -1); 	else {-		for(sp = srv; sp != nil && s > 0; sp = sp->link)+		for(sp = up->sgrp->srvgrp; sp != nil && s > 0; sp = sp->link) 			s--; 	} 	if(sp == nil || (name != nil && (strlen(sp->name) >= sizeof(up->genbuf)))) {@@ -95,7 +83,7 @@  	s = nil; 	qlock(&srvlk);-	for(sp = srv; sp != nil; sp = sp->link) {+	for(sp = up->sgrp->srvgrp; sp != nil; sp = sp->link) { 		if(sp->chan == c){ 			s = malloc(3+strlen(sp->name)+1); 			if(s != nil)@@ -181,8 +169,8 @@ 	c->qid.path = sp->path; 	c->qid.type = QTFILE; -	sp->link = srv;-	srv = sp;+	sp->link = up->sgrp->srvgrp;+	up->sgrp->srvgrp = sp;  	qunlock(&srvlk); 	poperror();@@ -206,7 +194,7 @@ 		qunlock(&srvlk); 		nexterror(); 	}-	l = &srv;+	l = &up->sgrp->srvgrp; 	for(sp = *l; sp != nil; sp = *l) { 		if(sp->path == c->qid.path) 			break;@@ -378,12 +366,30 @@ };  void+closesgrp(Sgrp *sg)+{+	Srv *sp;+	Srv *tsp;++	if(decref(sg) == 0){+		sp = sg->srvgrp;+		while(sp!=nil){+			tsp=sp;+			sp=sp->link;+			free(tsp);+		}+		free(sg);+	}+	return;+}++void srvrenameuser(char *old, char *new) { 	Srv *sp;  	qlock(&srvlk);-	for(sp = srv; sp != nil; sp = sp->link) {+	for(sp = up->sgrp->srvgrp; sp != nil; sp = sp->link) { 		if(sp->owner != nil && strcmp(old, sp->owner) == 0) 			kstrdup(&sp->owner, new); 	}