mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Account for octal marker in %#o format
This commit is contained in:
@ -206,6 +206,7 @@ tests := \
|
|||||||
tst-printf-bz25691 \
|
tst-printf-bz25691 \
|
||||||
tst-printf-fp-free \
|
tst-printf-fp-free \
|
||||||
tst-printf-fp-leak \
|
tst-printf-fp-leak \
|
||||||
|
tst-printf-oct \
|
||||||
tst-printf-round \
|
tst-printf-round \
|
||||||
tst-printfsz \
|
tst-printfsz \
|
||||||
tst-put-error \
|
tst-put-error \
|
||||||
|
49
stdio-common/tst-printf-oct.c
Normal file
49
stdio-common/tst-printf-oct.c
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/* Test printf width padding with octal format
|
||||||
|
Copyright (C) 2023 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with the GNU C Library; if not, see
|
||||||
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <support/check.h>
|
||||||
|
#include <support/support.h>
|
||||||
|
|
||||||
|
static int
|
||||||
|
do_test (void)
|
||||||
|
{
|
||||||
|
char buf[80];
|
||||||
|
|
||||||
|
sprintf (buf, "%-7o", 123);
|
||||||
|
TEST_COMPARE_STRING (buf, "173 ");
|
||||||
|
|
||||||
|
sprintf (buf, "%#-7o", 123);
|
||||||
|
TEST_COMPARE_STRING (buf, "0173 ");
|
||||||
|
|
||||||
|
sprintf (buf, "%7o", 123);
|
||||||
|
TEST_COMPARE_STRING (buf, " 173");
|
||||||
|
|
||||||
|
sprintf (buf, "%#7o", 123);
|
||||||
|
TEST_COMPARE_STRING (buf, " 0173");
|
||||||
|
|
||||||
|
sprintf (buf, "%07o", 123);
|
||||||
|
TEST_COMPARE_STRING (buf, "0000173");
|
||||||
|
|
||||||
|
sprintf (buf, "%#07o", 123);
|
||||||
|
TEST_COMPARE_STRING (buf, "0000173");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#include <support/test-driver.c>
|
@ -196,6 +196,9 @@ LABEL (unsigned_number): /* Unsigned number of base BASE. */
|
|||||||
/* Account for 0X, 0x, 0B or 0b hex or binary marker. */
|
/* Account for 0X, 0x, 0B or 0b hex or binary marker. */
|
||||||
width -= 2;
|
width -= 2;
|
||||||
|
|
||||||
|
if (octal_marker)
|
||||||
|
--width;
|
||||||
|
|
||||||
if (is_negative || showsign || space)
|
if (is_negative || showsign || space)
|
||||||
--width;
|
--width;
|
||||||
|
|
||||||
@ -257,6 +260,9 @@ LABEL (unsigned_number): /* Unsigned number of base BASE. */
|
|||||||
width -= 2;
|
width -= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (octal_marker)
|
||||||
|
--width;
|
||||||
|
|
||||||
width -= workend - string + prec;
|
width -= workend - string + prec;
|
||||||
|
|
||||||
Xprintf_buffer_pad (buf, L_('0'), prec);
|
Xprintf_buffer_pad (buf, L_('0'), prec);
|
||||||
|
Reference in New Issue
Block a user