mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-28 21:54:40 +03:00
Add a String::format() and use that in place of ksprintf() in the Kernel.
You're never gonna be right 100% of the time when guessing how much buffer space you need. This avoids having to make that type of decision in a bunch of cases. :^)
This commit is contained in:
parent
e9b948103d
commit
027d26cd5d
Notes:
sideshowbarker
2024-07-19 15:55:19 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/027d26cd5d6
@ -95,6 +95,8 @@ public:
|
||||
|
||||
ByteBuffer to_byte_buffer() const;
|
||||
|
||||
static String format(const char*, ...);
|
||||
|
||||
private:
|
||||
RetainPtr<StringImpl> m_impl;
|
||||
};
|
||||
|
@ -1,5 +1,7 @@
|
||||
#include "AKString.h"
|
||||
#include "StdLibExtras.h"
|
||||
#include "StringBuilder.h"
|
||||
#include <LibC/stdarg.h>
|
||||
|
||||
namespace AK {
|
||||
|
||||
@ -92,4 +94,14 @@ unsigned String::toUInt(bool& ok) const
|
||||
return value;
|
||||
}
|
||||
|
||||
String String::format(const char* fmt, ...)
|
||||
{
|
||||
StringBuilder builder;
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
builder.appendvf(fmt, ap);
|
||||
va_end(ap);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -41,13 +41,18 @@ void StringBuilder::append(char ch)
|
||||
m_length += 1;
|
||||
}
|
||||
|
||||
void StringBuilder::appendvf(const char* fmt, va_list ap)
|
||||
{
|
||||
printfInternal([this] (char*&, char ch) {
|
||||
append(ch);
|
||||
}, nullptr, fmt, ap);
|
||||
}
|
||||
|
||||
void StringBuilder::appendf(const char* fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
printfInternal([this] (char*&, char ch) {
|
||||
append(ch);
|
||||
}, nullptr, fmt, ap);
|
||||
appendvf(fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
#include "AKString.h"
|
||||
#include "Vector.h"
|
||||
#include <LibC/stdarg.h>
|
||||
|
||||
namespace AK {
|
||||
|
||||
@ -14,6 +15,7 @@ public:
|
||||
void append(char);
|
||||
void append(const char*, size_t);
|
||||
void appendf(const char*, ...);
|
||||
void appendvf(const char*, va_list);
|
||||
|
||||
String build();
|
||||
ByteBuffer to_byte_buffer();
|
||||
|
@ -205,15 +205,11 @@ char* ELFLoader::symbol_ptr(const char* name)
|
||||
bool ELFLoader::allocate_section(LinearAddress laddr, size_t size, size_t alignment, bool is_readable, bool is_writable)
|
||||
{
|
||||
ASSERT(alloc_section_hook);
|
||||
char namebuf[16];
|
||||
ksprintf(namebuf, "elf-alloc-%s%s", is_readable ? "r" : "", is_writable ? "w" : "");
|
||||
return alloc_section_hook(laddr, size, alignment, is_readable, is_writable, namebuf);
|
||||
return alloc_section_hook(laddr, size, alignment, is_readable, is_writable, String::format("elf-alloc-%s%s", is_readable ? "r" : "", is_writable ? "w" : ""));
|
||||
}
|
||||
|
||||
bool ELFLoader::map_section(LinearAddress laddr, size_t size, size_t alignment, size_t offset_in_image, bool is_readable, bool is_writable)
|
||||
{
|
||||
ASSERT(alloc_section_hook);
|
||||
char namebuf[16];
|
||||
ksprintf(namebuf, "elf-map-%s%s", is_readable ? "r" : "", is_writable ? "w" : "");
|
||||
return map_section_hook(laddr, size, alignment, offset_in_image, is_readable, is_writable, namebuf);
|
||||
return map_section_hook(laddr, size, alignment, offset_in_image, is_readable, is_writable, String::format("elf-map-%s%s", is_readable ? "r" : "", is_writable ? "w" : ""));
|
||||
}
|
||||
|
@ -292,16 +292,10 @@ String FileDescriptor::absolute_path()
|
||||
Stopwatch sw("absolute_path");
|
||||
if (is_tty())
|
||||
return tty()->tty_name();
|
||||
if (is_fifo()) {
|
||||
char buf[32];
|
||||
ksprintf(buf, "fifo:%x", m_fifo.ptr());
|
||||
return buf;
|
||||
}
|
||||
if (is_character_device()) {
|
||||
char buf[128];
|
||||
ksprintf(buf, "device:%u,%u (%s)", m_device->major(), m_device->minor(), m_device->class_name());
|
||||
return buf;
|
||||
}
|
||||
if (is_fifo())
|
||||
return String::format("fifo:%x", m_fifo.ptr());
|
||||
if (is_character_device())
|
||||
return String::format("device:%u,%u (%s)", m_device->major(), m_device->minor(), m_device->class_name());
|
||||
ASSERT(m_inode);
|
||||
return VFS::the().absolute_path(*m_inode);
|
||||
}
|
||||
|
@ -14,9 +14,7 @@ MasterPTY::~MasterPTY()
|
||||
|
||||
String MasterPTY::pts_name() const
|
||||
{
|
||||
char buffer[32];
|
||||
ksprintf(buffer, "/dev/pts/%u", m_index);
|
||||
return buffer;
|
||||
return String::format("/dev/pts/%u", m_index);
|
||||
}
|
||||
|
||||
ssize_t MasterPTY::read(Process&, byte* buffer, size_t size)
|
||||
|
@ -153,9 +153,7 @@ ByteBuffer procfs$pid_cwd(Process& process)
|
||||
void ProcFS::add_process(Process& process)
|
||||
{
|
||||
InterruptDisabler disabler;
|
||||
char buf[16];
|
||||
ksprintf(buf, "%d", process.pid());
|
||||
auto dir = add_file(create_directory(buf));
|
||||
auto dir = add_file(create_directory(String::format("%d", process.pid())));
|
||||
m_pid2inode.set(process.pid(), dir.index());
|
||||
add_file(create_generated_file("vm", [&process] (SynthFSInode&) { return procfs$pid_vm(process); }), dir.index());
|
||||
add_file(create_generated_file("vmo", [&process] (SynthFSInode&) { return procfs$pid_vmo(process); }), dir.index());
|
||||
|
@ -19,9 +19,7 @@ SlavePTY::~SlavePTY()
|
||||
|
||||
String SlavePTY::tty_name() const
|
||||
{
|
||||
char buffer[32];
|
||||
ksprintf(buffer, "/dev/pts/%u", m_index);
|
||||
return buffer;
|
||||
return String::format("/dev/pts/%u", m_index);
|
||||
}
|
||||
|
||||
void SlavePTY::on_master_write(const byte* buffer, size_t size)
|
||||
|
@ -508,9 +508,7 @@ void VirtualConsole::on_tty_write(const byte* data, size_t size)
|
||||
|
||||
String VirtualConsole::tty_name() const
|
||||
{
|
||||
char buf[16];
|
||||
ksprintf(buf, "/dev/tty%u", m_index);
|
||||
return String(buf);
|
||||
return String::format("/dev/tty%u", m_index);
|
||||
}
|
||||
|
||||
void VirtualConsole::set_vga_start_row(word row)
|
||||
|
@ -191,9 +191,12 @@ void WSWindowManager::paint_window_frame(WSWindow& window)
|
||||
m_back_painter->draw_text(titleBarTitleRect, window.title(), Painter::TextAlignment::CenterLeft, title_color);
|
||||
|
||||
Color metadata_color(96, 96, 96);
|
||||
char buffer[64];
|
||||
ksprintf(buffer, "%d:%d", window.pid(), window.window_id());
|
||||
m_back_painter->draw_text(titleBarTitleRect, buffer, Painter::TextAlignment::CenterRight, metadata_color);
|
||||
m_back_painter->draw_text(
|
||||
titleBarTitleRect,
|
||||
String::format("%d:%d", window.pid(), window.window_id()),
|
||||
Painter::TextAlignment::CenterRight,
|
||||
metadata_color
|
||||
);
|
||||
}
|
||||
|
||||
void WSWindowManager::add_window(WSWindow& window)
|
||||
|
Loading…
Reference in New Issue
Block a user