Commit 1b8a1d41 authored by Max Kellermann's avatar Max Kellermann

ArchiveLookup: return const strings

parent e132d10a
......@@ -29,7 +29,9 @@
#include <unistd.h>
#include <errno.h>
bool archive_lookup(char *pathname, char **archive, char **inpath, char **suffix)
bool
archive_lookup(char *pathname, const char **archive,
const char **inpath, const char **suffix)
{
char *pathdupe;
int len, idx;
......
......@@ -37,7 +37,9 @@
* inarchive pathname: Talco - Combat Circus/12 - A la pachenka.mp3
* and suffix: zip
*/
bool archive_lookup(char *pathname, char **archive, char **inpath, char **suffix);
bool
archive_lookup(char *pathname, const char **archive,
const char **inpath, const char **suffix);
#endif
......@@ -45,14 +45,14 @@ input_archive_open(const char *pathname,
Error &error)
{
const struct archive_plugin *arplug;
char *archive, *filename, *suffix, *pname;
struct input_stream *is;
if (!Path::IsAbsoluteFS(pathname))
return NULL;
pname = g_strdup(pathname);
char *pname = g_strdup(pathname);
// archive_lookup will modify pname when true is returned
const char *archive, *filename, *suffix;
if (!archive_lookup(pname, &archive, &filename, &suffix)) {
FormatDebug(archive_domain,
"not an archive, lookup %s failed", pname);
......
......@@ -23,7 +23,7 @@ public:
void
ArchiveLookupTest::TestArchiveLookup()
{
char *archive, *inpath, *suffix;
const char *archive, *inpath, *suffix;
char *path = strdup("");
CPPUNIT_ASSERT_EQUAL(false,
......@@ -48,16 +48,16 @@ ArchiveLookupTest::TestArchiveLookup()
path = strdup("Makefile/foo/bar");
CPPUNIT_ASSERT_EQUAL(true,
archive_lookup(path, &archive, &inpath, &suffix));
CPPUNIT_ASSERT_EQUAL(path, archive);
CPPUNIT_ASSERT_EQUAL((const char *)path, archive);
CPPUNIT_ASSERT_EQUAL(0, strcmp(archive, "Makefile"));
CPPUNIT_ASSERT_EQUAL(0, strcmp(inpath, "foo/bar"));
CPPUNIT_ASSERT_EQUAL((char *)nullptr, suffix);
CPPUNIT_ASSERT_EQUAL((const char *)nullptr, suffix);
g_free(path);
path = strdup("config.h/foo/bar");
CPPUNIT_ASSERT_EQUAL(true,
archive_lookup(path, &archive, &inpath, &suffix));
CPPUNIT_ASSERT_EQUAL(path, archive);
CPPUNIT_ASSERT_EQUAL((const char *)path, archive);
CPPUNIT_ASSERT_EQUAL(0, strcmp(archive, "config.h"));
CPPUNIT_ASSERT_EQUAL(0, strcmp(inpath, "foo/bar"));
CPPUNIT_ASSERT_EQUAL(0, strcmp(suffix, "h"));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment