13e12c5d1SDavid du Colombier #include "lib.h"
23e12c5d1SDavid du Colombier #include <unistd.h>
3*219b2ee8SDavid du Colombier #include <stdio.h>
4*219b2ee8SDavid du Colombier #include <errno.h>
53e12c5d1SDavid du Colombier #include "sys9.h"
63e12c5d1SDavid du Colombier
73e12c5d1SDavid du Colombier int
setpgid(pid_t pid,pid_t pgid)83e12c5d1SDavid du Colombier setpgid(pid_t pid, pid_t pgid)
93e12c5d1SDavid du Colombier {
10*219b2ee8SDavid du Colombier int n, f;
11*219b2ee8SDavid du Colombier char buf[50], fname[30];
12*219b2ee8SDavid du Colombier
13*219b2ee8SDavid du Colombier if(pid == 0)
14*219b2ee8SDavid du Colombier pid = getpid();
15*219b2ee8SDavid du Colombier if(pgid == 0)
16*219b2ee8SDavid du Colombier pgid = getpgrp();
17*219b2ee8SDavid du Colombier sprintf(fname, "/proc/%d/noteid", pid);
18*219b2ee8SDavid du Colombier f = open(fname, 1);
19*219b2ee8SDavid du Colombier if(f < 0) {
20*219b2ee8SDavid du Colombier errno = ESRCH;
213e12c5d1SDavid du Colombier return -1;
223e12c5d1SDavid du Colombier }
23*219b2ee8SDavid du Colombier n = sprintf(buf, "%d", pgid);
24*219b2ee8SDavid du Colombier n = write(f, buf, n);
25*219b2ee8SDavid du Colombier if(n < 0)
26*219b2ee8SDavid du Colombier _syserrno();
27*219b2ee8SDavid du Colombier else
28*219b2ee8SDavid du Colombier n = 0;
29*219b2ee8SDavid du Colombier close(f);
30*219b2ee8SDavid du Colombier return n;
31*219b2ee8SDavid du Colombier }
32