From 301fe23825759bbb4602776483554f6cf95cb8a6 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Tue, 4 Jun 2024 01:07:18 +0100 Subject: Remove fscanf and fixed buffers from AssetFactory::parseX11RGB --- assetFactory/assetFactory.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/assetFactory/assetFactory.cpp b/assetFactory/assetFactory.cpp index db31ca8..fe4e0be 100644 --- a/assetFactory/assetFactory.cpp +++ b/assetFactory/assetFactory.cpp @@ -11,6 +11,7 @@ #include "resource.h" #include "saxParse-persistence.h" #include "texturePacker.h" +#include #include AssetFactory::AssetFactory() : @@ -45,14 +46,17 @@ AssetFactory::loadAll(const std::filesystem::path & root) AssetFactory::Colours AssetFactory::parseX11RGB(const char * path) { - filesystem::FileStar rgb {path, "r"}; + std::ifstream rgb {path}; Colours out; - Colour colour; - char inname[BUFSIZ]; - while (fscanf(rgb, "%f %f %f %[^\n\r]s", &colour.r, &colour.g, &colour.b, inname) == 4) { - std::string name {inname}; - normalizeColourName(name); - out.emplace(std::move(name), colour / 255.f); + while (rgb.good()) { + Colour colour; + std::string name; + rgb >> colour.r >> colour.g >> colour.b; + std::getline(rgb, name); + if (rgb.good()) { + normalizeColourName(name); + out.emplace(std::move(name), colour / 255.F); + } } return out; } -- cgit v1.2.3