From patchwork Wed Jun 15 14:10:24 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: olivier.hardouin@gmail.com X-Patchwork-Id: 637048 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (caladan.dune.hu [78.24.191.180]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3rWMQc4ZWvz9snm for ; Sat, 18 Jun 2016 00:02:48 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=QKo5RqbJ; dkim-atps=neutral Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id B5DDCB91D13; Fri, 17 Jun 2016 16:00:14 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on arrakis.dune.hu X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP; Fri, 17 Jun 2016 16:00:14 +0200 (CEST) Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 9C08AB80309 for ; Wed, 15 Jun 2016 16:10:54 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 CL_IP_EQ_HELO_IP=-2 (check from: .gmail. - helo: .mail-lb0-f193.google. - helo-domain: .google.) FROM/MX_MATCHES_HELO(DOMAIN)=-2; rate: -7 Received: from mail-lb0-f193.google.com (mail-lb0-f193.google.com [209.85.217.193]) by arrakis.dune.hu (Postfix) with ESMTPS for ; Wed, 15 Jun 2016 16:10:54 +0200 (CEST) Received: by mail-lb0-f193.google.com with SMTP id wy7so267237lbb.3 for ; Wed, 15 Jun 2016 07:10:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=GvhcPDunAP25MRbcmlomLlxnox9uDv1TGfpzCTQspKw=; b=QKo5RqbJEwC2Lk6/AEMVxccvf0tKienQjrD7XZOxXq20JDRBlEuKHOe9VXRDtHZyV5 cMyumgquyb5viFKRDuhnR/Z3068PTIMngSu+URVx7YI0nUw3btQuQkRt5aPRqG7/QI0m 5YLHPX4MFHZ3jtciY9SHcwG9cTS3HJVnXvgXjx18zgKxfbCtMzqhd6hFeItqyAavTsei WAoRjJiTvj4fSXHhaa7aQ9p4zh4FSPO6eucLQq/sxN1+cDxuu6B44YN7dhYFGxofl3/b c10bdh5wk1V4GwH3x7LGYglL0rsgjDg1BlfvLq0HkH1WAl9/IR+4WyQ4H7FBT5ACDtzc +8xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=GvhcPDunAP25MRbcmlomLlxnox9uDv1TGfpzCTQspKw=; b=PSdJAFaphuERkqY1W8UpQEpTb4yTPeTwK98q9YYnDaNEXyfcCuyjxETZj4mo3CB+s7 kVTwj6E8bZxEAu5Kh9a7UVH/B3ePiQDsynMEosSHm+sCuUas4mNIIGNMmcoYn9ja02Yq eNy/mfxAY+Vr6mqAh/coToGOt1OxzXOr5QYzZmBXlZnzLIFRu2iuKDOC4ytWSaLgErTb ygMoP9gPLkdXDnqMVyEpL5Ku0tGJDOJemmeZNGCPw5HRWUXKtP35DAcf/Uv7uoUVH15S q0xR9Pwo/I8IzCc5CgYt1qdyt6XrXJOduFdoVz1hsFVmQPaaFYlJSFvVC+aweu3Nk6xV sMGg== X-Gm-Message-State: ALyK8tJjV4CMPgO+ilAJvQZCGMpFC1IhxGL3PKDoAtkKOrJQY0tsR2i5xgfuHlGePSvOhA== X-Received: by 10.28.54.134 with SMTP id y6mr9928293wmh.96.1465999853938; Wed, 15 Jun 2016 07:10:53 -0700 (PDT) Received: from ubuntu32bits.eu.thmulti.com ([91.183.48.131]) by smtp.gmail.com with ESMTPSA id z5sm3957366wme.5.2016.06.15.07.10.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 15 Jun 2016 07:10:53 -0700 (PDT) From: olivier.hardouin@gmail.com To: openwrt-devel@lists.openwrt.org, lede-dev@lists.infradead.org Date: Wed, 15 Jun 2016 16:10:24 +0200 Message-Id: <1465999824-20936-4-git-send-email-olivier.hardouin@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1465999824-20936-1-git-send-email-olivier.hardouin@gmail.com> References: <1465999824-20936-1-git-send-email-olivier.hardouin@gmail.com> Subject: [OpenWrt-Devel] [PATCH mountd 4/4] filesystem mount options in uci as optional parameter X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" Possibility to overwrite the default hardcoded settings by adding 'options' and 'fstype' in the uci configuration. The fs names are changed in lowercase to comply with UCI general naming. Signed-off-by: Olivier Hardouin --- replaces patch "filesystem mount options in uci config" according to review comments obsoletes patch "uci config for mountd fileystem options" mount.c | 63 +++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 22 deletions(-) diff --git a/mount.c b/mount.c index 36b99f5..aaddb70 100644 --- a/mount.c +++ b/mount.c @@ -51,16 +51,16 @@ struct mount { char *fs_names[] = { "", "", - "MBR", - "EXT2", - "EXT3", - "FAT", - "HFSPLUS", + "mbr", + "ext2", + "ext3", + "fat", + "hfsplus", "", - "NTFS", + "ntfs", "", - "EXFAT", - "EXT4" + "exfat", + "ext4" }; #define MAX_MOUNTED 32 @@ -228,40 +228,59 @@ int mount_new(char *path, char *dev) pid = autofs_safe_fork(); if(!pid) { + char *options, *fstype; if(mount->fs == EXFAT) { - log_printf("mount -t exfat -o rw,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); - ret = system_printf("mount -t exfat -o rw,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); + options = "rw,uid=1000,gid=1000"; + fstype = "exfat"; } if(mount->fs == FAT) { - log_printf("mount -t vfat -o rw,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); - ret = system_printf("mount -t vfat -o rw,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); + options = "rw,uid=1000,gid=1000"; + fstype = "vfat"; } if(mount->fs == EXT4) { - log_printf("mount -t ext4 -o rw,defaults /dev/%s %s", mount->dev, tmp); - ret = system_printf("mount -t ext4 -o rw,defaults /dev/%s %s", mount->dev, tmp); + options = "rw,defaults"; + fstype = "ext4"; } if(mount->fs == EXT3) { - log_printf("mount -t ext3 -o rw,defaults /dev/%s %s", mount->dev, tmp); - ret = system_printf("mount -t ext3 -o rw,defaults /dev/%s %s", mount->dev, tmp); + options = "rw,defaults"; + fstype = "ext3"; } if(mount->fs == EXT2) { - log_printf("mount -t ext2 -o rw,defaults /dev/%s %s", mount->dev, tmp); - ret = system_printf("mount -t ext2 -o rw,defaults /dev/%s %s", mount->dev, tmp); + options = "rw,defaults"; + fstype = "ext2"; } if(mount->fs == HFSPLUS) { - log_printf("mount -t hfsplus -o rw,defaults,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); - ret = system_printf("mount -t hfsplus -o rw,defaults,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); + options = "rw,defaults,uid=1000,gid=1000"; + fstype = "hfsplus"; } if(mount->fs == NTFS) { - log_printf("ntfs-3g /dev/%s %s -o force", mount->dev, tmp); - ret = system_printf("ntfs-3g /dev/%s %s -o force", mount->dev, tmp); + options = "force"; + fstype = "ntfs-3g"; + } + if(mount->fs > MBR && mount->fs <= EXT4) + { + struct uci_context *ctx; + char *uci_options, *uci_fstype; + ctx = ucix_init("mountd"); + if(fs_names[mount->fs]) + { + uci_options = ucix_get_option(ctx, "mountd", fs_names[mount->fs], "options"); + uci_fstype = ucix_get_option(ctx, "mountd", fs_names[mount->fs], "fstype"); + if(uci_options) + options = uci_options; + if(uci_fstype) + fstype = uci_fstype; + log_printf("mount -t %s -o %s /dev/%s %s", fstype, options, mount->dev, tmp); + ret = system_printf("mount -t %s -o %s /dev/%s %s", fstype, options, mount->dev, tmp); + } + ucix_cleanup(ctx); } exit(WEXITSTATUS(ret)); }