added qse_get_current_mbsdir()/qse_get_current_wcsdir().
writing qse_get_prog_path(). not yet done. implementing the Path class
This commit is contained in:
@ -1152,6 +1152,29 @@ QSE_EXPORT qse_size_t qse_mbsxjoinv (
|
||||
va_list ap
|
||||
);
|
||||
|
||||
QSE_EXPORT qse_size_t qse_mbscajoin (
|
||||
qse_mchar_t* buf,
|
||||
...
|
||||
);
|
||||
|
||||
QSE_EXPORT qse_size_t qse_mbsxcajoin (
|
||||
qse_mchar_t* buf,
|
||||
qse_size_t size,
|
||||
...
|
||||
);
|
||||
|
||||
QSE_EXPORT qse_size_t qse_mbscajoinv (
|
||||
qse_mchar_t* buf,
|
||||
va_list ap
|
||||
);
|
||||
|
||||
QSE_EXPORT qse_size_t qse_mbsxcajoinv (
|
||||
qse_mchar_t* buf,
|
||||
qse_size_t size,
|
||||
va_list ap
|
||||
);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The qse_wcsjoin() function joins a list of wide-charcter strings into
|
||||
@ -1195,16 +1218,46 @@ QSE_EXPORT qse_size_t qse_wcsxjoinv (
|
||||
va_list ap
|
||||
);
|
||||
|
||||
QSE_EXPORT qse_size_t qse_wcscajoin (
|
||||
qse_wchar_t* buf,
|
||||
...
|
||||
);
|
||||
|
||||
QSE_EXPORT qse_size_t qse_wcsxcajoin (
|
||||
qse_wchar_t* buf,
|
||||
qse_size_t size,
|
||||
...
|
||||
);
|
||||
|
||||
QSE_EXPORT qse_size_t qse_wcscajoinv (
|
||||
qse_wchar_t* buf,
|
||||
va_list ap
|
||||
);
|
||||
|
||||
QSE_EXPORT qse_size_t qse_wcsxcajoinv (
|
||||
qse_wchar_t* buf,
|
||||
qse_size_t size,
|
||||
va_list ap
|
||||
);
|
||||
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
# define qse_strjoin qse_mbsjoin
|
||||
# define qse_strxjoin qse_mbsxjoin
|
||||
# define qse_strjoinv qse_mbsjoinv
|
||||
# define qse_strxjoinv qse_mbsxjoinv
|
||||
# define qse_strcajoin qse_mbscajoin
|
||||
# define qse_strxcajoin qse_mbsxcajoin
|
||||
# define qse_strcajoinv qse_mbscajoinv
|
||||
# define qse_strxcajoinv qse_mbsxcajoinv
|
||||
#else
|
||||
# define qse_strjoin qse_wcsjoin
|
||||
# define qse_strxjoin qse_wcsxjoin
|
||||
# define qse_strjoinv qse_wcsjoinv
|
||||
# define qse_strxjoinv qse_wcsxjoinv
|
||||
# define qse_strcajoin qse_wcscajoin
|
||||
# define qse_strxcajoin qse_wcsxcajoin
|
||||
# define qse_strcajoinv qse_wcscajoinv
|
||||
# define qse_strxcajoinv qse_wcsxcajoinv
|
||||
#endif
|
||||
/* ---------------------------------------------------- */
|
||||
|
||||
|
@ -30,6 +30,7 @@ pkginclude_HEADERS += \
|
||||
App.hpp \
|
||||
Condition.hpp \
|
||||
Mutex.hpp \
|
||||
Path.hpp \
|
||||
SocketAddress.hpp \
|
||||
Socket.hpp \
|
||||
SpinLock.hpp \
|
||||
|
@ -91,6 +91,7 @@ host_triplet = @host@
|
||||
@ENABLE_CXX_TRUE@ App.hpp \
|
||||
@ENABLE_CXX_TRUE@ Condition.hpp \
|
||||
@ENABLE_CXX_TRUE@ Mutex.hpp \
|
||||
@ENABLE_CXX_TRUE@ Path.hpp \
|
||||
@ENABLE_CXX_TRUE@ SocketAddress.hpp \
|
||||
@ENABLE_CXX_TRUE@ Socket.hpp \
|
||||
@ENABLE_CXX_TRUE@ SpinLock.hpp \
|
||||
@ -136,7 +137,7 @@ am__can_run_installinfo = \
|
||||
am__pkginclude_HEADERS_DIST = cnd.h dir.h fio.h fs.h glob.h intr.h \
|
||||
log.h mtx.h mux.h netlink.h nwad.h nwif.h nwio.h os.h pio.h \
|
||||
rwl.h sck.h sinfo.h sio.h spl.h task.h thr.h tio.h App.hpp \
|
||||
Condition.hpp Mutex.hpp SocketAddress.hpp Socket.hpp \
|
||||
Condition.hpp Mutex.hpp Path.hpp SocketAddress.hpp Socket.hpp \
|
||||
SpinLock.hpp TcpServer.hpp Thread.hpp
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
|
@ -27,11 +27,12 @@
|
||||
#ifndef _QSE_SI_PATH_CLASS_
|
||||
#define _QSE_SI_PATH_CLASS_
|
||||
|
||||
#include <qse/types.h>
|
||||
#include <qse/macros.h>
|
||||
#include <qse/Types.hpp>
|
||||
#include <qse/cmn/Mmged.hpp>
|
||||
|
||||
QSE_BEGIN_NAMESPACE(QSE)
|
||||
class Path
|
||||
|
||||
class Path: public Mmged
|
||||
{
|
||||
public:
|
||||
enum
|
||||
@ -39,74 +40,65 @@ public:
|
||||
MAX_LEN = QSE_PATH_MAX
|
||||
};
|
||||
|
||||
Path ();
|
||||
Path (const qse_char_t* n);
|
||||
Path (const Path& fn);
|
||||
Path& operator= (const Path& fn);
|
||||
Path (Mmgr* mmgr = QSE_NULL) QSE_CPP_NOEXCEPT;
|
||||
Path (const qse_char_t* n, Mmgr* mmgr = QSE_NULL) QSE_CPP_NOEXCEPT;
|
||||
Path (const Path& path) QSE_CPP_NOEXCEPT;
|
||||
Path& operator= (const Path& path) QSE_CPP_NOEXCEPT;
|
||||
|
||||
const qse_char_t* name () const
|
||||
{
|
||||
return full_path;
|
||||
}
|
||||
// NOTE: the current implementation doesn't have much to benefit from C++11 Move
|
||||
// semantics and the rvalue reference.
|
||||
|
||||
void setName (const qse_char_t* n)
|
||||
{
|
||||
if (n == QSE_NULL || n[0] == QSE_CHAR('\0')) set_to_root();
|
||||
else {
|
||||
qse_strxcpy (full_path, qse_countof(full_path), n);
|
||||
this->set_base_name ();
|
||||
}
|
||||
}
|
||||
void setName (const qse_char_t* n) QSE_CPP_NOEXCEPT;
|
||||
|
||||
const qse_char_t* baseName () const
|
||||
{
|
||||
return base_name;
|
||||
}
|
||||
const qse_char_t* baseDir () const
|
||||
{
|
||||
return base_dir;
|
||||
}
|
||||
const qse_char_t* getName () const QSE_CPP_NOEXCEPT { return this->full_path; }
|
||||
const qse_char_t* getBaseName () const QSE_CPP_NOEXCEPT { return this->base_name; }
|
||||
const qse_char_t* getBaseDir () const QSE_CPP_NOEXCEPT { return this->base_dir; }
|
||||
|
||||
bool exists ()
|
||||
{
|
||||
return exists (full_path);
|
||||
}
|
||||
static bool exists (const qse_char_t* path);
|
||||
#if 0
|
||||
bool exists () const QSE_CPP_NOEXCEPT { return this->exists(this->full_path); }
|
||||
static bool exists (const qse_mchar_t* path) QSE_CPP_NOEXCEPT;
|
||||
static bool exists (const qse_wchar_t* path) QSE_CPP_NOEXCEPT;
|
||||
|
||||
int getSize (qse_off_t* sz);
|
||||
bool isWritable ();
|
||||
bool isReadable ();
|
||||
bool isReadWritable ();
|
||||
#ifndef _WIN32
|
||||
bool isExecutable ();
|
||||
int getSize (qse_foff_t* sz) const QSE_CPP_NOEXCEPT { return this->getSize(this->full_path, sz); }
|
||||
static int getSize (const qse_mchar_t* path, qse_foff_t* sz) QSE_CPP_NOEXCEPT;
|
||||
static int getSize (const qse_wchar_t* path, qse_foff_t* sz) QSE_CPP_NOEXCEPT;
|
||||
|
||||
bool isWritable () const QSE_CPP_NOEXCEPT;
|
||||
bool isReadable () const QSE_CPP_NOEXCEPT;
|
||||
bool isReadWritable () const QSE_CPP_NOEXCEPT;
|
||||
bool isExecutable () const QSE_CPP_NOEXCEPT;
|
||||
|
||||
bool isDir () const QSE_CPP_NOEXCEPT { return this->isDir(this->full_path); }
|
||||
static bool isDir (const qse_char_t* path) QSE_CPP_NOEXCEPT;
|
||||
|
||||
bool isRegular () const QSE_CPP_NOEXCEPT { return this->isRegular(this->full_path); }
|
||||
static bool isRegular (const qse_char_t* path) QSE_CPP_NOEXCEPT;
|
||||
#endif
|
||||
|
||||
bool isDirectory () const { return this->isDirectory (full_path); }
|
||||
static bool isDirectory (const qse_char_t* path);
|
||||
int chmod (qse_fmode_t mode) QSE_CPP_NOEXCEPT { return this->chmod(this->full_path, mode); }
|
||||
static int chmod (const qse_mchar_t* path, qse_fmode_t mode) QSE_CPP_NOEXCEPT;
|
||||
static int chmod (const qse_wchar_t* path, qse_fmode_t mode) QSE_CPP_NOEXCEPT;
|
||||
|
||||
bool isRegular () const { return this->isRegular (full_path); }
|
||||
static bool isRegular (const qse_char_t* path);
|
||||
int unlink () QSE_CPP_NOEXCEPT { return this->unlink(this->full_path); }
|
||||
static int unlink (const qse_mchar_t* path) QSE_CPP_NOEXCEPT;
|
||||
static int unlink (const qse_wchar_t* path) QSE_CPP_NOEXCEPT;
|
||||
|
||||
int chmod (qse_mode_t mode);
|
||||
static int chmod (const qse_char_t* path, qse_mode_t mode);
|
||||
int mkdir (qse_fmode_t mode) QSE_CPP_NOEXCEPT { return this->mkdir(this->full_path, mode); }
|
||||
static int mkdir (const qse_mchar_t* path, qse_fmode_t mode) QSE_CPP_NOEXCEPT;
|
||||
static int mkdir (const qse_wchar_t* path, qse_fmode_t mode) QSE_CPP_NOEXCEPT;
|
||||
|
||||
int unlink ();
|
||||
static int unlink (const qse_char_t* path);
|
||||
|
||||
int mkdir (qse_mode_t mode);
|
||||
static int mkdir (const qse_char_t* path, qse_mode_t mode);
|
||||
|
||||
int setToSelf (const qse_char_t* argv0 = QSE_NULL);
|
||||
int setToSelf (const qse_mchar_t* argv0 = QSE_NULL) QSE_CPP_NOEXCEPT;
|
||||
int setToSelf (const qse_wchar_t* argv0 = QSE_NULL) QSE_CPP_NOEXCEPT;
|
||||
|
||||
protected:
|
||||
qse_char_t full_path[QSE_PATH_MAX + 1];
|
||||
qse_char_t base_name[QSE_PATH_MAX + 1];
|
||||
qse_char_t base_dir [QSE_PATH_MAX + 1];
|
||||
|
||||
void set_base_name ();
|
||||
void set_to_root ();
|
||||
void set_base_name () QSE_CPP_NOEXCEPT;
|
||||
void set_to_root () QSE_CPP_NOEXCEPT;
|
||||
};
|
||||
|
||||
QSE_END_NAMESPACE(QSE)
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -46,33 +46,7 @@
|
||||
# define QSE_SIZEOF_FS_CHAR_T QSE_SIZEOF_MCHAR_T
|
||||
#endif
|
||||
|
||||
#if (QSE_SIZEOF_MODE_T == QSE_SIZEOF_LONG)
|
||||
# if defined(QSE_MODE_T_IS_SIGNED)
|
||||
typedef long int qse_fs_mode_t;
|
||||
# else
|
||||
typedef unsigned long int qse_fs_mode_t;
|
||||
# endif
|
||||
#elif (QSE_SIZEOF_MODE_T == QSE_SIZEOF_INT)
|
||||
# if defined(QSE_MODE_T_IS_SIGNED)
|
||||
typedef int qse_fs_mode_t;
|
||||
# else
|
||||
typedef unsigned int qse_fs_mode_t;
|
||||
# endif
|
||||
#elif (QSE_SIZEOF_MODE_T == QSE_SIZEOF_SHORT)
|
||||
# if defined(QSE_MODE_T_IS_SIGNED)
|
||||
typedef short int qse_fs_mode_t;
|
||||
# else
|
||||
typedef unsigned short int qse_fs_mode_t;
|
||||
# endif
|
||||
#elif (QSE_SIZEOF_MODE_T == QSE_SIZEOF_CHAR)
|
||||
# if defined(QSE_MODE_T_IS_SIGNED)
|
||||
typedef signed char qse_fs_mode_t;
|
||||
# else
|
||||
typedef unsigned char qse_fs_mode_t;
|
||||
# endif
|
||||
#else
|
||||
typedef unsigned int qse_fs_mode_t;
|
||||
#endif
|
||||
typedef qse_fmode_t qse_fs_mode_t;
|
||||
|
||||
enum qse_fs_errnum_t
|
||||
{
|
||||
@ -519,6 +493,34 @@ QSE_EXPORT int qse_fs_rmdirwcs (
|
||||
#endif
|
||||
|
||||
|
||||
/* =========================================================================
|
||||
* GLOBAL UTILITIES NOT USING THE FS OBJECT
|
||||
* ========================================================================= */
|
||||
|
||||
QSE_EXPORT qse_mchar_t* qse_get_current_mbsdir (
|
||||
qse_mchar_t* buf,
|
||||
qse_size_t size,
|
||||
qse_mmgr_t* mmgr
|
||||
);
|
||||
|
||||
QSE_EXPORT qse_wchar_t* qse_get_current_wcsdir (
|
||||
qse_wchar_t* buf,
|
||||
qse_size_t size,
|
||||
qse_mmgr_t* mmgr
|
||||
);
|
||||
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
# define qse_get_current_dir(buf,size,mmgr) qse_get_current_mbsdir(buf,size,mmgr)
|
||||
#else
|
||||
# define qse_get_current_dir(buf,size,mmgr) qse_get_current_wcsdir(buf,size,mmgr)
|
||||
#endif
|
||||
|
||||
QSE_EXPORT int qse_get_prog_path (
|
||||
const qse_char_t* argv0,
|
||||
qse_char_t* buf,
|
||||
qse_size_t size,
|
||||
qse_mmgr_t* mmgr
|
||||
);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
@ -914,9 +914,53 @@ typedef struct qse_tmgr_t qse_tmgr_t;
|
||||
#elif defined(QSE_HAVE_INT16_T) && (QSE_SIZEOF_OFF_T==2)
|
||||
typedef qse_int16_t qse_foff_t;
|
||||
# define QSE_SIZEOF_FOFF_T QSE_SIZEOF_INT16_T
|
||||
#elif defined(QSE_HAVE_INT8_T) && (QSE_SIZEOF_OFF_T==1)
|
||||
typedef qse_int8_t qse_foff_t;
|
||||
# define QSE_SIZEOF_FOFF_T QSE_SIZEOF_INT16_T
|
||||
#else
|
||||
typedef qse_int32_t qse_foff_t; /* this line is for doxygen */
|
||||
# error Unsupported platform
|
||||
# error Unsupported platform
|
||||
#endif
|
||||
|
||||
/**
|
||||
* The #qse_fmode_t type defines an integer that can represent a file offset.
|
||||
* Depending on your system, it's defined to one of #qse_int64_t, #qse_int32_t,
|
||||
* and #qse_int16_t.
|
||||
*/
|
||||
#if defined(QSE_MODE_T_IS_SIGNED)
|
||||
# if defined(QSE_HAVE_INT64_T) && (QSE_SIZEOF_MODE_T==8)
|
||||
typedef qse_int64_t qse_fmode_t;
|
||||
# define QSE_SIZEOF_FMODE_T QSE_SIZEOF_INT64_T
|
||||
# elif defined(QSE_HAVE_INT32_T) && (QSE_SIZEOF_MODE_T==4)
|
||||
typedef qse_int32_t qse_fmode_t;
|
||||
# define QSE_SIZEOF_FMODE_T QSE_SIZEOF_INT32_T
|
||||
# elif defined(QSE_HAVE_INT16_T) && (QSE_SIZEOF_MODE_T==2)
|
||||
typedef qse_int16_t qse_fmode_t;
|
||||
# define QSE_SIZEOF_FMODE_T QSE_SIZEOF_INT16_T
|
||||
# elif defined(QSE_HAVE_INT8_T) && (QSE_SIZEOF_MODE_T==1)
|
||||
typedef qse_int8_t qse_fmode_t;
|
||||
# define QSE_SIZEOF_FMODE_T QSE_SIZEOF_INT8_T
|
||||
# else
|
||||
typedef qse_int32_t qse_fmode_t; /* this line is for doxygen */
|
||||
# error Unsupported platform
|
||||
# endif
|
||||
#else
|
||||
# if defined(QSE_HAVE_INT64_T) && (QSE_SIZEOF_MODE_T==8)
|
||||
typedef qse_uint64_t qse_fmode_t;
|
||||
# define QSE_SIZEOF_FMODE_T QSE_SIZEOF_INT64_T
|
||||
# elif defined(QSE_HAVE_INT32_T) && (QSE_SIZEOF_MODE_T==4)
|
||||
typedef qse_uint32_t qse_fmode_t;
|
||||
# define QSE_SIZEOF_FMODE_T QSE_SIZEOF_INT32_T
|
||||
# elif defined(QSE_HAVE_INT16_T) && (QSE_SIZEOF_MODE_T==2)
|
||||
typedef qse_uint16_t qse_fmode_t;
|
||||
# define QSE_SIZEOF_FMODE_T QSE_SIZEOF_INT16_T
|
||||
# elif defined(QSE_HAVE_INT8_T) && (QSE_SIZEOF_MODE_T==1)
|
||||
typedef qse_uint8_t qse_fmode_t;
|
||||
# define QSE_SIZEOF_FMODE_T QSE_SIZEOF_INT8_T
|
||||
# else
|
||||
typedef qse_uint32_t qse_fmode_t; /* this line is for doxygen */
|
||||
# error Unsupported platform
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user