# define SWAP_FLAG_PRIO_SHIFT 0
#endif
-#ifndef SWAPON_HAS_TWO_ARGS
-/* libc is insane, let's call the kernel */
+#if !defined(HAVE_SWAPON) && defined(SYS_swapon)
# include <sys/syscall.h>
# define swapon(path, flags) syscall(SYS_swapon, path, flags)
#endif
#define MAX_PAGESIZE (64 * 1024)
+#ifndef UUID_STR_LEN
+# define UUID_STR_LEN 37
+#endif
+
enum {
SIG_SWAPSPACE = 1,
SIG_SWSUSPEND
cmd[idx++] = dev->path;
cmd[idx++] = NULL;
execvp(cmd[0], (char * const *) cmd);
- err(EXIT_FAILURE, _("failed to execute %s"), cmd[0]);
+ errexec(cmd[0]);
default: /* parent */
do {
return -1;
}
- /* mkswap returns: 0=suss, 1=error */
+ /* mkswap returns: 0=suss, >0 error */
if (WIFEXITED(status) && WEXITSTATUS(status)==0)
return 0; /* ok */
break;
{
unsigned int last_page = 0;
const unsigned int swap_version = SWAP_VERSION;
- struct swap_header_v1_2 *s;
+ const struct swap_header_v1_2 *s;
assert(dev);
assert(dev->pagesize > 0);
- s = (struct swap_header_v1_2 *) hdr;
+ s = (const struct swap_header_v1_2 *) hdr;
if (s->version == swap_version)
last_page = s->last_page;
static void swap_get_info(struct swap_device *dev, const char *hdr)
{
- struct swap_header_v1_2 *s = (struct swap_header_v1_2 *) hdr;
+ const struct swap_header_v1_2 *s = (const struct swap_header_v1_2 *) hdr;
assert(dev);
if (s && *s->uuid) {
const unsigned char *u = s->uuid;
- char str[37];
+ char str[UUID_STR_LEN];
snprintf(str, sizeof(str),
"%02x%02x%02x%02x-"
fputs(_(" -v, --verbose verbose mode\n"), out);
fputs(USAGE_SEPARATOR, out);
- print_usage_help_options(26);
+ printf(USAGE_HELP_OPTIONS(26));
fputs(_("\nThe <spec> parameter:\n" \
" -L <label> synonym for LABEL=<label>\n"
for (i = 0; i < ARRAY_SIZE(infos); i++)
fprintf(out, " %-5s %s\n", infos[i].name, _(infos[i].help));
- fprintf(out, USAGE_MAN_TAIL("swapon(8)"));
+ printf(USAGE_MAN_TAIL("swapon(8)"));
exit(EXIT_SUCCESS);
}
BYTES_OPTION = CHAR_MAX + 1,
NOHEADINGS_OPTION,
RAW_OPTION,
- SHOW_OPTION
+ SHOW_OPTION,
+ OPT_LIST_TYPES
};
static const struct option long_opts[] = {
{ "verbose", no_argument, NULL, 'v' },
{ "version", no_argument, NULL, 'V' },
{ "show", optional_argument, NULL, SHOW_OPTION },
+ { "output-all", no_argument, NULL, OPT_LIST_TYPES },
{ "noheadings", no_argument, NULL, NOHEADINGS_OPTION },
{ "raw", no_argument, NULL, RAW_OPTION },
{ "bytes", no_argument, NULL, BYTES_OPTION },
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
- atexit(close_stdout);
+ close_stdout_atexit();
memset(&ctl, 0, sizeof(struct swapon_ctl));
ctl.props.priority = -1;
case 'a': /* all */
ctl.all = 1;
break;
- case 'h': /* help */
- usage();
- break;
case 'o':
options = optarg;
break;
}
ctl.show = 1;
break;
+ case OPT_LIST_TYPES:
+ for (ctl.ncolumns = 0; (size_t)ctl.ncolumns < ARRAY_SIZE(infos); ctl.ncolumns++)
+ ctl.columns[ctl.ncolumns] = ctl.ncolumns;
+ break;
case NOHEADINGS_OPTION:
ctl.no_heading = 1;
break;
case BYTES_OPTION:
ctl.bytes = 1;
break;
- case 'V': /* version */
- printf(UTIL_LINUX_VERSION);
- return EXIT_SUCCESS;
case 0:
break;
+
+ case 'h': /* help */
+ usage();
+ case 'V': /* version */
+ print_version(EXIT_SUCCESS);
default:
errtryhelp(EXIT_FAILURE);
}