From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5CDB542DDE; Thu, 6 Jul 2023 00:48:15 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 22C4D42D4D; Thu, 6 Jul 2023 00:48:12 +0200 (CEST) Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) by mails.dpdk.org (Postfix) with ESMTP id AC1A742D46 for ; Thu, 6 Jul 2023 00:48:10 +0200 (CEST) Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-262e44b8bf6so112603a91.1 for ; Wed, 05 Jul 2023 15:48:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20221208.gappssmtp.com; s=20221208; t=1688597289; x=1691189289; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NMYGU1aLaJffTe9FX1Ef551Tl8K520p4GCfWy/DHdrs=; b=E0PaxfBRd8dVSsUyVeDivamQK7pAzZy3JSchQdxWP/pVdd5vWRB1OSgR/Yg4JpaSWM R3JnUIl2SbjesuKCXDLD+oOq8HCeDBlt6LIgP6iEo4rAZ2pGqknhkIByWvU9shg07FtQ 8m4Cfn2z/dFdxmTq73yUxH1q0TlJxNsSKMSdOjVKJ2Fggm7K1HkxAtxxQfSLo1zj/ZPe 3/yT8iiAvxAGaX74E/+0D7MWamx0eIk4NNF1YiKJSIIHw8dJkVqx9UjVK40AwG7RPJIK 77duUvjOydBaLi5UXpOy9ZG47WT4P6JzfjLTioB++aCFOCmJJTyBl5tLYiRg2hpxvHMy cmIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688597289; x=1691189289; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NMYGU1aLaJffTe9FX1Ef551Tl8K520p4GCfWy/DHdrs=; b=HgX5i3lFGzJi4NKWH1fIDqVIt1LeCuDsCvhvxP/JRCs02R9qL+JC52mEpDTivkANzn kVRfC7ip2tn4C0PWx3N9/5RpQ3bOelzYbXOYd3ASO8ryVvgCsqS5rV2sWT67PPyRKR3H TFuup40Hm90NFjwRkmakERFJCwImt4qhBTbpeh5/5bDEI0JMt/KFMDG6mbvzx+Cnjlp8 Zi0io11gAuXljXm8rwmZqKi2cc4DFIbLvLHss4OlSM4i3FIWJXL/tcdLJdPLsdSNpXQo q9nfPsY882kTHSezwUIcA1Jh/vMHlauYQwIYtzM+uiiVmqTpgp71hAtwLEnFqgqZFpd3 rVwA== X-Gm-Message-State: ABy/qLYdNoS0zaOe6ATgPklrF+opQkiGlGE9d5zXq+QuOygfjIXRwCM6 c0sFjQDUZq23F0B2UrcEtpFnBJkJdCmsCGkewRQ= X-Google-Smtp-Source: APBJJlFNUCYT9LnQF9gHsxQ66SOWLNwF8OQPPrWRR1nDisPniRpb/K8zeNjluvaqqD3hF6K6bfCWdQ== X-Received: by 2002:a17:90b:783:b0:262:cb1c:a782 with SMTP id l3-20020a17090b078300b00262cb1ca782mr70912pjz.37.1688597289480; Wed, 05 Jul 2023 15:48:09 -0700 (PDT) Received: from hermes.local (204-195-120-218.wavecable.com. [204.195.120.218]) by smtp.gmail.com with ESMTPSA id bb16-20020a17090b009000b002630bfd35b0sm1906044pjb.7.2023.07.05.15.48.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jul 2023 15:48:09 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Dmitry Kozlyuk , Narcisa Ana Maria Vasile , Dmitry Malloy , Pallavi Kadam Subject: [PATCH v7 1/5] windows: make getopt functions have const properties Date: Wed, 5 Jul 2023 15:48:01 -0700 Message-Id: <20230705224805.286156-2-stephen@networkplumber.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230705224805.286156-1-stephen@networkplumber.org> References: <20200814173441.23086-1-stephen@networkplumber.org> <20230705224805.286156-1-stephen@networkplumber.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This aligns getopt, getopt_long, etc to have the same const attributes as Linux and FreeBSD. The changes are derived from the FreeBSD version of getopt_long. Signed-off-by: Stephen Hemminger --- lib/eal/windows/getopt.c | 23 ++++++++++++----------- lib/eal/windows/include/getopt.h | 8 ++++---- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/lib/eal/windows/getopt.c b/lib/eal/windows/getopt.c index a1f51c6c2318..50ff71b9300d 100644 --- a/lib/eal/windows/getopt.c +++ b/lib/eal/windows/getopt.c @@ -20,7 +20,7 @@ #include #include -const char *optarg; /* argument associated with option */ +char *optarg; /* argument associated with option */ int opterr = 1; /* if error message should be printed */ int optind = 1; /* index into parent argv vector */ int optopt = '?'; /* character checked for validity */ @@ -39,9 +39,9 @@ static void pass(const char *a) {(void) a; } #define BADARG ((*options == ':') ? (int)':' : (int)'?') #define INORDER 1 -#define EMSG "" +static char EMSG[] = ""; -static const char *place = EMSG; /* option letter processing */ +static char *place = EMSG; /* option letter processing */ /* XXX: set optreset to 1 rather than these two */ static int nonopt_start = -1; /* first non option argument (for permute) */ @@ -80,7 +80,7 @@ gcd(int a, int b) */ static void permute_args(int panonopt_start, int panonopt_end, int opt_end, - char **nargv) + char * const *nargv) { int cstart, cyclelen, i, j, ncycle, nnonopts, nopts, pos; char *swap; @@ -101,11 +101,12 @@ permute_args(int panonopt_start, int panonopt_end, int opt_end, pos -= nnonopts; else pos += nopts; + swap = nargv[pos]; /* LINTED const cast */ - ((char **) nargv)[pos] = nargv[cstart]; + ((char **)(uintptr_t)nargv)[pos] = nargv[cstart]; /* LINTED const cast */ - ((char **)nargv)[cstart] = swap; + ((char **)(uintptr_t)nargv)[cstart] = swap; } } } @@ -116,7 +117,7 @@ permute_args(int panonopt_start, int panonopt_end, int opt_end, * Returns -1 if short_too is set and the option does not match long_options. */ static int -parse_long_options(char **nargv, const char *options, +parse_long_options(char * const *nargv, const char *options, const struct option *long_options, int *idx, int short_too) { const char *current_argv; @@ -236,7 +237,7 @@ parse_long_options(char **nargv, const char *options, * Parse argc/argv argument vector. Called by user level routines. */ static int -getopt_internal(int nargc, char **nargv, const char *options, +getopt_internal(int nargc, char *const nargv[], const char *options, const struct option *long_options, int *idx, int flags) { char *oli; /* option letter list index */ @@ -434,7 +435,7 @@ getopt_internal(int nargc, char **nargv, const char *options, * Parse argc/argv argument vector. */ int -getopt(int nargc, char *nargv[], const char *options) +getopt(int nargc, char *const nargv[], const char *options) { return getopt_internal(nargc, nargv, options, NULL, NULL, FLAG_PERMUTE); @@ -445,7 +446,7 @@ getopt(int nargc, char *nargv[], const char *options) * Parse argc/argv argument vector. */ int -getopt_long(int nargc, char *nargv[], const char *options, +getopt_long(int nargc, char *const nargv[], const char *options, const struct option *long_options, int *idx) { @@ -458,7 +459,7 @@ getopt_long(int nargc, char *nargv[], const char *options, * Parse argc/argv argument vector. */ int -getopt_long_only(int nargc, char *nargv[], const char *options, +getopt_long_only(int nargc, char *const nargv[], const char *options, const struct option *long_options, int *idx) { diff --git a/lib/eal/windows/include/getopt.h b/lib/eal/windows/include/getopt.h index 6f57af454b17..e4cf6873cb0c 100644 --- a/lib/eal/windows/include/getopt.h +++ b/lib/eal/windows/include/getopt.h @@ -44,7 +44,7 @@ /** argument to current option, or NULL if it has none */ -extern const char *optarg; +extern char *optarg; /** Current position in arg string. Starts from 1. * Setting to 0 resets state. */ @@ -80,14 +80,14 @@ struct option { }; /** Compat: getopt */ -int getopt(int argc, char *argv[], const char *options); +int getopt(int argc, char *const argv[], const char *options); /** Compat: getopt_long */ -int getopt_long(int argc, char *argv[], const char *options, +int getopt_long(int argc, char *const argv[], const char *options, const struct option *longopts, int *longindex); /** Compat: getopt_long_only */ -int getopt_long_only(int nargc, char *argv[], const char *options, +int getopt_long_only(int nargc, char *const argv[], const char *options, const struct option *long_options, int *idx); -- 2.39.2