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

Reply via email to