[v2,1/4] util: add copy function
Message ID | 1500146346-8819-1-git-send-email-jonatan.schlag@ipfire.org |
---|---|
State | Superseded |
Headers |
Return-Path: <network-bounces@lists.ipfire.org> Received: from mail01.ipfire.org (unknown [172.28.1.200]) by web02.ipfire.org (Postfix) with ESMTP id 0CE9A61C5D for <patchwork@ipfire.org>; Sat, 15 Jul 2017 21:19:11 +0200 (CEST) Received: from mail01.ipfire.org (localhost [IPv6:::1]) by mail01.ipfire.org (Postfix) with ESMTP id D43CB2594; Sat, 15 Jul 2017 21:19:10 +0200 (CEST) Received: from ipfire.localdomain (dslb-088-073-208-102.088.073.pools.vodafone-ip.de [88.73.208.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by mail01.ipfire.org (Postfix) with ESMTPSA id 707D824A9; Sat, 15 Jul 2017 21:19:09 +0200 (CEST) From: Jonatan Schlag <jonatan.schlag@ipfire.org> To: network@lists.ipfire.org Subject: [PATCH v2 1/4] util: add copy function Date: Sat, 15 Jul 2017 21:19:03 +0200 Message-Id: <1500146346-8819-1-git-send-email-jonatan.schlag@ipfire.org> X-Mailer: git-send-email 2.6.3 X-BeenThere: network@lists.ipfire.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List for the network package <network.lists.ipfire.org> List-Unsubscribe: <http://lists.ipfire.org/mailman/options/network>, <mailto:network-request@lists.ipfire.org?subject=unsubscribe> List-Archive: <http://lists.ipfire.org/pipermail/network/> List-Post: <mailto:network@lists.ipfire.org> List-Help: <mailto:network-request@lists.ipfire.org?subject=help> List-Subscribe: <http://lists.ipfire.org/mailman/listinfo/network>, <mailto:network-request@lists.ipfire.org?subject=subscribe> Errors-To: network-bounces@lists.ipfire.org Sender: "network" <network-bounces@lists.ipfire.org> |
Message
Jonatan Schlag
July 16, 2017, 5:19 a.m. UTC
Adds a nice function to copy simple configuration files.
Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org>
---
src/functions/functions.util | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
Comments
Hi, there is a few bugs in this function... On 15/07/2017 03:19 PM, Jonatan Schlag wrote: > Adds a nice function to copy simple configuration files. > > Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org> > --- > src/functions/functions.util | 26 ++++++++++++++++++++++++++ > 1 file changed, 26 insertions(+) > > diff --git a/src/functions/functions.util > b/src/functions/functions.util > index 0a9b3d6..a6c98c6 100644 > --- a/src/functions/functions.util > +++ b/src/functions/functions.util > @@ -766,3 +766,29 @@ hex2dec() { > dec2hex() { > printf "%02x\n" "${1}" > } > + > + > +copy() { > + # This function just copy to config files > + assert [ $# -eq 2 ] > + src=${1} > + dst=${2} The local keyword is missing here. > + local data=$(fread ${src}) > + if [ ! $? -eq 0 ]; then > + log ERROR "Could not read data from ${src}" > + return ${EXIT_ERROR} > + fi Are you sure that $? is set to the exit code of fread here? It might be that the shell sets that if the variable assignment to local was successful (which it always is). I think you might need to use the ${PIPESTATUS} array here. > + if [ -e ${dst} ]; then > + log ERROR "Destination ${dst} already exist" > + return ${EXIT_ERROR} > + else > + touch ${dst} > + fi Is that a problem when the destination already exists? I think we should allow copy() to overwrite files. What we do need to check though is if $dst is a directory. In that case we cannot write to it. And there is no need to touch the file when it does not exist, yet. fwrite will create it (I hope - if not change fwrite). > + if ! fwrite ${dst} "${data}"; then > + log ERROR "Could not write data to ${dst}" > + return ${EXIT_ERROR} > + fi > +} -Michael