89 lines
1.5 KiB
C
89 lines
1.5 KiB
C
/* $Id: d_io.c,v 1.8 2004-05-19 02:20:34 btb Exp $ */
|
|
/*
|
|
* some misc. file/disk routines
|
|
* Arne de Bruijn, 1998
|
|
*/
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include <conf.h>
|
|
#endif
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include "d_io.h"
|
|
#ifdef __DJGPP__
|
|
#include "dos_disk.h"
|
|
#endif
|
|
//added 05/17/99 Matt Mueller
|
|
#include "u_mem.h"
|
|
//end addition -MM
|
|
|
|
#if defined(_WIN32) && !defined(_WIN32_WCE)
|
|
#include <windows.h>
|
|
#define lseek(a,b,c) _lseek(a,b,c)
|
|
#endif
|
|
|
|
#if 0
|
|
long filelength(int fd) {
|
|
long old_pos, size;
|
|
|
|
if ((old_pos = lseek(fd, 0, SEEK_CUR)) == -1 ||
|
|
(size = lseek(fd, 0, SEEK_END)) == -1 ||
|
|
(lseek(fd, old_pos, SEEK_SET)) == -1)
|
|
return -1L;
|
|
return size;
|
|
}
|
|
#endif
|
|
|
|
long ffilelength(FILE *file)
|
|
{
|
|
long old_pos, size;
|
|
|
|
if ((old_pos = ftell(file)) == -1 ||
|
|
fseek(file, 0, SEEK_END) == -1 ||
|
|
(size = ftell(file)) == -1 ||
|
|
fseek(file, old_pos, SEEK_SET) == -1)
|
|
return -1L;
|
|
return size;
|
|
}
|
|
|
|
|
|
unsigned long d_getdiskfree()
|
|
{
|
|
#ifdef __MSDOS__
|
|
return getdiskfree();
|
|
#else
|
|
#if 0//def __WINDOWS__
|
|
DWORD cbCluster = 0;
|
|
DWORD cClusters = 0;
|
|
|
|
GetDiskFreeSpace (
|
|
NULL,
|
|
&cbCluster,
|
|
NULL,
|
|
&cClusters,
|
|
NULL);
|
|
|
|
return cbCluster * cClusters;
|
|
#else
|
|
// FIXME:
|
|
return 999999999;
|
|
#endif
|
|
#endif
|
|
}
|
|
|
|
unsigned long GetDiskFree()
|
|
{
|
|
return d_getdiskfree();
|
|
}
|
|
|
|
// remove extension from filename, doesn't work with paths.
|
|
void removeext(const char *filename, char *out) {
|
|
char *p;
|
|
if ((p = strrchr(filename, '.'))) {
|
|
strncpy(out, filename, p - filename);
|
|
out[p - filename] = 0;
|
|
} else
|
|
strcpy(out, filename);
|
|
}
|