mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
Account for octal marker in %#o format
This commit is contained in:
parent
90dffec958
commit
2f39e44a84
@ -206,6 +206,7 @@ tests := \
|
||||
tst-printf-bz25691 \
|
||||
tst-printf-fp-free \
|
||||
tst-printf-fp-leak \
|
||||
tst-printf-oct \
|
||||
tst-printf-round \
|
||||
tst-printfsz \
|
||||
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. */
|
||||
width -= 2;
|
||||
|
||||
if (octal_marker)
|
||||
--width;
|
||||
|
||||
if (is_negative || showsign || space)
|
||||
--width;
|
||||
|
||||
@ -257,6 +260,9 @@ LABEL (unsigned_number): /* Unsigned number of base BASE. */
|
||||
width -= 2;
|
||||
}
|
||||
|
||||
if (octal_marker)
|
||||
--width;
|
||||
|
||||
width -= workend - string + prec;
|
||||
|
||||
Xprintf_buffer_pad (buf, L_('0'), prec);
|
||||
|
Loading…
Reference in New Issue
Block a user