Skip to content

Commit

Permalink
Move lsdir.h to a new 'common' module
Browse files Browse the repository at this point in the history
  • Loading branch information
SpaceManiac committed May 14, 2019
1 parent 702ddf7 commit 4f63ec9
Show file tree
Hide file tree
Showing 6 changed files with 127 additions and 70 deletions.
1 change: 1 addition & 0 deletions .gitignore
@@ -1,5 +1,6 @@
# top-level folders
/build
/.vscode

# file types
*.pyc
Expand Down
2 changes: 1 addition & 1 deletion Makefile
@@ -1,4 +1,4 @@
PROJECTS := lunatic supreme sleepless loonyland loonyland2 mystic
PROJECTS := lunatic supreme sleepless loonyland loonyland2 mystic common
PREMAKE5 := premake5

ifneq ($(wildcard build/premake5),)
Expand Down
13 changes: 13 additions & 0 deletions premake5.lua
Expand Up @@ -30,6 +30,11 @@ function base_project(name)
filter {}
end

function library(name)
base_project(name)
kind "StaticLib"
end

function allegro_project(name)
base_project(name)
includedirs { "build/allegro/include/" }
Expand Down Expand Up @@ -66,13 +71,21 @@ function icon_file(icon)
filter {}
end

function depends(name)
includedirs { "source/" .. name }
links(name)
end

library "common"

allegro_project "lunatic"
icon_file "lunatic"
defines { "EXPANDO" }
buildoptions { "-Wall", "-Wextra", "-Wno-unused-parameter" }

sdl2_project "supreme"
icon_file "lunatic"
depends "common"
buildoptions {
"-Wall",
"-Wno-write-strings",
Expand Down
66 changes: 66 additions & 0 deletions source/common/lsdir.cpp
@@ -0,0 +1,66 @@
#include "lsdir.h"

#ifdef __GNUC__

lsdir::lsdir(const char* directory)
{
dir = opendir(directory);
}

lsdir::~lsdir()
{
if (dir)
{
closedir(dir);
}
}

const char* lsdir::next()
{
struct dirent *dp = dir ? readdir(dir) : nullptr;
return dp ? dp->d_name : nullptr;
}

// end __GNUC__
#elif defined(_MSC_VER)

lsdir::lsdir(const char* directory)
{
char* buf = new char[strlen(directory) + 4];
strcpy(buf, directory);
strcat(buf, "\\*");

hFile = _findfirst(buf, &filedata);
first = true;
delete[] buf;
}

lsdir::~lsdir()
{
if (hFile != -1)
{
_findclose(hFile);
}
}

const char* lsdir::next()
{
if (hFile == -1)
{
return nullptr;
}
if (first)
{
first = false;
return filedata.name;
}
if (_findnext(hFile, &filedata) != 0)
{
_findclose(hFile);
hFile = -1;
return nullptr;
}
return filedata.name;
}

#endif // _MSC_VER
46 changes: 46 additions & 0 deletions source/common/lsdir.h
@@ -0,0 +1,46 @@
#ifndef LSDIR_H
#define LSDIR_H

#ifdef __GNUC__
#include <dirent.h>

class lsdir
{
DIR* dir;

public:
explicit lsdir(const char* directory);
~lsdir();
const char* next();

private:
lsdir(const lsdir&) = delete;
lsdir(lsdir&&) = delete;
lsdir& operator=(const lsdir&) = delete;
lsdir& operator=(lsdir&&) = delete;
};

// end __GNUC__
#elif defined(_MSC_VER)
#include <io.h>

class lsdir
{
long hFile;
struct _finddata_t filedata;
bool first;

public:
explicit lsdir(const char* directory);
~lsdir();
const char* next();

private:
lsdir(const lsdir&) = delete;
lsdir(lsdir&&) = delete;
lsdir& operator=(const lsdir&) = delete;
lsdir& operator=(lsdir&&) = delete;
};

#endif // _MSC_VER
#endif // LSDIR_H
69 changes: 0 additions & 69 deletions source/supreme/lsdir.h

This file was deleted.

0 comments on commit 4f63ec9

Please sign in to comment.