From mboxrd@z Thu Jan 1 00:00:00 1970 From: Markus Mayer Subject: [PATCH v3 0/7] lib: string: add functions to case-convert strings Date: Fri, 8 Jul 2016 15:43:07 -0700 Message-ID: <1468017794-4818-1-git-send-email-mmayer@broadcom.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Andrew Morton , Al Viro , Rasmus Villemoes , Chris Metcalf , Kees Cook Cc: devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b@public.gmane.org, linux-scsi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, speakup-UPO/6gOIxNZglr+F8WMZYdi2O/JbrIOy@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-acpi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, target-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: linux-acpi@vger.kernel.org VGhpcyBzZXJpZXMgaW50cm9kdWNlcyBhIGZhbWlseSBvZiBnZW5lcmljIHN0cmluZyBjYXNlIGNv bnZlcnNpb24KZnVuY3Rpb25zLiBUaGlzIGtpbmQgb2YgZnVuY3Rpb25hbGl0eSBpcyBuZWVkZWQg aW4gc2V2ZXJhbCBwbGFjZXMgaW4KdGhlIGtlcm5lbC4gUmlnaHQgbm93LCBldmVyeWJvZHkgc2Vl bXMgdG8gYmUgaW1wbGVtZW50aW5nIHRoZWlyIG93bgpjb3B5IG9mIHRoaXMgZnVuY3Rpb25hbGl0 eS4KCkJhc2VkIG9uIHRoZSBkaXNjdXNzaW9uIG9mIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRo aXMgc2VyaWVzWzFdIGFuZAp0aGUgdXNlIGNhc2VzIGZvdW5kIGluIHRoZSBrZXJuZWwsIGl0IGRv ZXMgbG9vayBsaWtlIGhhdmluZyBzZXZlcmFsCmZsYXZvdXJzIG9mIGNhc2UgY29udmVyc2lvbiBm dW5jdGlvbnMgaXMgYmVuZWZpY2lhbC4gVGhlIHVzZSBjYXNlcyBmYWxsCmludG8gdGhyZWUgY2F0 ZWdvcmllczoKICAgIC0gY29weWluZyBhIHN0cmluZyBhbmQgY29udmVydGluZyB0aGUgY2FzZSB3 aGlsZSBzcGVjaWZ5aW5nIGEKICAgICAgbWF4aW11bSBsZW5ndGggdG8gbWltaWMgc3RybGNweSgp CiAgICAtIGNvcHlpbmcgYSBzdHJpbmcgYW5kIGNvbnZlcnRpbmcgdGhlIGNhc2Ugd2l0aG91dCBz cGVjaWZ5aW5nIGEKICAgICAgbGVuZ3RoIHRvIG1pbWljIHN0cmNweSgpCiAgICAtIGNvbnZlcnRp bmcgdGhlIGNhc2Ugb2YgYSBzdHJpbmcgaW4tcGxhY2UgKGkuZS4gbW9kaWZ5aW5nIHRoZQogICAg ICBzdHJpbmcgdGhhdCB3YXMgcGFzc2VkIGluKQoKQ29uc2VxdWVudGx5LCBJIGFtIHByb3Bvc2lu ZyB0aGVzZSBuZXcgZnVuY3Rpb25zOgogICAgdm9pZCBzdHJsY3B5dG91cHBlcihjaGFyICpkc3Qs IGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IGxlbik7CiAgICB2b2lkIHN0cmxjcHl0b2xvd2VyKGNo YXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3QgbGVuKTsKICAgIHZvaWQgc3RyY3B5dG91 cHBlcihjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYyk7CiAgICB2b2lkIHN0cmNweXRvbG93ZXIo Y2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMpOwogICAgdm9pZCBzdHJ0b3VwcGVyKGNoYXIgKnMp OwogICAgdm9pZCBzdHJ0b2xvd2VyKGNoYXIgKnMpOwoKU2V2ZXJhbCBkcml2ZXJzIGFyZSBiZWlu ZyBtb2RpZmllZCB0byBtYWtlIHVzZSBvZiB0aGUgZnVuY3Rpb25zIGFib3ZlLgpBbm90aGVyIGRy aXZlciB0aGF0IGFsc28gbWFrZXMgdXNlIG9mIHRoaXMgZnVuY3Rpb25hbGl0eSB3aWxsIGJlCnN1 Ym1pdHRlZCB1cHN0cmVhbSBzaG9ydGx5LCB3aGljaCBwcm9tcHRlZCB0aGlzIHdob2xlIGV4ZXJj aXNlLgoKVGhlIGNoYW5nZXMgbWFkZSBoZXJlIGhhdmUgYmVlbiBjb21waWxlLXRlc3RlZCwgYnV0 IG5vdCB0cmllZCBvdXQsIGR1ZQp0byBsYWNrIG9mIHJlcXVpcmVkIGhhcmR3YXJlLgoKQ2hhbmdl cyBzaW5jZSB2MjoKICAtIHVzZSBzdHJsY3B5KCkgc2VtYW50aWNzIG5vdCBzdHJuY3B5KCkgc2Vt YW50aWNzLCBpLmUuIGd1YXJhbnRlZQogICAgTlVMTCB0ZXJtaW5hdGlvbgogIC0gYXMgYSByZXN1 bHQgc3RybmNweXRvPHVwcGVyfGxvd2VyPiBhcmUgbm93IGNhbGxlZAogICAgc3RybGNweXRvPHVw cGVyfGxvd2VyPgogIC0gbWFrZSBmdW5jdGlvbnMgdm9pZAogIC0gdXNlIGxlbiA9PSAtMSAoU0la RV9NQVgpIGFzIG5vLWxpbWl0IGluZGljYXRvciByYXRoZXIgdGhlbiBsZW4gPT0gMAogIC0gY2hh bmdlIFBBVENIIDIvNyB0byBtYXRjaCBzdHJsY3B5KCkgc2VtYW50aWNzCiAgLSBjaGFuZ2UgUEFU Q0ggNC83IHRvIG1hdGNoIHN0cmxjcHkoKSBzZW1hbnRpY3MKCkNoYW5nZXMgc2luY2UgdjE6CiAg LSBleHBhbmRlZCBzdHJ0b2xvd2VyKCkgaW50byBhIGZhbWlseSBvZiBmdW5jdGlvbnMgdGhhdCBj b3ZlciB1c2UKICAgIGNhc2VzIHdoZW4gYSBsZW5ndGggYXJndW1lbnQgaXMgb3IgaXNuJ3QgcmVx dWlyZWQgYW5kIHRoYXQgc3VwcG9ydAogICAgY29weWluZyB0aGUgc3RyaW5nIGludG8gYSBuZXcg YnVmZmVyIG9yIGNoYW5naW5nIGl0IGluLXBsYWNlIAogIC0gY2hhbmdlZCB0aGUgZnVuY3Rpb24g c2VtYW50aWNzIHRvIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlCiAgICB0ZXJtaW5hdGluZyAnXDAn IGNoYXJhY3RlciBvZiB0aGUgbW9kaWZpZWQgc3RyaW5nCiAgLSBhZGRlZCBzdHJ0b3VwcGVyKCkg ZnVuY3Rpb25hbGl0eSBtaXJyb3JpbmcgdGhlIGFib3ZlCiAgLSBkcm9wcGVkIHRoZSBBQ1BJQ0Eg cGF0Y2gsIHNpbmNlIHRoYXQgY29kZSBpcyBPUyBpbmRlcGVuZGVudCBhbmQKICAgIGNhbid0IHJl bHkgb24gYSBMaW51eCBsaWJyYXJ5IGZ1bmN0aW9uIChzZWUgWzJdKQogIC0gQWRkZWQgdHdvIG5l dyBwYXRjaGVzIHJlcGxhY2luZyBzdHJ0b3VwcGVyKCkgaW1wbGVtZW50YXRpb25zCgpbMV0gaHR0 cHM6Ly9sa21sLm9yZy9sa21sLzIwMTYvNi8zMC83MjcKWzJdIGh0dHBzOi8vbGttbC5vcmcvbGtt bC8yMDE2LzcvMS85CgoKCk1hcmt1cyBNYXllciAoNyk6CiAgbGliOiBzdHJpbmc6IGFkZCBmdW5j dGlvbnMgdG8gY2FzZS1jb252ZXJ0IHN0cmluZ3MKICBkcm0vbm91dmVhdS9jb3JlOiBtYWtlIHVz ZSBvZiBuZXcgc3RybGNweXRvbG93ZXIoKSBmdW5jdGlvbgogIEFDUEkgLyBkZXZpY2Vfc3lzZnM6 IG1ha2UgdXNlIG9mIG5ldyBzdHJ0b2xvd2VyKCkgZnVuY3Rpb24KICBzdGFnaW5nOiBzcGVha3Vw OiByZXBsYWNlIHNwa19zdHJsd3IoKSB3aXRoIHN0cmxjcHl0b2xvd2VyKCkKICBpc2NzaS10YXJn ZXQ6IHJlcGxhY2UgaXNjc2lfaW5pdGlhdG9ybmFtZV90b2xvd2VyKCkgd2l0aCBzdHJ0b2xvd2Vy KCkKICBkcm0vbm91dmVhdS9maWZvL2drMTA0OiBtYWtlIHVzZSBvZiBuZXcgc3RyY3B5dG91cHBl cigpIGZ1bmN0aW9uCiAgcG93ZXJfc3VwcGx5OiBtYWtlIHVzZSBvZiBuZXcgc3RyY3B5dG91cHBl cigpIGZ1bmN0aW9uCgogZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jICAgICAgICAgICAgICAg ICAgICAgIHwgIDQgKy0tCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2NvcmUvZmlybXdh cmUuYyAgICAgfCAgOSArLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5l L2ZpZm8vZ2sxMDQuYyB8ICA1ICstLQogZHJpdmVycy9wb3dlci9wb3dlcl9zdXBwbHlfc3lzZnMu YyAgICAgICAgICAgICAgIHwgMTMgKysrLS0tLS0KIGRyaXZlcnMvc3RhZ2luZy9zcGVha3VwL2tv YmplY3RzLmMgICAgICAgICAgICAgICB8ICAzICstCiBkcml2ZXJzL3N0YWdpbmcvc3BlYWt1cC9t YWluLmMgICAgICAgICAgICAgICAgICAgfCAgMyArLQogZHJpdmVycy9zdGFnaW5nL3NwZWFrdXAv c3BlYWt1cC5oICAgICAgICAgICAgICAgIHwgIDEgLQogZHJpdmVycy9zdGFnaW5nL3NwZWFrdXAv dmFyaGFuZGxlcnMuYyAgICAgICAgICAgIHwgMTIgLS0tLS0tLQogZHJpdmVycy90YXJnZXQvaXNj c2kvaXNjc2lfdGFyZ2V0X25lZ28uYyAgICAgICAgIHwgMTcgKy0tLS0tLS0tLQogaW5jbHVkZS9s aW51eC9zdHJpbmcuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAgKysrKysrKysrKysr KysrKysrKysrKysrCiBsaWIvc3RyaW5nLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAzOCArKysrKysrKysrKysrKysrKysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCA5MCBp bnNlcnRpb25zKCspLCA1NSBkZWxldGlvbnMoLSkKCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTm91dmVhdSBtYWlsaW5nIGxpc3QKTm91 dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9ub3V2ZWF1Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932814AbcGHWoM (ORCPT ); Fri, 8 Jul 2016 18:44:12 -0400 Received: from mail-pa0-f51.google.com ([209.85.220.51]:32779 "EHLO mail-pa0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756297AbcGHWn6 (ORCPT ); Fri, 8 Jul 2016 18:43:58 -0400 From: Markus Mayer To: Andrew Morton , Al Viro , Rasmus Villemoes , Chris Metcalf , Kees Cook Cc: Markus Mayer , dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, linux-acpi@vger.kernel.org, speakup@linux-speakup.org, devel@driverdev.osuosl.org, linux-scsi@vger.kernel.org, target-devel@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 0/7] lib: string: add functions to case-convert strings Date: Fri, 8 Jul 2016 15:43:07 -0700 Message-Id: <1468017794-4818-1-git-send-email-mmayer@broadcom.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This series introduces a family of generic string case conversion functions. This kind of functionality is needed in several places in the kernel. Right now, everybody seems to be implementing their own copy of this functionality. Based on the discussion of the previous version of this series[1] and the use cases found in the kernel, it does look like having several flavours of case conversion functions is beneficial. The use cases fall into three categories: - copying a string and converting the case while specifying a maximum length to mimic strlcpy() - copying a string and converting the case without specifying a length to mimic strcpy() - converting the case of a string in-place (i.e. modifying the string that was passed in) Consequently, I am proposing these new functions: void strlcpytoupper(char *dst, const char *src, size_t len); void strlcpytolower(char *dst, const char *src, size_t len); void strcpytoupper(char *dst, const char *src); void strcpytolower(char *dst, const char *src); void strtoupper(char *s); void strtolower(char *s); Several drivers are being modified to make use of the functions above. Another driver that also makes use of this functionality will be submitted upstream shortly, which prompted this whole exercise. The changes made here have been compile-tested, but not tried out, due to lack of required hardware. Changes since v2: - use strlcpy() semantics not strncpy() semantics, i.e. guarantee NULL termination - as a result strncpyto are now called strlcpyto - make functions void - use len == -1 (SIZE_MAX) as no-limit indicator rather then len == 0 - change PATCH 2/7 to match strlcpy() semantics - change PATCH 4/7 to match strlcpy() semantics Changes since v1: - expanded strtolower() into a family of functions that cover use cases when a length argument is or isn't required and that support copying the string into a new buffer or changing it in-place - changed the function semantics to return a pointer to the terminating '\0' character of the modified string - added strtoupper() functionality mirroring the above - dropped the ACPICA patch, since that code is OS independent and can't rely on a Linux library function (see [2]) - Added two new patches replacing strtoupper() implementations [1] https://lkml.org/lkml/2016/6/30/727 [2] https://lkml.org/lkml/2016/7/1/9 Markus Mayer (7): lib: string: add functions to case-convert strings drm/nouveau/core: make use of new strlcpytolower() function ACPI / device_sysfs: make use of new strtolower() function staging: speakup: replace spk_strlwr() with strlcpytolower() iscsi-target: replace iscsi_initiatorname_tolower() with strtolower() drm/nouveau/fifo/gk104: make use of new strcpytoupper() function power_supply: make use of new strcpytoupper() function drivers/acpi/device_sysfs.c | 4 +-- drivers/gpu/drm/nouveau/nvkm/core/firmware.c | 9 +----- drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.c | 5 +-- drivers/power/power_supply_sysfs.c | 13 +++----- drivers/staging/speakup/kobjects.c | 3 +- drivers/staging/speakup/main.c | 3 +- drivers/staging/speakup/speakup.h | 1 - drivers/staging/speakup/varhandlers.c | 12 ------- drivers/target/iscsi/iscsi_target_nego.c | 17 +--------- include/linux/string.h | 40 ++++++++++++++++++++++++ lib/string.c | 38 ++++++++++++++++++++++ 11 files changed, 90 insertions(+), 55 deletions(-) -- 2.7.4