# [PATCH v2] CodingGuidelines: use octal escapes, not hex

4 messages from 2023-06-14 to 2023-06-14. Participants: Jonathan Tan, Junio C Hamano.
Thread: https://gitlist.dev/t/59858

## Jonathan Tan, 2023-06-14 00:15

Subject: [PATCH v2] CodingGuidelines: use octal escapes, not hex
Message-ID: <20230614001558.277755-1-jonathantanmy@google.com>
URL: https://gitlist.dev/e/20230614001558.277755-1-jonathantanmy%40google.com

```
Extend the shell-scripting section of CodingGuidelines to suggest octal
escape sequences (e.g. "\302\242") over hexadecimal (e.g. "\xc2\xa2")
since the latter can be a source of portability problems.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
---
I've used Eric's suggestion for the commit message and limited the scope
of the documentation change to printf.

Version 1 was here:
https://lore.kernel.org/git/20230613172927.19019-1-jonathantanmy@google.com/
---
 Documentation/CodingGuidelines | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines
index 003393ed16..30ac7d2d3f 100644
--- a/Documentation/CodingGuidelines
+++ b/Documentation/CodingGuidelines
@@ -188,6 +188,10 @@ For shell scripts specifically (not exhaustive):
    hopefully nobody starts using "local" before they are reimplemented
    in C ;-)
 
+ - Use octal escape sequences (e.g. "\302\242"), not hexadecimal (e.g.
+   "\xc2\xa2"), since the latter is not portable across commands like
+   "printf".
+
 
 For C programs:
 
-- 
2.41.0.162.gfafddb0af9-goog


```

## Junio C Hamano, 2023-06-14 00:28

Subject: Re: [PATCH v2] CodingGuidelines: use octal escapes, not hex
Message-ID: <xmqqy1km28g9.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqqy1km28g9.fsf%40gitster.g
In-Reply-To: <20230614001558.277755-1-jonathantanmy@google.com>

```
Jonathan Tan <jonathantanmy@google.com> writes:

> Extend the shell-scripting section of CodingGuidelines to suggest octal
> escape sequences (e.g. "\302\242") over hexadecimal (e.g. "\xc2\xa2")
> since the latter can be a source of portability problems.
>
> Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
> ---
> I've used Eric's suggestion for the commit message and limited the scope
> of the documentation change to printf.
>
> Version 1 was here:
> https://lore.kernel.org/git/20230613172927.19019-1-jonathantanmy@google.com/
> ---
>  Documentation/CodingGuidelines | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines
> index 003393ed16..30ac7d2d3f 100644
> --- a/Documentation/CodingGuidelines
> +++ b/Documentation/CodingGuidelines
> @@ -188,6 +188,10 @@ For shell scripts specifically (not exhaustive):
>     hopefully nobody starts using "local" before they are reimplemented
>     in C ;-)
>  
> + - Use octal escape sequences (e.g. "\302\242"), not hexadecimal (e.g.
> +   "\xc2\xa2"), since the latter is not portable across commands like
> +   "printf".

I'd say

    - Use octal ... not hex..., in printf format string.

not "commands LIKE".

Thanks.


```

## Jonathan Tan, 2023-06-14 21:31

Subject: [PATCH v3] CodingGuidelines: use octal escapes, not hex
Message-ID: <20230614213145.475607-1-jonathantanmy@google.com>
URL: https://gitlist.dev/e/20230614213145.475607-1-jonathantanmy%40google.com
In-Reply-To: <20230614001558.277755-1-jonathantanmy@google.com>

```
Extend the shell-scripting section of CodingGuidelines to suggest octal
escape sequences (e.g. "\302\242") over hexadecimal (e.g. "\xc2\xa2")
since the latter can be a source of portability problems.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
---
Changes in v3: Used Junio's suggestion [1].

[1] https://lore.kernel.org/git/xmqqy1km28g9.fsf@gitster.g/
---
Range-diff against v2:
1:  c775a0db22 ! 1:  0b7d3ed8f5 CodingGuidelines: use octal escapes, not hex
    @@ Commit message
     
         Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
         ---
    -    I've used Eric's suggestion for the commit message and limited the scope
    -    of the documentation change to printf.
    +    Changes in v3: Used Junio's suggestion [1].
     
    -    Version 1 was here:
    -    https://lore.kernel.org/git/20230613172927.19019-1-jonathantanmy@google.com/
    +    [1] https://lore.kernel.org/git/xmqqy1km28g9.fsf@gitster.g/
     
      ## Documentation/CodingGuidelines ##
     @@ Documentation/CodingGuidelines: For shell scripts specifically (not exhaustive):
    @@ Documentation/CodingGuidelines: For shell scripts specifically (not exhaustive):
         in C ;-)
      
     + - Use octal escape sequences (e.g. "\302\242"), not hexadecimal (e.g.
    -+   "\xc2\xa2"), since the latter is not portable across commands like
    -+   "printf".
    ++   "\xc2\xa2") in printf format strings, since hexadecimal escape
    ++   sequences are not portable.
     +
      
      For C programs:

 Documentation/CodingGuidelines | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines
index 003393ed16..39ef53c237 100644
--- a/Documentation/CodingGuidelines
+++ b/Documentation/CodingGuidelines
@@ -188,6 +188,10 @@ For shell scripts specifically (not exhaustive):
    hopefully nobody starts using "local" before they are reimplemented
    in C ;-)
 
+ - Use octal escape sequences (e.g. "\302\242"), not hexadecimal (e.g.
+   "\xc2\xa2") in printf format strings, since hexadecimal escape
+   sequences are not portable.
+
 
 For C programs:
 
-- 
2.41.0.162.gfafddb0af9-goog


```

## Junio C Hamano, 2023-06-14 21:54

Subject: Re: [PATCH v3] CodingGuidelines: use octal escapes, not hex
Message-ID: <xmqqo7lhwvyt.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqqo7lhwvyt.fsf%40gitster.g
In-Reply-To: <20230614213145.475607-1-jonathantanmy@google.com>

```
Jonathan Tan <jonathantanmy@google.com> writes:

> Extend the shell-scripting section of CodingGuidelines to suggest octal
> escape sequences (e.g. "\302\242") over hexadecimal (e.g. "\xc2\xa2")
> since the latter can be a source of portability problems.

Sounds good.  On a typical GNU system, /usr/bin/printf as well as
printf built into bash groks "\x<hex>" escapes in its format string,
but we cannot depend on it because POSIX does not require support
for "\x<hex>", and printf built into dash indeed does not.  It is a
good idea to stress that this is specifically about the format
string (in other words, nothing magical happens when using octal or
hex escapes in say "printf '%s\n' '\302\242'").

> + - Use octal escape sequences (e.g. "\302\242"), not hexadecimal (e.g.
> +   "\xc2\xa2") in printf format strings, since hexadecimal escape
> +   sequences are not portable.

Will queue.  Thanks.

```
