From patchwork Tue Apr 22 14:37:13 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Sterba X-Patchwork-Id: 4032871 Return-Path: X-Original-To: patchwork-linux-btrfs@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 550C3BFF02 for ; Tue, 22 Apr 2014 14:37:31 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 9832E20211 for ; Tue, 22 Apr 2014 14:37:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A35A4201FB for ; Tue, 22 Apr 2014 14:37:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756492AbaDVOhR (ORCPT ); Tue, 22 Apr 2014 10:37:17 -0400 Received: from cantor2.suse.de ([195.135.220.15]:41119 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756435AbaDVOhP (ORCPT ); Tue, 22 Apr 2014 10:37:15 -0400 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 52E75AD0F for ; Tue, 22 Apr 2014 14:37:14 +0000 (UTC) Received: by ds.suse.cz (Postfix, from userid 10065) id 0E992DA9DE; Tue, 22 Apr 2014 16:37:14 +0200 (CEST) From: David Sterba To: linux-btrfs@vger.kernel.org Cc: David Sterba Subject: [PATCH] btrfs-progs: move arg_strtou64 to a separate file for library Date: Tue, 22 Apr 2014 16:37:13 +0200 Message-Id: <1398177433-27216-1-git-send-email-dsterba@suse.cz> X-Mailer: git-send-email 1.9.0 Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Linking with libbtrfs fails because arg_strtou64 is not defined and we cannot just add utils.o to library objects because it's not library-clean. Reported-by: Arvin Schnell Reported-by: Anton Farygin Signed-off-by: David Sterba --- Makefile | 5 +++-- utils-lib.c | 43 +++++++++++++++++++++++++++++++++++++++++++ utils.c | 33 --------------------------------- 3 files changed, 46 insertions(+), 35 deletions(-) create mode 100644 utils-lib.c diff --git a/Makefile b/Makefile index 51d53fadf5af..76565e8b2307 100644 --- a/Makefile +++ b/Makefile @@ -9,14 +9,15 @@ CFLAGS = -g -O1 -fno-strict-aliasing objects = ctree.o disk-io.o radix-tree.o extent-tree.o print-tree.o \ root-tree.o dir-item.o file-item.o inode-item.o inode-map.o \ extent-cache.o extent_io.o volumes.o utils.o repair.o \ - qgroup.o raid6.o free-space-cache.o list_sort.o props.o + qgroup.o raid6.o free-space-cache.o list_sort.o props.o \ + utils-lib.o cmds_objects = cmds-subvolume.o cmds-filesystem.o cmds-device.o cmds-scrub.o \ cmds-inspect.o cmds-balance.o cmds-send.o cmds-receive.o \ cmds-quota.o cmds-qgroup.o cmds-replace.o cmds-check.o \ cmds-restore.o cmds-rescue.o chunk-recover.o super-recover.o \ cmds-property.o libbtrfs_objects = send-stream.o send-utils.o rbtree.o btrfs-list.o crc32c.o \ - uuid-tree.o + uuid-tree.o utils-lib.o libbtrfs_headers = send-stream.h send-utils.h send.h rbtree.h btrfs-list.h \ crc32c.h list.h kerncompat.h radix-tree.h extent-cache.h \ extent_io.h ioctl.h ctree.h btrfsck.h diff --git a/utils-lib.c b/utils-lib.c new file mode 100644 index 000000000000..074f771e0b6e --- /dev/null +++ b/utils-lib.c @@ -0,0 +1,43 @@ +#define _GNU_SOURCE + +#include "kerncompat.h" +#include +#include +#include + +#if BTRFS_FLAT_INCLUDES +#else +#endif /* BTRFS_FLAT_INCLUDES */ + +/* + * This function should be only used when parsing + * command arg, it won't return error to it's + */ +u64 arg_strtou64(const char *str) +{ + u64 value; + char *ptr_parse_end = NULL; + + value = strtoull(str, &ptr_parse_end, 0); + if (ptr_parse_end && *ptr_parse_end != '\0') { + fprintf(stderr, "ERROR: %s is not a valid numeric value.\n", + str); + exit(1); + } + /* + * if we pass a negative number to strtoull, + * it will return an unexpected number to us, + * so let's do the check ourselves. + */ + if (str[0] == '-') { + fprintf(stderr, "ERROR: %s: negative value is invalid.\n", + str); + exit(1); + } + if (value == ULLONG_MAX) { + fprintf(stderr, "ERROR: %s is too large.\n", str); + exit(1); + } + return value; +} + diff --git a/utils.c b/utils.c index 3e9c527a492c..134f43a76fe9 100644 --- a/utils.c +++ b/utils.c @@ -1539,39 +1539,6 @@ scan_again: return 0; } -/* - * This function should be only used when parsing - * command arg, it won't return error to it's - * caller and rather exit directly just like usage(). - */ -u64 arg_strtou64(const char *str) -{ - u64 value; - char *ptr_parse_end = NULL; - - value = strtoull(str, &ptr_parse_end, 0); - if (ptr_parse_end && *ptr_parse_end != '\0') { - fprintf(stderr, "ERROR: %s is not a valid numeric value.\n", - str); - exit(1); - } - /* - * if we pass a negative number to strtoull, - * it will return an unexpected number to us, - * so let's do the check ourselves. - */ - if (str[0] == '-') { - fprintf(stderr, "ERROR: %s: negative value is invalid.\n", - str); - exit(1); - } - if (value == ULLONG_MAX) { - fprintf(stderr, "ERROR: %s is too large.\n", str); - exit(1); - } - return value; -} - u64 parse_size(char *s) { int i;