From b995c53b914269093ac66b50762e19641cc2ebd4 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Sun, 11 Dec 2016 10:30:22 -0500 Subject: [PATCH] Changed a number of declarations in Imgtool to use std::string instead of 'const char *' --- src/tools/imgtool/imgtool.cpp | 27 ++++++++++++++------------- src/tools/imgtool/imgtool.h | 16 ++++++++-------- src/tools/imgtool/stream.cpp | 27 +++++++++++---------------- src/tools/imgtool/stream.h | 5 ++--- 4 files changed, 35 insertions(+), 40 deletions(-) diff --git a/src/tools/imgtool/imgtool.cpp b/src/tools/imgtool/imgtool.cpp index 322dbe8175d..9afce54492d 100644 --- a/src/tools/imgtool/imgtool.cpp +++ b/src/tools/imgtool/imgtool.cpp @@ -881,7 +881,7 @@ char *imgtool_temp_str(void) ***************************************************************************/ -imgtoolerr_t imgtool::image::internal_open(const imgtool_module *module, const char *fname, +imgtoolerr_t imgtool::image::internal_open(const imgtool_module *module, const std::string &filename, int read_or_write, util::option_resolution *createopts, imgtool::image::ptr &outimg) { imgtoolerr_t err; @@ -908,7 +908,7 @@ imgtoolerr_t imgtool::image::internal_open(const imgtool_module *module, const c } // open the stream - stream = imgtool::stream::open(fname, read_or_write); + stream = imgtool::stream::open(filename, read_or_write); if (!stream) { err = (imgtoolerr_t)(IMGTOOLERR_FILENOTFOUND | IMGTOOLERR_SRC_IMAGEFILE); @@ -964,7 +964,7 @@ done: // open - open an image //------------------------------------------------- -imgtoolerr_t imgtool::image::open(const imgtool_module *module, const char *filename, int read_or_write, ptr &outimg) +imgtoolerr_t imgtool::image::open(const imgtool_module *module, const std::string &filename, int read_or_write, ptr &outimg) { read_or_write = read_or_write ? OSD_FOPEN_RW : OSD_FOPEN_READ; return internal_open(module, filename, read_or_write, nullptr, outimg); @@ -975,7 +975,7 @@ imgtoolerr_t imgtool::image::open(const imgtool_module *module, const char *file // imgtool::image::open_byname - open an image //------------------------------------------------- -imgtoolerr_t imgtool::image::open(const std::string &modulename, const char *filename, int read_or_write, ptr &outimg) +imgtoolerr_t imgtool::image::open(const std::string &modulename, const std::string &filename, int read_or_write, ptr &outimg) { const imgtool_module *module; @@ -1016,7 +1016,7 @@ imgtool::image::~image() // create - creates an image //------------------------------------------------- -imgtoolerr_t imgtool::image::create(const imgtool_module *module, const char *fname, +imgtoolerr_t imgtool::image::create(const imgtool_module *module, const std::string &filename, util::option_resolution *opts, ptr &image) { std::unique_ptr alloc_resolution; @@ -1033,7 +1033,7 @@ imgtoolerr_t imgtool::image::create(const imgtool_module *module, const char *fn opts = alloc_resolution.get(); } - return internal_open(module, fname, OSD_FOPEN_RW_CREATE, opts, image); + return internal_open(module, filename, OSD_FOPEN_RW_CREATE, opts, image); } @@ -1041,7 +1041,7 @@ imgtoolerr_t imgtool::image::create(const imgtool_module *module, const char *fn // create - creates an image //------------------------------------------------- -imgtoolerr_t imgtool::image::create(const std::string &modulename, const char *fname, util::option_resolution *opts, ptr &image) +imgtoolerr_t imgtool::image::create(const std::string &modulename, const std::string &filename, util::option_resolution *opts, ptr &image) { const imgtool_module *module; @@ -1049,7 +1049,7 @@ imgtoolerr_t imgtool::image::create(const std::string &modulename, const char *f if (!module) return (imgtoolerr_t)(IMGTOOLERR_MODULENOTFOUND | IMGTOOLERR_SRC_MODULE); - return create(module, fname, opts, image); + return create(module, filename, opts, image); } @@ -1057,11 +1057,11 @@ imgtoolerr_t imgtool::image::create(const std::string &modulename, const char *f // create - creates an image //------------------------------------------------- -imgtoolerr_t imgtool::image::create(const imgtool_module *module, const char *fname, +imgtoolerr_t imgtool::image::create(const imgtool_module *module, const std::string &filename, util::option_resolution *opts) { std::unique_ptr image; - return create(module, fname, opts, image); + return create(module, filename, opts, image); } @@ -1069,10 +1069,10 @@ imgtoolerr_t imgtool::image::create(const imgtool_module *module, const char *fn // create - creates an image //------------------------------------------------- -imgtoolerr_t imgtool::image::create(const std::string &modulename, const char *fname, util::option_resolution *opts) +imgtoolerr_t imgtool::image::create(const std::string &modulename, const std::string &filename, util::option_resolution *opts) { std::unique_ptr image; - return create(modulename, fname, opts, image); + return create(modulename, filename, opts, image); } @@ -2416,8 +2416,9 @@ imgtool::directory::directory(imgtool::partition &partition) // enumerating files on a partition //------------------------------------------------- -imgtoolerr_t imgtool::directory::open(imgtool::partition &partition, const char *path, imgtool::directory::ptr &outenum) +imgtoolerr_t imgtool::directory::open(imgtool::partition &partition, const std::string &path_string, imgtool::directory::ptr &outenum) { + const char *path = path_string.c_str(); imgtoolerr_t err = (imgtoolerr_t)IMGTOOLERR_SUCCESS; imgtool::directory::ptr enumeration; char *alloc_path = nullptr; diff --git a/src/tools/imgtool/imgtool.h b/src/tools/imgtool/imgtool.h index fb1b6023fff..f7a6f50993a 100644 --- a/src/tools/imgtool/imgtool.h +++ b/src/tools/imgtool/imgtool.h @@ -98,12 +98,12 @@ namespace imgtool ~image(); static imgtoolerr_t identify_file(const char *filename, imgtool_module **modules, size_t count); - static imgtoolerr_t open(const imgtool_module *module, const char *filename, int read_or_write, ptr &outimg); - static imgtoolerr_t open(const std::string &modulename, const char *filename, int read_or_write, ptr &outimg); - static imgtoolerr_t create(const imgtool_module *module, const char *fname, util::option_resolution *opts, ptr &image); - static imgtoolerr_t create(const std::string &modulename, const char *fname, util::option_resolution *opts, ptr &image); - static imgtoolerr_t create(const imgtool_module *module, const char *fname, util::option_resolution *opts); - static imgtoolerr_t create(const std::string &modulename, const char *fname, util::option_resolution *opts); + static imgtoolerr_t open(const imgtool_module *module, const std::string &filename, int read_or_write, ptr &outimg); + static imgtoolerr_t open(const std::string &modulename, const std::string &filename, int read_or_write, ptr &outimg); + static imgtoolerr_t create(const imgtool_module *module, const std::string &filename, util::option_resolution *opts, ptr &image); + static imgtoolerr_t create(const std::string &modulename, const std::string &filename, util::option_resolution *opts, ptr &image); + static imgtoolerr_t create(const imgtool_module *module, const std::string &filename, util::option_resolution *opts); + static imgtoolerr_t create(const std::string &modulename, const std::string &filename, util::option_resolution *opts); static uint64_t rand(); std::string info(); @@ -129,7 +129,7 @@ namespace imgtool // better C++ adoption (e.g. - std::unique_ptr<>, std:move() etc) bool m_okay_to_close; - static imgtoolerr_t internal_open(const imgtool_module *module, const char *fname, + static imgtoolerr_t internal_open(const imgtool_module *module, const std::string &filename, int read_or_write, util::option_resolution *createopts, imgtool::image::ptr &outimg); }; } @@ -244,7 +244,7 @@ namespace imgtool ~directory(); // methods - static imgtoolerr_t open(imgtool::partition &partition, const char *path, ptr &outenum); + static imgtoolerr_t open(imgtool::partition &partition, const std::string &path, ptr &outenum); imgtoolerr_t get_next(imgtool_dirent &ent); // accessors diff --git a/src/tools/imgtool/stream.cpp b/src/tools/imgtool/stream.cpp index d5d0ee120b5..0bcca455010 100644 --- a/src/tools/imgtool/stream.cpp +++ b/src/tools/imgtool/stream.cpp @@ -24,7 +24,6 @@ imgtool::stream::stream(bool wp) : imgtype(IMG_FILE) , write_protect(wp) - , name(nullptr) , position(0) , filesize(0) , file() @@ -40,7 +39,6 @@ imgtool::stream::stream(bool wp) imgtool::stream::stream(bool wp, util::core_file::ptr &&f) : imgtype(IMG_FILE) , write_protect(wp) - , name(nullptr) , position(0) , filesize(f->size()) , file(std::move(f)) @@ -56,7 +54,6 @@ imgtool::stream::stream(bool wp, util::core_file::ptr &&f) imgtool::stream::stream(bool wp, std::size_t size) : imgtype(IMG_MEM) , write_protect(wp) - , name(nullptr) , position(0) , filesize(size) , file() @@ -72,7 +69,6 @@ imgtool::stream::stream(bool wp, std::size_t size) imgtool::stream::stream(bool wp, std::size_t size, void *buf) : imgtype(IMG_MEM) , write_protect(wp) - , name(nullptr) , position(0) , filesize(size) , file() @@ -96,13 +92,13 @@ imgtool::stream::~stream() // open_zip //------------------------------------------------- -imgtool::stream::ptr imgtool::stream::open_zip(const char *zipname, const char *subname, int read_or_write) +imgtool::stream::ptr imgtool::stream::open_zip(const std::string &zipname, const char *subname, int read_or_write) { if (read_or_write) return imgtool::stream::ptr(); /* check to see if the file exists */ - FILE *f = fopen(zipname, "r"); + FILE *f = fopen(zipname.c_str(), "r"); if (!f) return imgtool::stream::ptr(); fclose(f); @@ -139,7 +135,7 @@ imgtool::stream::ptr imgtool::stream::open_zip(const char *zipname, const char * // open //------------------------------------------------- -imgtool::stream::ptr imgtool::stream::open(const char *fname, int read_or_write) +imgtool::stream::ptr imgtool::stream::open(const std::string &filename, int read_or_write) { static const uint32_t write_modes[] = { @@ -151,22 +147,22 @@ imgtool::stream::ptr imgtool::stream::open(const char *fname, int read_or_write) imgtool::stream::ptr s; char c; - /* maybe we are just a ZIP? */ - const char *ext = strrchr(fname, '.'); - if (ext && !core_stricmp(ext, ".zip")) - return open_zip(fname, nullptr, read_or_write); + // maybe we are just a ZIP? + std::string ext = core_filename_extract_extension(filename); + if (!core_stricmp(ext.c_str(), ".zip")) + return open_zip(filename, nullptr, read_or_write); util::core_file::ptr f = nullptr; - auto const filerr = util::core_file::open(fname, write_modes[read_or_write], f); + auto const filerr = util::core_file::open(filename, write_modes[read_or_write], f); if (filerr != osd_file::error::NONE) { if (!read_or_write) { - int const len = strlen(fname); + int const len = filename.size(); /* can't open the file; try opening ZIP files with other names */ std::vector buf(len + 1); - strcpy(&buf[0], fname); + strcpy(&buf[0], filename.c_str()); for (int i = len-1; !s && (i >= 0); i--) { @@ -189,8 +185,7 @@ imgtool::stream::ptr imgtool::stream::open(const char *fname, int read_or_write) imgtool::stream::ptr imgfile(new imgtool::stream(read_or_write ? false : true, std::move(f))); - /* Normal file */ - imgfile->name = fname; + // normal file return imgfile; } diff --git a/src/tools/imgtool/stream.h b/src/tools/imgtool/stream.h index 9a99d96fcbc..4d968ca9551 100644 --- a/src/tools/imgtool/stream.h +++ b/src/tools/imgtool/stream.h @@ -23,7 +23,7 @@ namespace imgtool ~stream(); - static imgtool::stream::ptr open(const char *fname, int read_or_write); /* similar params to mame_fopen */ + static imgtool::stream::ptr open(const std::string &filename, int read_or_write); /* similar params to mame_fopen */ static imgtool::stream::ptr open_write_stream(int filesize); static imgtool::stream::ptr open_mem(void *buf, size_t sz); @@ -61,7 +61,6 @@ namespace imgtool imgtype_t imgtype; bool write_protect; - const char *name; // needed for clear std::uint64_t position; std::uint64_t filesize; @@ -75,7 +74,7 @@ namespace imgtool stream(bool wp, std::size_t size, void *buf); // private methods - static stream::ptr open_zip(const char *zipname, const char *subname, int read_or_write); + static stream::ptr open_zip(const std::string &zipname, const char *subname, int read_or_write); }; }