1 /*
2 * Copyright (c) 1980, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * %sccs.include.redist.c%
6 */
7
8 #ifndef lint
9 static char copyright[] =
10 "@(#) Copyright (c) 1980, 1993\n\
11 The Regents of the University of California. All rights reserved.\n";
12 #endif /* not lint */
13
14 #ifndef lint
15 static char sccsid[] = "@(#)swapon.c 8.1 (Berkeley) 06/05/93";
16 #endif /* not lint */
17
18 #include <fstab.h>
19 #include <errno.h>
20 #include <stdio.h>
21
main(argc,argv)22 main(argc, argv)
23 int argc;
24 char **argv;
25 {
26 extern char *optarg;
27 extern int optind;
28 register struct fstab *fsp;
29 register int stat;
30 int ch, doall;
31
32 doall = 0;
33 while ((ch = getopt(argc, argv, "a")) != EOF)
34 switch((char)ch) {
35 case 'a':
36 doall = 1;
37 break;
38 case '?':
39 default:
40 usage();
41 }
42 argv += optind;
43
44 stat = 0;
45 if (doall)
46 while (fsp = getfsent()) {
47 if (strcmp(fsp->fs_type, FSTAB_SW))
48 continue;
49 if (add(fsp->fs_spec, 1))
50 stat = 1;
51 else
52 printf("swapon: adding %s as swap device\n",
53 fsp->fs_spec);
54 }
55 else if (!*argv)
56 usage();
57 for (; *argv; ++argv)
58 stat |= add(*argv, 0);
59 exit(stat);
60 }
61
add(name,ignoreebusy)62 add(name, ignoreebusy)
63 char *name;
64 int ignoreebusy;
65 {
66 extern int errno;
67
68 if (swapon(name) == -1) {
69 switch (errno) {
70 case EINVAL:
71 fprintf(stderr, "swapon: %s: device not configured\n",
72 name);
73 break;
74 case EBUSY:
75 if (!ignoreebusy)
76 fprintf(stderr,
77 "swapon: %s: device already in use\n",
78 name);
79 break;
80 default:
81 fprintf(stderr, "swapon: %s: ", name);
82 perror((char *)NULL);
83 break;
84 }
85 return(1);
86 }
87 return(0);
88 }
89
usage()90 usage()
91 {
92 fprintf(stderr, "usage: swapon [-a] [special_file ...]\n");
93 exit(1);
94 }
95