mount: fix "duplicate mount options in mtab" bug
diff --git a/util-linux/mount.c b/util-linux/mount.c
index 57d2d04..430ec9b 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -102,9 +102,27 @@
 static void append_mount_options(char **oldopts, char *newopts)
 {
 	if (*oldopts && **oldopts) {
-		char *temp = xasprintf("%s,%s",*oldopts,newopts);
-		free(*oldopts);
-		*oldopts = temp;
+		/* do not insert options which are already there */
+		while (newopts[0]) {
+			char *p;
+			int len = strlen(newopts);
+			p = strchr(newopts, ',');
+			if (p) len = p - newopts;
+			p = *oldopts;
+			while (1) {
+				if (!strncmp(p,newopts,len) && (p[len]==',' || p[len]==0))
+					goto skip;
+				p = strchr(p,',');
+				if(!p) break;
+				p++;
+			}
+			p = xasprintf("%s,%.*s", *oldopts, len, newopts);
+			free(*oldopts);
+			*oldopts = p;
+skip:
+			newopts += len;
+			while (newopts[0] == ',') newopts++;
+		}
 	} else {
 		if (ENABLE_FEATURE_CLEAN_UP) free(*oldopts);
 		*oldopts = xstrdup(newopts);