prf.c: implement the "hh" length modifier

For completeness.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
This commit is contained in:
Nicolas Pitre 2019-06-17 21:54:28 -04:00 committed by Anas Nashif
commit e1d8c1f8ca

View file

@ -548,6 +548,7 @@ int z_prf(int (*func)(), void *dest, const char *format, va_list vargs)
* This implementation only supports the following
* length modifiers:
* h: short
* hh: char
* l: long
* ll: long long
* z: size_t or ssize_t
@ -560,6 +561,9 @@ int z_prf(int (*func)(), void *dest, const char *format, va_list vargs)
i == 'l' && c == 'l') {
i = 'L';
c = *format++;
} else if (i == 'h' && c == 'h') {
i = 'H';
c = *format++;
}
}
@ -588,6 +592,7 @@ int z_prf(int (*func)(), void *dest, const char *format, va_list vargs)
val = va_arg(vargs, ssize_t);
break;
case 'h':
case 'H':
default:
val = va_arg(vargs, int);
break;
@ -643,6 +648,9 @@ int z_prf(int (*func)(), void *dest, const char *format, va_list vargs)
case 'h':
*va_arg(vargs, short *) = count;
break;
case 'H':
*va_arg(vargs, char *) = count;
break;
case 'l':
*va_arg(vargs, long *) = count;
break;
@ -705,6 +713,7 @@ int z_prf(int (*func)(), void *dest, const char *format, va_list vargs)
val = va_arg(vargs, size_t);
break;
case 'h':
case 'H':
default:
val = va_arg(vargs, unsigned int);
break;