static char sccsid
[] = "@(#)mkswapconf.c 4.1 (Berkeley) 8/13/83";
* Build a swap configuration file.
register struct file_list
*fl
;
struct file_list
*do_swap();
if (fl
->f_type
!= SYSTEMSPEC
) {
register struct file_list
*fl
;
register struct file_list
*swap
;
if (eq(fl
->f_fn
, "generic")) {
(void) sprintf(swapname
, "swap%s.c", fl
->f_fn
);
fp
= fopen(path(swapname
), "w");
fprintf(fp
, "#include \"../h/param.h\"\n");
fprintf(fp
, "#include \"../h/conf.h\"\n");
* If there aren't any swap devices
* specified, just return, the error
* has already been noted.
if (swap
== 0 || swap
->f_type
!= SWAPSPEC
) {
(void) unlink(path(swapname
));
fprintf(fp
, "dev_t\trootdev = makedev(%d, %d);\n",
major(fl
->f_rootdev
), minor(fl
->f_rootdev
));
fprintf(fp
, "dev_t\targdev = makedev(%d, %d);\n",
major(fl
->f_argdev
), minor(fl
->f_argdev
));
fprintf(fp
, "dev_t\tdumpdev = makedev(%d, %d);\n",
major(fl
->f_dumpdev
), minor(fl
->f_dumpdev
));
fprintf(fp
, "struct\tswdevt swdevt[] = {\n");
fprintf(fp
, "\t{ makedev(%d, %d),\t0,\t%d },\t/* %s */\n",
major(dev
), minor(dev
), swap
->f_swapsize
, swap
->f_fn
);
} while (swap
&& swap
->f_type
== SWAPSPEC
);
fprintf(fp
, "\t{ 0, 0, 0 }\n");
static int devtablenotread
= 1;
static struct devdescription
{
struct devdescription
*dev_next
;
* Given a device name specification figure out:
* This is a hack, but the system still thinks in
* terms of major/minor instead of string names.
nametodev(name
, defunit
, defpartition
)
register struct devdescription
*dp
;
fprintf(stderr
, "config: internal error, nametodev\n");
while (*cp
&& !isdigit(*cp
))
unit
= *cp
? atoi(cp
) : defunit
;
if (unit
< 0 || unit
> 7) {
"config: %s: invalid device specification, unit out of range\n", name
);
unit
= defunit
; /* carry on more checking */
while (*cp
&& isdigit(*cp
))
partition
= *cp
? *cp
: defpartition
;
if (partition
< 'a' || partition
> 'h') {
"config: %c: invalid device specification, bad partition\n", *cp
);
partition
= defpartition
; /* carry on */
for (dp
= devtable
; dp
->dev_next
; dp
= dp
->dev_next
)
if (eq(name
, dp
->dev_name
))
fprintf(stderr
, "config: %s: unknown device\n", name
);
return (makedev(dp
->dev_major
, (unit
<< 3) + (partition
- 'a')));
register struct devdescription
*dp
;
for (dp
= devtable
; dp
->dev_next
; dp
= dp
->dev_next
)
if (major(dev
) == dp
->dev_major
)
sprintf(buf
, "%s%d%c", dp
->dev_name
,
minor(dev
) >> 3, (minor(dev
) & 07) + 'a');
register struct devdescription
**dp
= &devtable
;
sprintf(buf
, "../conf/devices.%s", machinename
);
fprintf(stderr
, "config: can't open %s\n", buf
);
while (fscanf(fp
, "%s\t%d\n", buf
, &maj
) == 2) {
*dp
= (struct devdescription
*)malloc(sizeof (**dp
));
(*dp
)->dev_name
= ns(buf
);