X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/95f51977ddc18faa2e212f30c00a39540b39f325..ca67e7b465996afb3821d6a075c4dc6a7f0f5d52:/usr/src/etc/swapon.c diff --git a/usr/src/etc/swapon.c b/usr/src/etc/swapon.c index 7b3c827bdf..28d3876548 100644 --- a/usr/src/etc/swapon.c +++ b/usr/src/etc/swapon.c @@ -1,87 +1,106 @@ /* * Copyright (c) 1980 Regents of the University of California. - * All rights reserved. The Berkeley software License Agreement - * specifies the terms and conditions for redistribution. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that the above copyright notice and this paragraph are + * duplicated in all such forms and that any documentation, + * advertising materials, and other materials related to such + * distribution and use acknowledge that the software was developed + * by the University of California, Berkeley. The name of the + * University may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef lint char copyright[] = "@(#) Copyright (c) 1980 Regents of the University of California.\n\ All rights reserved.\n"; -#endif not lint +#endif /* not lint */ #ifndef lint -static char sccsid[] = "@(#)swapon.c 5.2 (Berkeley) 3/4/86"; -#endif not lint +static char sccsid[] = "@(#)swapon.c 5.3 (Berkeley) 6/30/88"; +#endif /* not lint */ -#include #include #include - -extern int errno; +#include main(argc, argv) int argc; - char *argv[]; + char **argv; { - int stat = 0; + extern char *optarg; + extern int optind; + register struct fstab *fsp; + register int stat; + int ch, doall; - --argc, argv++; - if (argc == 0) { - fprintf(stderr, "usage: swapon name...\n"); - exit(1); - } - if (argc == 1 && !strcmp(*argv, "-a")) { - struct fstab *fsp; - if (setfsent() == 0) - perror(FSTAB), exit(1); - while ( (fsp = getfsent()) != 0){ - if (strcmp(fsp->fs_type, FSTAB_SW) != 0) - continue; - if (swapon(fsp->fs_spec) == -1) { - switch(errno) { - case EINVAL: - fprintf(stderr, - "%s: Device not configured\n", - fsp->fs_spec); - stat = 1; - break; - - case EBUSY: /* ignore already in use */ - break; + doall = 0; + while ((ch = getopt(argc, argv, "a")) != EOF) + switch((char)ch) { + case 'a': + doall = 1; + break; + case '?': + default: + usage(); + } + argv += optind; - default: - perror(fsp->fs_spec); - stat = 1; - break; - } - } else - printf("Adding %s as swap device\n", + stat = 0; + if (doall) + while (fsp = getfsent()) { + if (strcmp(fsp->fs_type, FSTAB_SW)) + continue; + if (add(fsp->fs_spec, 1)) + stat = 1; + else + printf("swapon: adding %s as swap device\n", fsp->fs_spec); } - endfsent(); - exit(stat); - } - do { - if (swapon(*argv++) == -1) { - stat = 1; - switch (errno) { - case EINVAL: - fprintf(stderr, "%s: Device not configured\n", - argv[-1]); - break; + else if (!*argv) + usage(); + for (; *argv; ++argv) + stat |= add(*argv, 0); + exit(stat); +} - case EBUSY: - fprintf(stderr, "%s: Device already in use\n", - argv[-1]); - break; +static +add(name, ignoreebusy) + char *name; + int ignoreebusy; +{ + extern int errno; - default: - perror(argv[-1]); - break; - } + if (swapon(name) == -1) { + switch (errno) { + case EINVAL: + fprintf(stderr, "swapon: %s: device not configured\n", + name); + break; + case EBUSY: + if (!ignoreebusy) + fprintf(stderr, + "swapon: %s: device already in use\n", + name); + break; + default: + fprintf(stderr, "swapon: %s: ", name); + perror((char *)NULL); + break; } - argc--; - } while (argc > 0); - exit(stat); + return(1); + } + return(0); +} + +static +usage() +{ + fprintf(stderr, "usage: swapon [-a] [special_file ...]\n"); + exit(1); }