The swapon/swapoff applets enabled by default in BusyBox have more features than the ones from block-mount's block app, which makes them redundant.
This patch removes only those applets, while both keeping all the internal functionality required to handle hotplug/fstab swap and also shaving off a few bytes from the block executable: Before: 92724 bytes After: 89532 bytes Signed-off-by: Rui Salvaterra <[email protected]> --- block.c | 127 -------------------------------------------------------- 1 file changed, 127 deletions(-) diff --git a/block.c b/block.c index 569bf56..ffb92d9 100644 --- a/block.c +++ b/block.c @@ -1691,127 +1691,6 @@ static int main_info(int argc, char **argv) return 0; } -static int swapon_usage(void) -{ - fprintf(stderr, "Usage: swapon [-s] [-a] [[-p pri] DEVICE]\n\n" - "\tStart swapping on [DEVICE]\n" - " -a\tStart swapping on all swap devices\n" - " -p pri\tSet priority of swap device\n" - " -s\tShow summary\n"); - return -1; -} - -static int main_swapon(int argc, char **argv) -{ - int ch; - FILE *fp; - char *lineptr; - size_t s; - struct probe_info *pr; - int flags = 0; - int pri; - struct stat st; - int err; - - while ((ch = getopt(argc, argv, "ap:s")) != -1) { - switch(ch) { - case 's': - fp = fopen("/proc/swaps", "r"); - lineptr = NULL; - - if (!fp) { - ULOG_ERR("failed to open /proc/swaps\n"); - return -1; - } - while (getline(&lineptr, &s, fp) > 0) - printf("%s", lineptr); - if (lineptr) - free(lineptr); - fclose(fp); - return 0; - case 'a': - cache_load(0); - list_for_each_entry(pr, &devices, list) { - if (strcmp(pr->type, "swap")) - continue; - if (swapon(pr->dev, 0)) - ULOG_ERR("failed to swapon %s\n", pr->dev); - } - return 0; - case 'p': - pri = atoi(optarg); - if (pri >= 0) - flags = ((pri << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK) | SWAP_FLAG_PREFER; - break; - default: - return swapon_usage(); - } - } - - if (optind != (argc - 1)) - return swapon_usage(); - - if (stat(argv[optind], &st) || (!S_ISBLK(st.st_mode) && !S_ISREG(st.st_mode))) { - ULOG_ERR("%s is not a block device or file\n", argv[optind]); - return -1; - } - err = swapon(argv[optind], flags); - if (err) { - ULOG_ERR("failed to swapon %s (%d)\n", argv[optind], err); - return err; - } - - return 0; -} - -static int main_swapoff(int argc, char **argv) -{ - if (argc != 2) { - ULOG_ERR("Usage: swapoff [-a] [DEVICE]\n\n" - "\tStop swapping on DEVICE\n" - " -a\tStop swapping on all swap devices\n"); - return -1; - } - - if (!strcmp(argv[1], "-a")) { - FILE *fp = fopen("/proc/swaps", "r"); - char line[256]; - - if (!fp) { - ULOG_ERR("failed to open /proc/swaps\n"); - return -1; - } - if (fgets(line, sizeof(line), fp)) - while (fgets(line, sizeof(line), fp)) { - char *end = strchr(line, ' '); - int err; - - if (!end) - continue; - *end = '\0'; - err = swapoff(line); - if (err) - ULOG_ERR("failed to swapoff %s (%d)\n", line, err); - } - fclose(fp); - } else { - struct stat s; - int err; - - if (stat(argv[1], &s) || (!S_ISBLK(s.st_mode) && !S_ISREG(s.st_mode))) { - ULOG_ERR("%s is not a block device or file\n", argv[1]); - return -1; - } - err = swapoff(argv[1]); - if (err) { - ULOG_ERR("failed to swapoff %s (%d)\n", argv[1], err); - return err; - } - } - - return 0; -} - int main(int argc, char **argv) { char *base = basename(*argv); @@ -1821,12 +1700,6 @@ int main(int argc, char **argv) ulog_open(-1, -1, "block"); ulog_threshold(LOG_NOTICE); - if (!strcmp(base, "swapon")) - return main_swapon(argc, argv); - - if (!strcmp(base, "swapoff")) - return main_swapoff(argc, argv); - if ((argc > 1) && !strcmp(base, "block")) { if (!strcmp(argv[1], "info")) return main_info(argc, argv); -- 2.27.0 _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
