apply post 1.10.3 patches, release 1.10.4
[oweals/busybox.git] / util-linux / mount.c
index bd5f27b2e64e0d2690ef50cf9d7664829d46e69e..53d91f387486aedf84ab6bcbbe5c459d35f9a295 100644 (file)
@@ -1059,6 +1059,7 @@ static int nfsmount(struct mntent *mp, long vfsflags, char *filteropts)
        if (filteropts) for (opt = strtok(filteropts, ","); opt; opt = strtok(NULL, ",")) {
                char *opteq = strchr(opt, '=');
                if (opteq) {
+                       int val, idx;
                        static const char options[] ALIGN1 =
                                /* 0 */ "rsize\0"
                                /* 1 */ "wsize\0"
@@ -1081,87 +1082,92 @@ static int nfsmount(struct mntent *mp, long vfsflags, char *filteropts)
                                /* 18 */ "proto\0"
                                /* 19 */ "namlen\0"
                                /* 20 */ "addr\0";
-                       int val = xatoi_u(opteq + 1);
-                       *opteq = '\0';
-                       switch (index_in_strings(options, opt)) {
+
+                       *opteq++ = '\0';
+                       idx = index_in_strings(options, opt);
+                       switch (idx) {
+                       case 12: // "mounthost"
+                               mounthost = xstrndup(opteq,
+                                               strcspn(opteq, " \t\n\r,"));
+                               continue;
+                       case 18: // "proto"
+                               if (!strncmp(opteq, "tcp", 3))
+                                       tcp = 1;
+                               else if (!strncmp(opteq, "udp", 3))
+                                       tcp = 0;
+                               else
+                                       bb_error_msg("warning: unrecognized proto= option");
+                               continue;
+                       case 20: // "addr" - ignore
+                               continue;
+                       }
+
+                       val = xatoi_u(opteq);
+                       switch (idx) {
                        case 0: // "rsize"
                                data.rsize = val;
-                               break;
+                               continue;
                        case 1: // "wsize"
                                data.wsize = val;
-                               break;
+                               continue;
                        case 2: // "timeo"
                                data.timeo = val;
-                               break;
+                               continue;
                        case 3: // "retrans"
                                data.retrans = val;
-                               break;
+                               continue;
                        case 4: // "acregmin"
                                data.acregmin = val;
-                               break;
+                               continue;
                        case 5: // "acregmax"
                                data.acregmax = val;
-                               break;
+                               continue;
                        case 6: // "acdirmin"
                                data.acdirmin = val;
-                               break;
+                               continue;
                        case 7: // "acdirmax"
                                data.acdirmax = val;
-                               break;
+                               continue;
                        case 8: // "actimeo"
                                data.acregmin = val;
                                data.acregmax = val;
                                data.acdirmin = val;
                                data.acdirmax = val;
-                               break;
+                               continue;
                        case 9: // "retry"
                                retry = val;
-                               break;
+                               continue;
                        case 10: // "port"
                                port = val;
-                               break;
+                               continue;
                        case 11: // "mountport"
                                mountport = val;
-                               break;
-                       case 12: // "mounthost"
-                               mounthost = xstrndup(opteq+1,
-                                               strcspn(opteq+1," \t\n\r,"));
-                               break;
+                               continue;
                        case 13: // "mountprog"
                                mountprog = val;
-                               break;
+                               continue;
                        case 14: // "mountvers"
                                mountvers = val;
-                               break;
+                               continue;
                        case 15: // "nfsprog"
                                nfsprog = val;
-                               break;
+                               continue;
                        case 16: // "nfsvers"
                        case 17: // "vers"
                                nfsvers = val;
-                               break;
-                       case 18: // "proto"
-                               if (!strncmp(opteq+1, "tcp", 3))
-                                       tcp = 1;
-                               else if (!strncmp(opteq+1, "udp", 3))
-                                       tcp = 0;
-                               else
-                                       bb_error_msg("warning: unrecognized proto= option");
-                               break;
+                               continue;
                        case 19: // "namlen"
-                               if (nfs_mount_version >= 2)
+                               //if (nfs_mount_version >= 2)
                                        data.namlen = val;
-                               else
-                                       bb_error_msg("warning: option namlen is not supported\n");
-                               break;
-                       case 20: // "addr" - ignore
-                               break;
+                               //else
+                               //      bb_error_msg("warning: option namlen is not supported\n");
+                               continue;
                        default:
                                bb_error_msg("unknown nfs mount parameter: %s=%d", opt, val);
                                goto fail;
                        }
                }
-               else {
+               else { /* not of the form opt=val */
                        static const char options[] ALIGN1 =
                                "bg\0"
                                "fg\0"