Add wrappers around rename, unlink, mkdir, opendir, readdir and
closedir to handle filename charset translation.
This commit is contained in:
parent
d7750b324f
commit
f6a81f0aaf
6 changed files with 237 additions and 26 deletions
|
@ -22,6 +22,48 @@
|
|||
#include <config.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <dirent.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
|
||||
typedef struct dirent *grub_util_fd_dirent_t;
|
||||
typedef DIR *grub_util_fd_dir_t;
|
||||
|
||||
static inline grub_util_fd_dir_t
|
||||
grub_util_fd_opendir (const char *name)
|
||||
{
|
||||
return opendir (name);
|
||||
}
|
||||
|
||||
static inline void
|
||||
grub_util_fd_closedir (grub_util_fd_dir_t dirp)
|
||||
{
|
||||
closedir (dirp);
|
||||
}
|
||||
|
||||
static inline grub_util_fd_dirent_t
|
||||
grub_util_fd_readdir (grub_util_fd_dir_t dirp)
|
||||
{
|
||||
return readdir (dirp);
|
||||
}
|
||||
|
||||
static inline int
|
||||
grub_util_unlink (const char *pathname)
|
||||
{
|
||||
return unlink (pathname);
|
||||
}
|
||||
|
||||
static inline int
|
||||
grub_util_rename (const char *from, const char *to)
|
||||
{
|
||||
return rename (from, to);
|
||||
}
|
||||
|
||||
#define grub_util_mkdir(a) mkdir (a)
|
||||
|
||||
struct grub_util_fd
|
||||
{
|
||||
enum { GRUB_UTIL_FD_FILE, GRUB_UTIL_FD_DISK } type;
|
||||
|
|
|
@ -28,6 +28,44 @@
|
|||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <dirent.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
|
||||
typedef struct dirent *grub_util_fd_dirent_t;
|
||||
typedef DIR *grub_util_fd_dir_t;
|
||||
|
||||
static inline grub_util_fd_dir_t
|
||||
grub_util_fd_opendir (const char *name)
|
||||
{
|
||||
return opendir (name);
|
||||
}
|
||||
|
||||
static inline void
|
||||
grub_util_fd_closedir (grub_util_fd_dir_t dirp)
|
||||
{
|
||||
closedir (dirp);
|
||||
}
|
||||
|
||||
static inline grub_util_fd_dirent_t
|
||||
grub_util_fd_readdir (grub_util_fd_dir_t dirp)
|
||||
{
|
||||
return readdir (dirp);
|
||||
}
|
||||
|
||||
static inline int
|
||||
grub_util_unlink (const char *pathname)
|
||||
{
|
||||
return unlink (pathname);
|
||||
}
|
||||
|
||||
static inline int
|
||||
grub_util_rename (const char *from, const char *to)
|
||||
{
|
||||
return rename (from, to);
|
||||
}
|
||||
|
||||
#define grub_util_mkdir(a) mkdir ((a), 0700)
|
||||
|
||||
#if defined (__NetBSD__)
|
||||
/* NetBSD uses /boot for its boot block. */
|
||||
|
|
|
@ -31,6 +31,30 @@ typedef HANDLE grub_util_fd_t;
|
|||
#define DEFAULT_DIRECTORY "C:\\"GRUB_BOOT_DIR_NAME"\\"GRUB_DIR_NAME
|
||||
#define DEFAULT_DEVICE_MAP DEFAULT_DIRECTORY "/device.map"
|
||||
|
||||
struct grub_util_fd_dirent
|
||||
{
|
||||
char d_name[0];
|
||||
};
|
||||
struct grub_util_fd_dir;
|
||||
typedef struct grub_util_fd_dirent *grub_util_fd_dirent_t;
|
||||
typedef struct grub_util_fd_dir *grub_util_fd_dir_t;
|
||||
|
||||
int
|
||||
grub_util_rename (const char *from, const char *to);
|
||||
int
|
||||
grub_util_unlink (const char *name);
|
||||
void
|
||||
grub_util_mkdir (const char *dir);
|
||||
|
||||
grub_util_fd_dir_t
|
||||
grub_util_fd_opendir (const char *name);
|
||||
|
||||
void
|
||||
grub_util_fd_closedir (grub_util_fd_dir_t dirp);
|
||||
|
||||
grub_util_fd_dirent_t
|
||||
grub_util_fd_readdir (grub_util_fd_dir_t dirp);
|
||||
|
||||
enum grub_util_fd_open_flags_t
|
||||
{
|
||||
GRUB_UTIL_FD_O_RDONLY = 1,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue