[CRIU] [PATCH] pie: fix format string

Kir Kolyshkin kir at virtuozzo.com
Mon Feb 22 16:59:05 PST 2016



On 02/22/2016 04:34 PM, Kir Kolyshkin wrote:
> On 02/21/2016 08:23 AM, Tycho Andersen wrote:
>> On some architectures, the result of sizeof() is an int, on others it 
>> is a
>> long. Let's just always cast it to a long to avoid build failures
>>
>> Reported-by: Andrew Vagin <avagin at virtuozzo.com>
>> Signed-off-by: Tycho Andersen <tycho.andersen at canonical.com>
>> CC: Andrew Vagin <avagin at virtuozzo.com>
>> ---
>>   criu/pie/parasite.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/criu/pie/parasite.c b/criu/pie/parasite.c
>> index 2466665..035a5fa 100644
>> --- a/criu/pie/parasite.c
>> +++ b/criu/pie/parasite.c
>> @@ -521,7 +521,7 @@ static int __parasite_daemon_reply_ack(unsigned 
>> int cmd, int err)
>>       m = ctl_msg_ack(cmd, err);
>>       ret = sys_sendto(tsock, &m, sizeof(m), 0, NULL, 0);
>>       if (ret != sizeof(m)) {
>> -        pr_err("Sent only %d bytes while %lu expected\n", ret, 
>> sizeof(m));
>> +        pr_err("Sent only %d bytes while %lu expected\n", ret, 
>> (unsigned long) sizeof(m));
>>           return -1;
>>       }
>
> Maybe it's easier to just add support for z prefix to pie's printf?
> Say, something like this:
>
> diff --git a/criu/pie/log-simple.c b/criu/pie/log-simple.c
> index 1cc877d..18657b1 100644
> --- a/criu/pie/log-simple.c
> +++ b/criu/pie/log-simple.c
> @@ -225,6 +225,9 @@ void sbuf_printf(struct simple_buf *b, const char 
> *format, va_list args)
>                         s++;
>                         if (*s == 'l')
>                                 s++;
> +               } else if (*s == 'z') {
> +                       along = (sizeof(size_t) == sizeof(long));
> +                       s++;
>                 }
>
>                 switch (*s) {

Or this:

diff --git a/criu/pie/log-simple.c b/criu/pie/log-simple.c
index 1cc877d..c33cc1b 100644
--- a/criu/pie/log-simple.c
+++ b/criu/pie/log-simple.c
@@ -225,6 +225,9 @@ void sbuf_printf(struct simple_buf *b, const char 
*format, va_list args)
                         s++;
                         if (*s == 'l')
                                 s++;
+               } else if (*s == 'z') {
+                       along = (sizeof(size_t) > sizeof(int));
+                       s++;
                 }

                 switch (*s) {



More information about the CRIU mailing list