parent
2a1f84f4d1
commit
05882d4c42
@ -1,55 +1,93 @@
|
|||||||
/*
|
/* $Id: sysfunc.c,v 1.2 2003/05/06 12:09:22 stpohle Exp $
|
||||||
sysfunc.c - this file hold some routines for the system functions..
|
sysfunc.c - this file hold some routines for the system functions..
|
||||||
like d_delay
|
like d_delay
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "bomberclone.h"
|
#include "bomberclone.h"
|
||||||
|
#include "sysfunc.h"
|
||||||
|
void
|
||||||
void s_delay (int ms) {
|
s_delay (int ms)
|
||||||
fd_set selectset;
|
{
|
||||||
struct timeval tval;
|
fd_set selectset;
|
||||||
|
struct timeval tval;
|
||||||
FD_ZERO (&selectset);
|
|
||||||
tval.tv_sec = 0;
|
FD_ZERO (&selectset);
|
||||||
tval.tv_usec = ms;
|
tval.tv_sec = 0;
|
||||||
select (1, &selectset, NULL, NULL, &tval);
|
tval.tv_usec = ms;
|
||||||
}
|
select (1, &selectset, NULL, NULL, &tval);
|
||||||
|
}
int
|
||||||
int s_random (int maxnr) {
|
s_random (int maxnr)
|
||||||
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
return ((rand () * maxnr)/RAND_MAX );
|
return ((rand () * maxnr) / RAND_MAX);
|
||||||
#else
|
#else
|
||||||
int i;
|
int i;
|
||||||
i = (((rand () >> 16) * (maxnr+1))/(RAND_MAX >> 16));
|
|
||||||
if (i >= maxnr)
|
i = (((rand () >> 16) * (maxnr + 1)) / (RAND_MAX >> 16));
|
||||||
i = 0;
|
if (i >= maxnr)
|
||||||
return i;
|
i = 0;
|
||||||
#endif
|
return i;
|
||||||
};
|
#endif
|
||||||
|
};
|
||||||
static char homedir[255];
|
static char homedir[255];
|
||||||
|
char *
|
||||||
char *s_gethomedir () {
|
s_gethomedir ()
|
||||||
|
{
|
||||||
char *hd;
|
char *hd;
|
||||||
if ((hd = getenv ("HOME")) == NULL) {
|
|
||||||
/* Homedir konnte nicht ermittelt werden. */
|
if ((hd = getenv ("HOME")) == NULL) {
|
||||||
homedir[0] = 0;
|
/* Homedir konnte nicht ermittelt werden. */
|
||||||
d_printf ("Variable HOME could not be found\n");
|
homedir[0] = 0;
|
||||||
}
|
d_printf ("Variable HOME could not be found\n");
|
||||||
else {
|
}
|
||||||
strncpy (homedir, hd, 253);
|
else {
|
||||||
homedir [strlen(homedir)+1] = 0;
|
strncpy (homedir, hd, 253);
|
||||||
|
homedir[strlen (homedir) + 1] = 0;
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
if (homedir [strlen(homedir)-1] != '\\')
|
if (homedir[strlen (homedir) - 1] != '\\')
|
||||||
homedir [strlen(homedir)] = '\\';
|
homedir[strlen (homedir)] = '\\';
|
||||||
#else
|
#else
|
||||||
if (homedir [strlen(homedir)-1] != '/')
|
if (homedir[strlen (homedir) - 1] != '/')
|
||||||
homedir [strlen(homedir)] = '/';
|
homedir[strlen (homedir)] = '/';
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
return homedir;
|
||||||
return homedir;
|
};
|
||||||
};
|
static _direntry direntrys[MAX_DIRENTRYS];
|
||||||
|
_direntry * s_getdir (char *path)
|
||||||
|
{
|
||||||
|
DIR *dp;
|
||||||
|
struct dirent *ep;
|
||||||
|
struct stat fstat;
|
||||||
|
int entrynr = 0;
|
||||||
|
char filename[LEN_PATHFILENAME];
|
||||||
|
|
||||||
|
dp = opendir (path);
|
||||||
|
if (dp != NULL) {
|
||||||
|
while ((ep = readdir (dp)) != NULL && entrynr < MAX_DIRENTRYS) {
|
||||||
|
direntrys[entrynr].next = NULL;
|
||||||
|
strncpy (direntrys[entrynr].name, ep->d_name, LEN_FILENAME - 1);
|
||||||
|
if (strlen (ep->d_name) >= LEN_FILENAME)
|
||||||
|
direntrys[entrynr].name[LEN_FILENAME - 1] = 0;
|
||||||
|
|
||||||
|
sprintf (filename, "%s/%s\0", path, direntrys[entrynr].name);
|
||||||
|
lstat (filename, &fstat);
|
||||||
|
if (S_ISREG (fstat.st_mode)) {
|
||||||
|
direntrys[entrynr].flags = DF_file;
|
||||||
|
direntrys[entrynr].next = &direntrys[entrynr + 1];
|
||||||
|
entrynr++;
|
||||||
|
}
|
||||||
|
else if (S_ISDIR (fstat.st_mode)) {
|
||||||
|
direntrys[entrynr].flags = DF_dir;
|
||||||
|
direntrys[entrynr].next = &direntrys[entrynr + 1];
|
||||||
|
entrynr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir (dp);
|
||||||
|
if (entrynr == 0)
|
||||||
|
return NULL;
|
||||||
|
direntrys[entrynr - 1].next = NULL;
|
||||||
|
return &direntrys[0];
|
||||||
|
};
|
||||||
|
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
/* $Id: sysfunc.h,v 1.1 2003/05/06 12:09:22 stpohle Exp $ */
|
||||||
|
/* include some system near functions */
|
||||||
|
|
||||||
|
#ifndef _SYSFUNC_H_
|
||||||
|
#define _SYSFUNC_H_
|
||||||
|
|
||||||
|
#define MAX_DIRENTRYS 1024
|
||||||
|
|
||||||
|
enum _dirflags {
|
||||||
|
DF_dir = 1,
|
||||||
|
DF_file = 2
|
||||||
|
};
|
||||||
|
|
||||||
|
struct __direntry {
|
||||||
|
unsigned char flags;
|
||||||
|
char name[LEN_FILENAME];
|
||||||
|
struct __direntry *next;
|
||||||
|
} typedef _direntry;
|
||||||
|
|
||||||
|
extern void s_delay (int ms);
|
||||||
|
extern int s_random (int maxnr);
|
||||||
|
extern char *s_gethomedir ();
|
||||||
|
|
||||||
|
extern _direntry *s_getdir (char *path);
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in new issue