107 lines
2.7 KiB
C++

/* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
#ifndef NdbDir_HPP
#define NdbDir_HPP
#ifdef _WIN32
#ifndef mode_t /* MySQL 5.5+ defines mode_t */
typedef int mode_t;
#endif
#endif
class NdbDir {
public:
class Iterator {
class DirIteratorImpl& m_impl;
Iterator(const Iterator&); // not impl
Iterator& operator=(const Iterator&); // not impl
public:
Iterator();
~Iterator();
int open(const char* path);
void close(void);
/*
Return the next regular file or NULL if no more file found
*/
const char* next_file(void);
/*
Return the next entry(file, dir, symlink etc.) or NULL if no
more entries found
*/
const char* next_entry(void);
};
class Temp {
const char* m_path;
Temp(const Temp&); // not impl
Temp& operator=(const Temp&); // not impl
public:
Temp();
~Temp();
const char* path(void) const;
};
static mode_t u_r(void);
static mode_t u_w(void);
static mode_t u_x(void);
static mode_t u_rwx(void) { return (u_r() | u_w() | u_x()); }
static mode_t g_r(void);
static mode_t g_w(void);
static mode_t g_x(void);
static mode_t g_rwx(void) { return (g_r() | g_w() | g_x()); }
static mode_t o_r(void);
static mode_t o_w(void);
static mode_t o_x(void);
static mode_t o_rwx(void) { return (o_r() | o_w() | o_x()); }
/*
Create directory
path - path to directory to create
mode - mode for the directory to create
ignore_existing - don't print or return error if directory
already exist
*/
static bool create(const char *path,
mode_t mode = u_rwx(),
bool ignore_existing = false);
/*
Remove directory recursively
path - path to directory that should be removed
only_contents - only remove the contents of the directory
*/
static bool remove_recursive(const char* path, bool only_contents = false);
/*
Remove empty directory
*/
static bool remove(const char* path);
/*
Change working directory
*/
static int chdir(const char* path);
};
#endif