Fix libc function implementations without extern "C" linkage.
This commit is contained in:
parent
7c3df4e4f7
commit
bfc8570bb8
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
static DIR* firstdir = NULL;
|
static DIR* firstdir = NULL;
|
||||||
|
|
||||||
void dregister(DIR* dir)
|
extern "C" void dregister(DIR* dir)
|
||||||
{
|
{
|
||||||
dir->flags |= _DIR_REGISTERED;
|
dir->flags |= _DIR_REGISTERED;
|
||||||
if ( !firstdir ) { firstdir = dir; return; }
|
if ( !firstdir ) { firstdir = dir; return; }
|
||||||
|
@ -40,7 +40,7 @@ void dregister(DIR* dir)
|
||||||
firstdir = dir;
|
firstdir = dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
void dunregister(DIR* dir)
|
extern "C" void dunregister(DIR* dir)
|
||||||
{
|
{
|
||||||
if ( !(dir->flags & _DIR_REGISTERED) )
|
if ( !(dir->flags & _DIR_REGISTERED) )
|
||||||
return;
|
return;
|
||||||
|
@ -53,7 +53,7 @@ void dunregister(DIR* dir)
|
||||||
dir->flags &= ~_DIR_REGISTERED;
|
dir->flags &= ~_DIR_REGISTERED;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct dirent* readdir(DIR* dir)
|
extern "C" struct dirent* readdir(DIR* dir)
|
||||||
{
|
{
|
||||||
if ( !dir->read_func )
|
if ( !dir->read_func )
|
||||||
{
|
{
|
||||||
|
@ -94,7 +94,7 @@ struct dirent* readdir(DIR* dir)
|
||||||
return dir->entry;
|
return dir->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
int closedir(DIR* dir)
|
extern "C" int closedir(DIR* dir)
|
||||||
{
|
{
|
||||||
int result = (dir->close_func) ? dir->close_func(dir->user) : 0;
|
int result = (dir->close_func) ? dir->close_func(dir->user) : 0;
|
||||||
dunregister(dir);
|
dunregister(dir);
|
||||||
|
@ -104,31 +104,31 @@ int closedir(DIR* dir)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void rewinddir(DIR* dir)
|
extern "C" void rewinddir(DIR* dir)
|
||||||
{
|
{
|
||||||
if ( dir->rewind_func )
|
if ( dir->rewind_func )
|
||||||
dir->rewind_func(dir->user);
|
dir->rewind_func(dir->user);
|
||||||
dir->flags &= ~_DIR_EOF;
|
dir->flags &= ~_DIR_EOF;
|
||||||
}
|
}
|
||||||
|
|
||||||
int dirfd(DIR* dir)
|
extern "C" int dirfd(DIR* dir)
|
||||||
{
|
{
|
||||||
if ( !dir->fd_func )
|
if ( !dir->fd_func )
|
||||||
return errno = EBADF, 0;
|
return errno = EBADF, 0;
|
||||||
return dir->fd_func(dir->user);
|
return dir->fd_func(dir->user);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dclearerr(DIR* dir)
|
extern "C" void dclearerr(DIR* dir)
|
||||||
{
|
{
|
||||||
dir->flags &= ~_DIR_ERROR;
|
dir->flags &= ~_DIR_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
int derror(DIR* dir)
|
extern "C" int derror(DIR* dir)
|
||||||
{
|
{
|
||||||
return dir->flags & _DIR_ERROR;
|
return dir->flags & _DIR_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
int deof(DIR* dir)
|
extern "C" int deof(DIR* dir)
|
||||||
{
|
{
|
||||||
return dir->flags & _DIR_EOF;
|
return dir->flags & _DIR_EOF;
|
||||||
}
|
}
|
||||||
|
@ -138,7 +138,7 @@ static void dfreedir(DIR* dir)
|
||||||
free(dir);
|
free(dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
DIR* dnewdir(void)
|
extern "C" DIR* dnewdir(void)
|
||||||
{
|
{
|
||||||
DIR* dir = (DIR*) calloc(sizeof(DIR), 1);
|
DIR* dir = (DIR*) calloc(sizeof(DIR), 1);
|
||||||
if ( !dir )
|
if ( !dir )
|
||||||
|
@ -149,7 +149,7 @@ DIR* dnewdir(void)
|
||||||
return dir;
|
return dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
int dcloseall(void)
|
extern "C" int dcloseall(void)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
while ( firstdir )
|
while ( firstdir )
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
char* basename(char* path)
|
extern "C" char* basename(char* path)
|
||||||
{
|
{
|
||||||
static char static_stuff[2];
|
static char static_stuff[2];
|
||||||
if ( !path || !*path )
|
if ( !path || !*path )
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
char* dirname(char* path)
|
extern "C" char* dirname(char* path)
|
||||||
{
|
{
|
||||||
static char static_stuff[2];
|
static char static_stuff[2];
|
||||||
if ( !path || !*path )
|
if ( !path || !*path )
|
||||||
|
|
|
@ -29,6 +29,7 @@ const int MAX_SIGNALS = 128;
|
||||||
extern sighandler_t handlers[MAX_SIGNALS];
|
extern sighandler_t handlers[MAX_SIGNALS];
|
||||||
|
|
||||||
// TODO: Actually implement the sigaction interface for real.
|
// TODO: Actually implement the sigaction interface for real.
|
||||||
|
extern "C"
|
||||||
int sigaction(int signum, const struct sigaction* restrict act,
|
int sigaction(int signum, const struct sigaction* restrict act,
|
||||||
struct sigaction* restrict oldact)
|
struct sigaction* restrict oldact)
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
extern "C"
|
||||||
char* realpath(const char* restrict path, char* restrict resolved_path)
|
char* realpath(const char* restrict path, char* restrict resolved_path)
|
||||||
{
|
{
|
||||||
char* ret_path = canonicalize_file_name(path);
|
char* ret_path = canonicalize_file_name(path);
|
||||||
|
|
Loading…
Reference in New Issue