aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/busybox/busybox-static-1.2.1/mount-all-type.patch
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /recipes/busybox/busybox-static-1.2.1/mount-all-type.patch
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
downloadopenembedded-709c4d66e0b107ca606941b988bad717c0b45d9b.tar.gz
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'recipes/busybox/busybox-static-1.2.1/mount-all-type.patch')
-rw-r--r--recipes/busybox/busybox-static-1.2.1/mount-all-type.patch84
1 files changed, 84 insertions, 0 deletions
diff --git a/recipes/busybox/busybox-static-1.2.1/mount-all-type.patch b/recipes/busybox/busybox-static-1.2.1/mount-all-type.patch
new file mode 100644
index 0000000000..476094a804
--- /dev/null
+++ b/recipes/busybox/busybox-static-1.2.1/mount-all-type.patch
@@ -0,0 +1,84 @@
+--- busybox-1.00/.pc/mount-all-type.patch/util-linux/mount.c 2004-08-02 17:14:02.000000000 -0700
++++ busybox-1.00/util-linux/mount.c 2005-05-13 00:17:19.054232796 -0700
+@@ -364,6 +364,56 @@
+ exit(EXIT_SUCCESS);
+ }
+
++/* Does this file system type, from /etc/fstab, match the given
++ * -t option value?
++ */
++static int match_fs(const char *option, const char *type)
++{
++ const int len = strlen(type);
++ const int no = option[0] == 'n' && option[1] == 'o';
++ const char *optp = option;
++
++ if (len > 0) do {
++ const char *match = strstr(optp, type);
++
++ if (match == NULL) {
++ /* No match, but if the option string starts 'no' no match
++ * means yes.
++ */
++ return no;
++ }
++
++ /* Match, may be partial, check for end-of-type in option string. */
++ if (match[len] == 0 || match[len] == ',') {
++ /* Ok, check for type or notype. */
++ if (match == option) {
++ /* Exact match at start (can't be 'no') */
++ return 1;
++ }
++ if (match > option+1) {
++ if (match[-1] == ',') {
++ /* Exact match in middle, might be 'no' */
++ return !no;
++ }
++ if (match == option+2 && no) {
++ /* Exact match to 'notype' at start. */
++ return 0;
++ }
++ if (match > option+2 && match[-3] == ',' &&
++ match[-2] == 'n' && match[-1] == 'o') {
++ return 0;
++ }
++ }
++ }
++
++ /* Look for another match. */
++ optp = match+1;
++ } while (1);
++
++ /* zero length type in fstab (impossible?), don't match it. */
++ return 0;
++}
++
+ extern int mount_main(int argc, char **argv)
+ {
+ struct stat statbuf;
+@@ -371,6 +421,7 @@
+ char *extra_opts;
+ int flags = 0;
+ char *filesystemType = "auto";
++ char *filesystemOption = 0;
+ int got_filesystemType = 0;
+ char *device = xmalloc(PATH_MAX);
+ char *directory = xmalloc(PATH_MAX);
+@@ -393,6 +444,7 @@
+ break;
+ case 't':
+ filesystemType = optarg;
++ filesystemOption = optarg;
+ got_filesystemType = 1;
+ break;
+ case 'w':
+@@ -460,6 +512,8 @@
+
+ strcpy(device, m->mnt_fsname);
+ strcpy(directory, m->mnt_dir);
++ if (all && filesystemOption != 0 && !match_fs(filesystemOption, m->mnt_type))
++ continue;
+ filesystemType = bb_xstrdup(m->mnt_type);
+ singlemount:
+ extra_opts = string_flags;