History

add -g (for custom group file) and -R (to mount as root) options

Sigrid Solveig Haflínudóttir committed 6 years ago

Commit 75bb5101 parent 3669b3e3 files · +30 −7Browse files

Unified · Split

3 files
  1. common.h +2 −0
  2. ext4srv.c +23 −4
  3. part.c +5 −3
common.h+2−0
@@ -7,8 +7,10 @@ typedef struct Part Part; · 6 unmodified lines
7#pragma varargck type "M" Part*7#pragma varargck type "M" Part*
8 8
9struct Opts {9struct Opts {
10 char *group;
10 int cachewb;11 int cachewb;
11 int linkmode;12 int linkmode;
13 int asroot;
12};14};
13 15
14struct Part {16struct Part {
ext4srv.c+23−4
@@ -150,8 +150,8 @@ rattach(Req *r) · 149 unmodified lines
150 rerrstr(err, sizeof(err));150 rerrstr(err, sizeof(err));
151 respond(r, err);151 respond(r, err);
152 }else{152 }else{
153 if(findgroup(&a->p->groups, r->ifcall.uname, &a->uid) == nil)153 if(opts.asroot || findgroup(&a->p->groups, r->ifcall.uname, &a->uid) == nil)
154 a->uid = Root; /* FIXME need external mapping */154 a->uid = Root;
155 155
156 incref(a->p);156 incref(a->p);
157 a->type = Adir;157 a->type = Adir;
@@ -634,7 +634,7 @@ static Srv fs = { · 476 unmodified lines
634static void634static void
635usage(void)635usage(void)
636{636{
637 fprint(2, "usage: %s [-C] [-l hide] [-s srvname]\n", argv0);637 fprint(2, "usage: %s [-C] [-R] [-g GROUPFILE] [-l hide] [-s SRVNAME]\n", argv0);
638 threadexitsall("usage");638 threadexitsall("usage");
639}639}
640 640
@@ -651,7 +651,9 @@ linkmode(char *m) · 10 unmodified lines
651void651void
652threadmain(int argc, char **argv)652threadmain(int argc, char **argv)
653{653{
654 char *srv;654 char *srv, *gr;
655 vlong sz;
656 int f;
655 657
656 srv = "ext4";658 srv = "ext4";
657 ARGBEGIN{659 ARGBEGIN{
@@ -667,6 +669,23 @@ threadmain(int argc, char **argv) · 9 unmodified lines
667 case 's':669 case 's':
668 srv = EARGF(usage());670 srv = EARGF(usage());
669 break;671 break;
672 case 'g':
673 gr = EARGF(usage());
674 if((f = open(gr, OREAD)) < 0)
675 sysfatal("%r");
676 if((sz = seek(f, 0, 2)) < 0)
677 sysfatal("%s: invalid group file", gr);
678 if((opts.group = malloc(sz+1)) == nil)
679 sysfatal("memory");
680 seek(f, 0, 0);
681 if(readn(f, opts.group, sz) != sz)
682 sysfatal("%s: read failed", gr);
683 close(f);
684 opts.group[sz] = 0;
685 break;
686 case 'R':
687 opts.asroot = 1;
688 break;
670 }ARGEND689 }ARGEND
671 690
672 if(argc != 0)691 if(argc != 0)
part.c+5−3
@@ -257,13 +257,15 @@ mountpart(Part *p, Opts *opts) · 256 unmodified lines
257 goto error;257 goto error;
258 }258 }
259 259
260 if((gr = readfile(p, "/etc/group", &sz)) != nil){260 if(opts->group != nil){
261 r = loadgroups(&p->groups, opts->group);
262 }else if((gr = readfile(p, "/etc/group", &sz)) != nil){
261 gr[sz] = 0;263 gr[sz] = 0;
262 r = loadgroups(&p->groups, gr);264 r = loadgroups(&p->groups, gr);
263 free(gr);265 free(gr);
264 if(r != 0)
265 goto error;
266 }266 }
267 if(r != 0)
268 goto error;
267 269
268 return 0;270 return 0;
269error:271error:

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t