3 Rune samname[] = L"~~sam~~";
19 char SAMTERM[] = "/bin/aux/samterm";
21 char TMPDIR[] = "/tmp";
23 char SHPATH[] = "/bin/rc";
25 char RXPATH[] = "/bin/rx";
26 char SAMSAVECMD[] = "/bin/rc\n/sys/lib/samsave";
35 vseprint(buf, &buf[BLOCKSIZE], z, arg);
41 print_ss(char *s, String *a, String *b)
43 dprint("?warning: %s: `%.*S' and `%.*S'\n", s, a->n, a->s, b->n, b->s);
47 print_s(char *s, String *a)
49 dprint("?warning: %s `%.*S'\n", s, a->n, a->s);
53 statfile(char *name, ulong *dev, uvlong *id, long *time, long *length, long *appendonly)
61 *dev = dirb->type|(dirb->dev<<16);
67 *length = dirb->length;
69 *appendonly = dirb->mode & DMAPPEND;
75 statfd(int fd, ulong *dev, uvlong *id, long *time, long *length, long *appendonly)
83 *dev = dirb->type|(dirb->dev<<16);
89 *length = dirb->length;
91 *appendonly = dirb->mode & DMAPPEND;
97 notifyf(void *a, char *s)
100 if(bpipeok && strcmp(s, "sys: write on closed pipe") == 0)
102 if(strcmp(s, "interrupt") == 0)
113 static char msg[ERRMAX];
115 while((w = wait()) != nil){
120 strecpy(msg, msg+sizeof msg, w->msg);
124 rerrstr(msg, sizeof msg);
131 sprint(buf, "%s/sam.err", TMPDIR);
141 panic("malloc fails");
142 setmalloctag(p, getcallerpc(&n));
147 erealloc(void *p, ulong n)
151 panic("realloc fails");
152 setmalloctag(p, getcallerpc(&p));