home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 5
/
FreshFish_July-August1994.bin
/
bbs
/
gnu
/
gzip-1.2.4-src.lha
/
src
/
amiga
/
gzip-1.2.4
/
primos
/
primos.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-05-28
|
2KB
|
123 lines
/*
** primos.c
**
** This file contains emulation routines for some common Unix functions
**
** Author: Peter Eriksson <pen@lysator.liu.se>
*/
#ifdef __50SERIES
#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
uid_t primos_uid = 42;
gid_t primos_gid = 42;
mode_t primos_mode = 600;
/* Dummy do-nothing routine for chmod() */
int chmod(path, mode)
char *path;
int mode;
{
return 0;
}
char *getenv(var)
char *var;
{
char buf[256];
extern char *gvget();
buf[0] = '.';
strcpy(buf+1, var);
return gvget(buf);
}
unlink(path)
char *path;
{
return delete(path);
}
int lstat(path, buf)
char *path;
struct stat *buf;
{
return stat(path, buf);
}
int stat(path, buf)
char *path;
struct stat *buf;
{
buf->st_dev = 1;
buf->st_ino = 1;
buf->st_nlink = 1;
buf->st_uid = primos_uid;
buf->st_gid = primos_gid;
buf->st_rdev = 1;
buf->st_blksize = 2048;
buf->st_rwlock = frwlock(path);
switch (buf->st_type = ftype(path))
{
case 0:
case 1:
/* Regular file (SAM or DAM) */
buf->st_size = fsize(path);
buf->st_mtime = fdtm(path);
buf->st_mode = S_IFREG|primos_mode;
break;
case 4:
buf->st_size = 0;
buf->st_mtime = fdtm(path);
buf->st_mode = S_IFDIR|primos_mode;
break;
case -1:
return -1;
default:
buf->st_mode = primos_mode;
buf->st_size = fsize(path);
buf->st_mtime = fdtm(path);
}
buf->st_blocks = (buf->st_size-1) / buf->st_blksize + 1;
/* Should be fixed to really fetch these values, but that
* would require calling some PRIMOS subroutines and I don't have
* a copy of the Primos Subroutine reference manuals here..
*/
buf->st_atime = buf->st_mtime;
buf->st_ctime = buf->st_mtime;
return 0;
}
int fstat(fd, buf)
int fd;
struct stat *buf;
{
char path[1025];
return stat(getname(fd, path), buf);
}
int ascii2pascii(c)
int c;
{
return (c ? (c | 0x80) : '\0');
}
#endif /* __50SERIES */