2014-03-15 16:59:03 +00:00
|
|
|
/// \file
|
|
|
|
/// \brief Support to find files
|
|
|
|
|
|
|
|
#ifndef __FILESRCH_H__
|
|
|
|
#define __FILESRCH_H__
|
|
|
|
|
|
|
|
#include "doomdef.h"
|
|
|
|
#include "d_netfil.h"
|
2018-12-16 01:46:42 +00:00
|
|
|
#include "m_menu.h" // MAXSTRINGLENGTH
|
2021-03-23 02:56:55 +00:00
|
|
|
#include "w_wad.h"
|
2018-12-16 01:46:42 +00:00
|
|
|
|
|
|
|
extern consvar_t cv_addons_option, cv_addons_folder, cv_addons_md5, cv_addons_showall, cv_addons_search_case, cv_addons_search_type;
|
2014-03-15 16:59:03 +00:00
|
|
|
|
|
|
|
/** \brief The filesearch function
|
|
|
|
|
|
|
|
This function search files, manly WADs and return back the status of the file
|
|
|
|
|
|
|
|
\param filename the file to look for
|
|
|
|
\param startpath where to start look from
|
|
|
|
\param wantedmd5sum want to check with MD5
|
|
|
|
\param completepath want to return the complete path of the file?
|
|
|
|
\param maxsearchdepth the max depth to search for the file
|
|
|
|
|
|
|
|
\return filestatus_t
|
|
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
filestatus_t filesearch(char *filename, const char *startpath, const UINT8 *wantedmd5sum,
|
|
|
|
boolean completepath, int maxsearchdepth);
|
|
|
|
|
2021-09-12 21:08:06 +00:00
|
|
|
INT32 pathisdirectory(const char *path);
|
2021-03-23 02:56:55 +00:00
|
|
|
INT32 samepaths(const char *path1, const char *path2);
|
2021-09-12 21:08:06 +00:00
|
|
|
boolean concatpaths(const char *path, const char *startpath);
|
2021-03-23 02:56:55 +00:00
|
|
|
|
2021-09-12 21:08:06 +00:00
|
|
|
#ifndef AVOID_ERRNO
|
|
|
|
extern int direrror;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
lumpinfo_t *getdirectoryfiles(const char *path, UINT16 *nlmp, UINT16 *nfolders);
|
2021-03-23 02:56:55 +00:00
|
|
|
|
2018-12-16 01:46:42 +00:00
|
|
|
#define menudepth 20
|
|
|
|
|
|
|
|
extern char menupath[1024];
|
|
|
|
extern size_t menupathindex[menudepth];
|
|
|
|
extern size_t menudepthleft;
|
|
|
|
|
|
|
|
extern char menusearch[MAXSTRINGLENGTH+1];
|
|
|
|
|
|
|
|
extern char **dirmenu;
|
|
|
|
extern size_t sizedirmenu;
|
|
|
|
extern size_t dir_on[menudepth];
|
|
|
|
extern UINT8 refreshdirmenu;
|
|
|
|
extern char *refreshdirname;
|
|
|
|
|
|
|
|
extern size_t packetsizetally;
|
|
|
|
extern size_t mainwadstally;
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
EXT_FOLDER = 0,
|
|
|
|
EXT_UP,
|
|
|
|
EXT_NORESULTS,
|
|
|
|
EXT_START,
|
|
|
|
EXT_TXT = EXT_START,
|
|
|
|
EXT_CFG,
|
|
|
|
EXT_LOADSTART,
|
|
|
|
EXT_WAD = EXT_LOADSTART,
|
2018-12-16 21:07:47 +00:00
|
|
|
#ifdef USE_KART
|
2018-12-16 01:46:42 +00:00
|
|
|
EXT_KART,
|
2018-12-16 21:07:47 +00:00
|
|
|
#endif
|
2018-12-16 02:44:39 +00:00
|
|
|
EXT_PK3,
|
2018-12-16 01:46:42 +00:00
|
|
|
EXT_SOC,
|
2020-03-19 17:36:14 +00:00
|
|
|
EXT_LUA,
|
2018-12-16 01:46:42 +00:00
|
|
|
NUM_EXT,
|
|
|
|
NUM_EXT_TABLE = NUM_EXT-EXT_START,
|
|
|
|
EXT_LOADED = 0x80
|
|
|
|
/*
|
|
|
|
obviously there can only be 0x7F supported extensions in
|
|
|
|
addons menu because we're cramming this into a char out of
|
|
|
|
laziness/easy memory allocation (what's the difference?)
|
|
|
|
and have stolen a bit to show whether it's loaded or not
|
|
|
|
in practice the size of the data type is probably overkill
|
|
|
|
toast 02/05/17
|
|
|
|
*/
|
|
|
|
} ext_enum;
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
DIR_TYPE = 0,
|
|
|
|
DIR_LEN,
|
|
|
|
DIR_STRING
|
|
|
|
} dirname_enum;
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
REFRESHDIR_NORMAL = 1,
|
|
|
|
REFRESHDIR_ADDFILE = 2,
|
|
|
|
REFRESHDIR_WARNING = 4,
|
|
|
|
REFRESHDIR_ERROR = 8,
|
|
|
|
REFRESHDIR_NOTLOADED = 16,
|
|
|
|
REFRESHDIR_MAX = 32
|
|
|
|
} refreshdir_enum;
|
|
|
|
|
|
|
|
void closefilemenu(boolean validsize);
|
|
|
|
void searchfilemenu(char *tempname);
|
|
|
|
boolean preparefilemenu(boolean samedepth);
|
2014-03-15 16:59:03 +00:00
|
|
|
#endif // __FILESRCH_H__
|