ref: 3866717cbb020199d58171c1c0cdd7382a74ee82
dir: /emu/port/devindir.c/
#include "dat.h"
#include "fns.h"
#include "error.h"
static Chan *
indirattach(char *spec)
{
char *p;
Dev *d;
if(*spec == 0)
error(Ebadspec);
p = strrchr(spec, '!');
if(p == nil)
p = "";
else
*p++ = 0;
d = devbyname(spec);
if(d == nil || d->dc == '*'){
snprint(up->env->errstr, ERRMAX, "unknown device: %s", spec);
error(up->env->errstr);
}
if(up->env->pgrp->nodevs &&
(utfrune("|esDa", d->dc) == nil || d->dc == 's' && *p!='\0'))
error(Enoattach);
return d->attach(p);
}
Dev indirdevtab = {
'*',
"indir",
devinit,
indirattach,
};