| 68 |
|
devopen(dname) /* open device driver */ |
| 69 |
|
char *dname; |
| 70 |
|
{ |
| 71 |
< |
extern char *progname; |
| 71 |
> |
extern char *progname, *octname; |
| 72 |
|
char *devargv[3]; |
| 73 |
|
register int i; |
| 74 |
+ |
|
| 75 |
+ |
devargv[0] = dname; |
| 76 |
+ |
devargv[1] = octname!=NULL ? octname : progname; |
| 77 |
+ |
devargv[2] = NULL; |
| 78 |
|
/* check device table */ |
| 79 |
|
for (i = 0; devtable[i].name; i++) |
| 80 |
|
if (!strcmp(dname, devtable[i].name)) |
| 81 |
< |
if ((dev = (*devtable[i].init)(progname)) == NULL) { |
| 81 |
> |
if ((dev = (*devtable[i].init)(devargv[1])) == NULL) { |
| 82 |
|
sprintf(errmsg, "cannot initialize %s", dname); |
| 83 |
|
error(USER, errmsg); |
| 84 |
|
} else |
| 85 |
|
return; |
| 86 |
|
/* not there, try exec */ |
| 83 |
– |
devargv[0] = dname; |
| 84 |
– |
devargv[1] = progname; |
| 85 |
– |
devargv[2] = NULL; |
| 87 |
|
if ((dev = comm_init(devargv)) == NULL) { |
| 88 |
|
sprintf(errmsg, "cannot start device \"%s\"", dname); |
| 89 |
|
error(USER, errmsg); |