Show a cover letter.

GET /api/covers/351/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 351,
    "url": "http://patches.dpdk.org/api/covers/351/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20231102172849.7400-1-bruce.richardson@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20231102172849.7400-1-bruce.richardson@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231102172849.7400-1-bruce.richardson@intel.com",
    "date": "2023-11-02T17:28:46",
    "name": "[24.03,RFC,0/3] Add argument manipulation library",
    "submitter": {
        "id": 20,
        "url": "http://patches.dpdk.org/api/people/20/?format=api",
        "name": "Bruce Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20231102172849.7400-1-bruce.richardson@intel.com/mbox/",
    "series": [
        {
            "id": 30120,
            "url": "http://patches.dpdk.org/api/series/30120/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=30120",
            "date": "2023-11-02T17:28:46",
            "name": "Add argument manipulation library",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/30120/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/351/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 7BD9543270;\n\tThu,  2 Nov 2023 18:33:00 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id E3711427DA;\n\tThu,  2 Nov 2023 18:32:54 +0100 (CET)",
            "from mgamail.intel.com (mgamail.intel.com [192.198.163.8])\n by mails.dpdk.org (Postfix) with ESMTP id 23C9642D78\n for <dev@dpdk.org>; Thu,  2 Nov 2023 18:32:53 +0100 (CET)",
            "from fmsmga002.fm.intel.com ([10.253.24.26])\n by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 02 Nov 2023 10:28:59 -0700",
            "from silpixa00401385.ir.intel.com ([10.237.214.164])\n by fmsmga002.fm.intel.com with ESMTP; 02 Nov 2023 10:28:58 -0700"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1698946374; x=1730482374;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=T1N0tBjHr8bFOESq0oU6cFHTyPQTgwWLjUTOW2rOTHo=;\n b=GJfMyJuj9Eer2UAkijOWQYlt1SI0I38fP0ufDPboFkkgYrF2KNbOEOWo\n oOu4rHdkl7/4qv9SVoJFxHuo8VEYatIlqN63XD8qozzjQAc0e1DxRZPDq\n c46CsuBZQk/8VgKY+HRJHu2zCK201Usnkx5VYY17m1dliHiAh+vmsP/O5\n AdWdrHreUxYD5xFw9tMJ08f4G0qNZLMIPMWpxBVkBMghLMDGwKZhqvwwK\n e/ZqbgouIUKXAP10505yzeShDfQni613JiQRStAAsTgdyt5JB6ciIy+mm\n G23JmXqEJe0lwnWmbxyiphZXVvj83ob38hZ9B95CvAMDngOBxfYqttGKt Q==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6600,9927,10882\"; a=\"1645193\"",
            "E=Sophos;i=\"6.03,272,1694761200\";\n   d=\"scan'208\";a=\"1645193\"",
            "E=McAfee;i=\"6600,9927,10882\"; a=\"878330460\"",
            "E=Sophos;i=\"6.03,272,1694761200\"; d=\"scan'208\";a=\"878330460\""
        ],
        "X-ExtLoop1": "1",
        "From": "Bruce Richardson <bruce.richardson@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "Bruce Richardson <bruce.richardson@intel.com>",
        "Subject": "[24.03 RFC 0/3] Add argument manipulation library",
        "Date": "Thu,  2 Nov 2023 17:28:46 +0000",
        "Message-Id": "<20231102172849.7400-1-bruce.richardson@intel.com>",
        "X-Mailer": "git-send-email 2.39.2",
        "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 <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "DPDK has traditionally assumed that apps are written where argc/argv\nparameters are passed directly to rte_eal_init() and then app arguments\nare handled afterwards, as is done in the DPDK apps and examples.\n\nHowever, based on other projects, like VPP and OVS, we know that this is\noften not the case. Instead, the apps build up argument lists internally\nthemselves and pass those to the init function, and DPDK never directly\naccesses the real argc/argv values.\n\nTherefore, let's make this mode of operation a little easier to use, by\nadding in an args library to allow an app to dynamically build up an\nargs array and then pass that to EAL init. This library allows things\nlike, for example, initializing a list from argv and then checking if a\nparticular parameter is present, adding it if not. All the basics of\nsuch a library are included in patch 1, and I've found it of use myself\nwhen writing some simple apps internally using DPDK.\n\nPatches 2 and 3 go a little further than this, and allow for a slightly\ndifferent use-case, that where an app may want to allow mixing of EAL\narguments in with app args. These patches allow the user to query if a\nparticular argument is an EAL arg or not, or a valid app argument. The\nidea here would be, that an app could go through it's argument list,\nbuilding up an argument list for EAL init by just picking out the EAL\narguments from a full argument list. I'm less convinced of the value of\nthis compared to the basics in patch 1, but I think the idea is\ninteresting so seeking feedback on it.\n\nBruce Richardson (3):\n  args: new library to allow easier manipulation of cmdline args\n  eal: allow export of the cmdline argument parsing options\n  args: add functions to check parameter validity\n\n doc/api/doxy-api-index.md           |   1 +\n doc/api/doxy-api.conf.in            |   1 +\n lib/args/args.c                     | 301 ++++++++++++++++++++++++++++\n lib/args/meson.build                |   5 +\n lib/args/rte_args.h                 | 255 +++++++++++++++++++++++\n lib/args/version.map                |  22 ++\n lib/eal/common/eal_common_options.c |   9 +\n lib/eal/include/rte_eal.h           |  14 ++\n lib/eal/version.map                 |   1 +\n lib/meson.build                     |   2 +\n 10 files changed, 611 insertions(+)\n create mode 100644 lib/args/args.c\n create mode 100644 lib/args/meson.build\n create mode 100644 lib/args/rte_args.h\n create mode 100644 lib/args/version.map\n\n--\n2.39.2"
}