From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 59288 invoked by alias); 23 Feb 2017 10:46:09 -0000 Mailing-List: contact elfutils-devel-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: elfutils-devel-owner@sourceware.org Received: (qmail 59272 invoked by uid 89); 23 Feb 2017 10:46:07 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.99.2 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=monster, Hx-languages-length:1185 X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sourceware.org X-Spam-Level: X-HELO: EUR01-VE1-obe.outbound.protection.outlook.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qtcompany.onmicrosoft.com; s=selector1-qt-io; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=/cQWqLJqKlYFVREcAo08xAznPQjhbleAzPMBhIAEKb4=; b=TMz0HMUWowWMfn4skWu1yd8NUPBsa4KeNBc1TaKOmqThUkofXH4CTSSjTY5HGa+r5sSxIx5YeAdWkvfsvUk9D7HSxhx4BDkmLLwhMjDu3pvDWAVO5AZNgpDNEPeH0s+yzmIFKMcdny5Q83skjNwG4pa5hxY6c3Wmelf+ifhcaes= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ulf.hermann@qt.io; Subject: Re: [PATCH] Check for existence of asprintf and vasprintf To: elfutils-devel@sourceware.org References: <4efb45a7-3035-67eb-d61e-62e795afd881@qt.io> From: Ulf Hermann Message-ID: <78714886-9067-e5a9-1dd5-b8b67ead65b6@qt.io> Date: Thu, 23 Feb 2017 10:46:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.6.0 MIME-Version: 1.0 In-Reply-To: <4efb45a7-3035-67eb-d61e-62e795afd881@qt.io> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [62.220.2.194] X-ClientProxiedBy: DB6PR1001CA0018.EURPRD10.PROD.OUTLOOK.COM (10.171.79.28) To AM4PR0201MB1858.eurprd02.prod.outlook.com (10.168.1.148) X-MS-Office365-Filtering-Correlation-Id: 8e516e41-cdef-4ac2-1f90-08d45bd928e7 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:AM4PR0201MB1858; X-Microsoft-Exchange-Diagnostics: 1;AM4PR0201MB1858;3:45hZ76aCWG41VHbbDJBiY3B0VOpeszOqNNPtDefDBFJeqI3PtiUPOryD++SCl7ws4wp/dEHX+5t1VzfTV4j/t1KBbP0LxngngNAwnFRPmjUVrkdfZ1dDC/iTaNbLN7mEvLulH1CGrpR20Hb6OohOHZtn0cMTMyR08JijHUmorovyVsMZLfdyPlB6u/9OAHfAnILFrjGNzqWG/tkEcpUoyw35L4qWUB68X6if75mqq7Ua2uhPiITDxiG8LIIIuNMGhRZwu4WeSltScHPFJR+TBQ==;25:wERvl8rlUaDUUxzJfPC/MvLbsm/lNKbxw4lVkHAS64+6CRCFEJ5JC6qIPGtvD/5ZUmiXx4uu0cdTyxaWsP73+K2xqgce9EcQJgYmKZd0I/F7aT5RQXFmwvTe2fT9h7Mvx/QYZCGXqxLM2HqaaNQm8QMZnUcQvrKqigX2JEUS27qRrnvLUWludhIaf3Za/36tfJIufVDkVGzHieW5YwQKIbXr2Jf/LMB8yy2tRa/3R9vxX2Qc+T+kBjcrtRJFkGMVHzZVuS/45n56fJG79w+n+ktnR/LTnwSFjvejcgxryGE+ZJkZctCvNoKH5wiVMF1b2jVRiTTuLH3sWtbd0+cVVd3Njb3g2JvQGD97m22kc80fJEMWwPLRj1geJHNgLu9G3SZKyeap0uM1CvqJiE9kx8NfvDfzXVJ/yOh2cSKMi8gNdnd1PsT5cYDO3ys0jNcQ8zPy/ZaWf4It3U1Yj+ByWA== X-Microsoft-Exchange-Diagnostics: 1;AM4PR0201MB1858;31:moKnITOkudNrGClSJRRVIKqGwBVZlVJ+/TLGm0b+anQAcWf1cGJBzeKO0aNF0fD4l/Lk9IFkylI+4L0pa/ZsXTw44pugF+ONy/2FL63z1ifN/havwqMawItKTVOdXLsraRfSaP6QJLVC4uN5iejRVc/+6MKMjUNR/fTZAABwk7nvRA7ADglf3wj4c8fdnqiNyK6e8arVpp/o9yhj67jww4clKsY5qNQn6+o/ObBVj+6Km76pAL8hLAgeJjwSFmfrVEQqS2czY7PVwlmduQRiQg==;20:ceGZa2BhvvP6TY5vhDsqO+TcV5EZDiu3VXCiaM+6J13OKKaG+ESkfzO3Vd3F5YPD4Q95+AsAi2fx/Oxhbt66DdVcBDYNx/eSKO1L1nBsN22cfIkRyrbu58CCsLzhC7hng5jgcNvLLbLc9En3RPlPIhnkOmqNT4kqcERw7Rx4XjMZjdOLmZd8stvS/ye8c3RRMQ7VuxSAK9zdHzIvIQdWRnrvHpx9aUDsZDHYhbKdzKrJZEo2Gj5gnLQWIb1dfokz X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123562025)(20161123560025)(20161123558025)(20161123564025)(20161123555025)(6072148);SRVR:AM4PR0201MB1858;BCL:0;PCL:0;RULEID:;SRVR:AM4PR0201MB1858; X-Microsoft-Exchange-Diagnostics: 1;AM4PR0201MB1858;4:27dYScSOu9fRj7uV7FM55pZzJDmD+GNaPQVqoQwwfy+/jhHq35puOvpvwiQcrAPT6tZlzrcJxem24HXEboBQft+VdiVvuNBmqgFy41tzMwrE4tLilWbL43nvZKUg2S1clSBLfaVNES/T+RDhOIaU+js8XDV8piDAFAz8RnaGfotD4bSuL0XJijlKrZh1kbKk7bmeLuSa3DKfmuHt79p4yV5lrTNSP4/G8RwcUTRWS5mSXBBn4Pv15689wvQe1ClELtqtNTSDVxBQqYO64WyItUsEywFLmO5WnRI9vpnnWW4TTEOmPz/T9dO8F8VzZL+OsR4+3vlOpthCjhCeZqt0MHfMcN2uy+Bz28xgD3/iWxg5GDS7Vp1/sdiXYtTD/wY7wwD0K7FSH4/G2IIO8yyiqth5iQAFcduexFAl/hI1zRc9tPNd7EjTaI29m5olLAUj1+5DuqS5uDFTd+nqvV28TBa2SAG70hafrZ9/tm5SzDziCSWwvjShh9rzACMvEc6f85SQo6KySJKywIo134vK3KGgx5yKv23WfL1H5G0XUP/qp5eX0IT4ENwQc6MU7pR5brz6FN6go+8A6HW+rPO7OfaVnfbsGXY1hi9tv8RYB8M= X-Forefront-PRVS: 02272225C5 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(7916002)(39450400003)(199003)(189002)(101416001)(76176999)(50466002)(3846002)(6916009)(23676002)(77096006)(90366009)(6486002)(305945005)(50986999)(5660300001)(31686004)(64126003)(36756003)(92566002)(230700001)(189998001)(229853002)(54356999)(97736004)(4001350100001)(25786008)(68736007)(110136004)(38730400002)(31696002)(6246003)(81166006)(8676002)(81156014)(86362001)(2351001)(83506001)(53936002)(66066001)(2361001)(2950100002)(33646002)(6116002)(450100001)(47776003)(7736002)(105586002)(74482002)(106356001)(2906002)(42186005);DIR:OUT;SFP:1102;SCL:1;SRVR:AM4PR0201MB1858;H:[10.9.78.69];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Received-SPF: None (protection.outlook.com: qt.io does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTRQUjAyMDFNQjE4NTg7MjM6RUlVQmNHL1VReVNJL3dMU053S0NMaytx?= =?utf-8?B?OGNxWllaeHVUa3RlUGpUUXNaQzlPcDBDQ3RsTlZmcXVpN3F6dTdTWGYyWFpU?= =?utf-8?B?eFpEQi9sSFp2cGlYem56OFgrcGZCS3ZjMklvL1FiNmlRYUVYZnF2b3lVd0dM?= =?utf-8?B?bUYyK1Z5aU43eTBWc0dxZUZMU2NaNHpRellySVF0NXA2SWRwa3dTOC9HQTBh?= =?utf-8?B?YzRKa2lZcXZMVVNRczA5YnJhWHUzR1BmeEsrcysweE1IalRXTVl6L0luVUJQ?= =?utf-8?B?ZkMzeXBoSEFHUDJPM3BVNCtzaDRJRlhUWGp2YTBJMFVKYThzY0Jhbng2YXlt?= =?utf-8?B?YkZxbTlWckovV2llVGloczc4Wk4rSW5DcjZuWGw2d055aEtiZFRINzgzSkxX?= =?utf-8?B?UEJWVm9IWkdWZlBHUTBGblBVWkl3bmFobEV3d0xZYVQycFRvbGJGVGNSdGtR?= =?utf-8?B?NmNvVFlaWm9VRUpLMWswb1prT1lqdDBUR1UySVNNN3BSeXlKVElBQzF2ZG5p?= =?utf-8?B?UXlQZjVLd1VHVWV2ODNQVGtSSUxkR09wZlNseDQ2NTdycXhiVFZ2amF2M3E2?= =?utf-8?B?NktkNzdhYTZidkU0b1RIMHpHSERleWhJYW1tUlJtVGI3bXZBTml5QjBKRUV3?= =?utf-8?B?Y04vNFNlNU13azVWQU1NRVMvTnMvOXRCVmdLNjljbEUvR2E3Q1RNeHI5Nitv?= =?utf-8?B?ZEtrVVZQRWVvanFoQzQ5RmpNaWN0UmZQNmUzTFdQQ21ua2EwS2lVSVdRWDdX?= =?utf-8?B?NjFuZEJNN3FvekM3Y0hZdjladUllQ2NCOUQ0dG1SZDNOS0hOSDI4Q05MaTBR?= =?utf-8?B?USt6SHBiVDVuM1RIc0drS1VuMnZlVDVDaHZiU2lDUVlNK0lKWFM5UDZ0Rnds?= =?utf-8?B?TWZjZjExb3NiVi9MUXRuS0toZGY4dE1kSDZWTGFSOW5yaHQ1djR4Ky8vMWhT?= =?utf-8?B?RzZ1SWo3K1FOWXVyUnVRNmhlZFJoS0hVaTYvM3B4NnJyL2JDSlJ5L1RveGpm?= =?utf-8?B?LyszdUNDcHVOby9nZWtKYURQekxtc1hHblltTEdDTFl1MEFSOUJnWCt2dnpj?= =?utf-8?B?SXVZUWVzQytnT08vOGg2S2J0bUx5RzlUUEdjdDRkQkZ4dTNjWUtsTzFBV1Jh?= =?utf-8?B?L0JOeDhYUXZEYysvNEJaQjI0ZXhVd0FidHFRVDAvU1FHR1JMZEI1dkpJSEg2?= =?utf-8?B?RFREUkNPcnd3ZS83MlVxYnFLMHp6YlY5MzlBcGY5WVhHSnE1cUZFSlpQNmVX?= =?utf-8?B?UHloMDNaTjcwSkNOVDlKMldSa28wTjNSNk5QTkhkSHJ2OGo3dEFnS2MzTnl3?= =?utf-8?B?MSt3S1lqM3FaVFhGbEljSjg2UGFoTUt6QUl3VGZOL01ZUXk0bW0rS0JwSzlq?= =?utf-8?B?aVAvK3g4MHZxbHpTQnVNdG9LQWdRNHVJcVBkNmVyallHbVpoa2dJN0xBRmxC?= =?utf-8?B?Qko1UVBYcktQbHNRWkRkTUIvTFNTQ0tSemdhK1pzOGF3Nkw1a3NSWDhkRERU?= =?utf-8?B?MG0zcndzVkRiV2FFWGdVZjVsSDFXR3RjendtdkQ1Q2JKQm04VlBoSHVrWE5x?= =?utf-8?B?dXc5MTJYMFVVVmlJZmw0UVdDUGdOUjBTSW5LbjN5Ukw2aGc3SjhFeExYaThY?= =?utf-8?B?YWZLUlRVUEt5dHFxdGEzSTRKVVJ1amczcVQzOXptWm1Tb01tUEhPWmQvZG1v?= =?utf-8?B?aldlVlpCY2p4RkZwYUwxT05VYVZ5amFJaHg1WkJPVWRVbzNTbU1FeWZFOGl2?= =?utf-8?Q?Kn92iTJX056/r+hYy55pJLKXwehCvgrQHFigidY=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM4PR0201MB1858;6:xogYnMv575Gc06QP+FPuhDzUs11K4NOfPG9D99uXxt5y7dM325l58ua4LZxLI+tZt3dL/KfEbnFQvXSP08dqEkIHP7HzsGGFMFfn79Z4u+bHcjkg7PiE8YqM/bL1dNIMH69+ANEaP29UtY0oQAuEYqVft5BMKKm8/vis8KR2oYo9S3fE/o/KCzytrlXkxKmDwYaQTZ7kfEmcjQ+kseRIKOaibU8ONBwMDYrGnaU3TxK+L0zHTkgMxaYC0hYAEpgomjhQJlAUIgDjlpsvbWvXJl2LN/t9jqaKCWgrAYXhw92pk6qB+P6u/CuYM2spPYu0uSCNXD0pWlnAxZyGdAn4mzgZvVeJSLghykMKGVJD0iVylzd282c+GU48FEMt5uOzFME/yiWTg3BWdVUG5nvdkg==;5:+6TlSTLV0JDivmnJSrXqfBXPEqw+HbN2Tj2SWU4XvrF1/34xlLl6MonsqHHxPTBST3aH1bC5xDwsfUNsY3oLW70kCDszAYQm2SOplv916cocdT4c5qCLzVRgkrXj0dBepHu16rCPyjg9UGqBq793VVaZu63HPtbGET7chkgOD2A=;24:BMtOnezV8lfZRpkbbXbnGpcI16C+TQXk18qrEHXbxOSsQWBqtq58MU9Fo7LqQtaoNF85HSVzqUSjKE6KjttbL8+641/sozutToFHjM6rWRc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM4PR0201MB1858;7:PWiu1CIxcf50+hLpR8iqIklj0um7DoYNWqlBOoz8g3Qj1GLi5x+ofBnV5aHxsS6b2lhIZ5XdjetrEB3VQn9Cqz7YJ9CojgyZ3wqYDL5A3rTQcHZubWjX8KOwdHTqvk7gES/slyP319URp7vhMS/akWO0UE0RkgbDWHyP1n0TjwAsWLXc5mxsHMHV9qWBmfZIe/cxjDqkqGWCScHV/EcQewIM1aMbXDVScaNA4FWJssxBx9jgROWrw8IG6NMec6z6qPDHmNPD6xbePbRflgzOWoxqn457mLlyB3Kco0wrNWnGVBxgCfJgR0Vsn38Joh8mquhF9wkjnAPIF5MbtauDYQ== X-OriginatorOrg: qt.io X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Feb 2017 10:46:01.6477 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR0201MB1858 X-SW-Source: 2017-q1/txt/msg00082.txt.bz2 Please compare the following code with asprintf.c/vasprintf.c/vasnprintf.c from gnulib. asprintf depends on vasprintf which in turn depends on vasnprintf there. vasnprintf is non-standard and not even available on glibc, while vsnprintf as used by my implementation is standardized by POSIX and widely available (even on windows). Granted, we have two calls to vsnprintf in my code vs one call to vasnprintf in the gnulib code. However, if that becomes an issue, I would rather go for some platform-specific optimization (windows also has a number of non-standard and possibly useful *printf functions) rather than importing such a monster. > +int > +asprintf(char **strp, const char *fmt, ...) > +{ > + va_list ap; > + va_start(ap, fmt); > + int result = vasprintf(strp, fmt, ap); > + va_end(ap); > + return result; > +} > + > +int > +vasprintf(char **strp, const char *fmt, va_list ap) > +{ > + va_list test; > + va_copy(test, ap); > + int length = vsnprintf(NULL, 0, fmt, test); > + va_end(test); > + *strp = malloc(length + 1); > + if (*strp == NULL) > + return -1; > + return vsnprintf(*strp, length + 1, fmt, ap); > +}