home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
MISC
/
file.lzh
/
file.h
< prev
next >
Wrap
Text File
|
1995-04-27
|
6KB
|
230 lines
/************************************************************************
* file.h *
************************************************************************
* header file for file utility code. *
************************************************************************
* Original code: Scott McGee 4/1/93 (moved from file.c 9/5/93) *
***********************************************************************/
/***********************************************************************
* NOTE: if compiling on a "Little Endian" machine, _LIL_END must be *
* defined to insure correct byte ordering! (This definition is *
* automatic with Microware's Ultra C compiler) *
***********************************************************************/
#include <stdio.h>
#if defined(__ANSI__) || defined(_UCC)
# include <stdlib.h>
#endif
#ifdef _BSD
# include <strings.h>
# include <ctype.h>
# define strrchr rindex
# define strchr index
void *malloc();
char *getenv();
int strspn();
char *strtok();
#else
# include <string.h>
#endif
#include <errno.h>
#ifdef _OSK
# include <dir.h>
# include <modes.h>
# define READ_ONLY S_IREAD
# define swap(a,b) a
# define MAGIC_DEFAULT "/dd/SYS/magic"
#else
# ifdef _OS9000
# include <dir.h>
# include <modes.h>
# define READ_ONLY S_IREAD
# ifdef _LIL_END
# define swap(a,b) byteSwap(a,b)
# else
# define swap(a,b) a
# endif
# define MAGIC_DEFAULT "/dd/SYS/magic"
# else
# include <dirent.h>
# include <fcntl.h>
# include <unistd.h> /* defines SEEK_SET */
# define READ_ONLY O_RDONLY
# ifdef _LIL_END
# define swap(a,b) byteSwap(a,b)
# else
# define swap(a,b) a
# endif
# define MAGIC_DEFAULT "/etc/magic"
# endif
#endif
#ifndef SEEK_BEG
# define SEEK_BEG 0
#endif
#ifndef SEEK_SET
# define SEEK_SET 1
#endif
#ifndef SEEK_END
# define SEEK_END 2
#endif
#define MAXLINELEN 160
#define TRUE 1
#define FALSE 0
#define SUCCESS 1
#define ERROR 0
#define TAR_MAGIC "ustar " /* 7 character (2 spaces) and a null */
#define TAR_MAGIC_OFFSET 257
#define TAR_MAGIC_SIZE 8
#define TAR_REC_SIZE 512
#define TAR_CHKSUM_OFFSET 148
#define TAR_CHKSUM_SIZE 8
#define NOT_TAR 0
#define POSIX_TAR 1
#define OLD_TAR 2
typedef enum MAGIC_TYPE{
BYTE,
SHORT,
BESHORT,
LESHORT,
LONG,
BELONG,
LELONG,
STRING
} MagicType;
typedef enum OP_TYPE{
NONE,
EQUAL,
LESS,
GREATER,
AND,
OR,
ANY
} OpType;
typedef enum FTYPE{
DIRECTORY, /* Directory */
NOSUCHFILE, /* No such file */
UNKNOWN, /* Unknown type */
NOPERMIT, /* Permission denied to read */
EMPTY, /* an empty file */
MISC, /* Unidentified file type */
ASM_SOURCE, /* assembly source code file */
MAKEFILE, /* generic makefile */
TEXT, /* Text file */
C_SOURCE, /* C source file */
C_HEADER, /* C header file */
TAR, /* tar file */
BIN, /* unidentified binary file */
UME /* Ultimuse music file */
} fType;
typedef struct MAGICLIST MagicList;
struct MAGICLIST{
int continuation;
MagicType type;
int maskFlag;
int mask;
OpType op;
unsigned long offset;
unsigned long value;
char *stringValue;
char *message;
MagicList *next;
};
/* partial module structure common to both OS-9 and OS-9000 */
typedef struct modhead {
short sync, /* sync bytes ($4afc) */
sysrev; /* system revision check value */
long size, /* module size */
owner, /* owner id */
name; /* offset to module name */
short access, /* access permission */
tylan, /* type/lang */
attrev, /* rev/attr */
edit; /* edition */
} modhead;
#ifdef __STDC__
# define PROTO
#else
# ifdef _UCC
# define PROTO
# endif
#endif
/* function declarations */
#ifdef PROTO /* prototyping allowed */
/* from readmagic.c */
MagicList *readMagic(char *filename);
MagicList *decodeLine(char *buf);
char *stringDecode(char *str);
/* from file.c */
char *byteSwap(char *buf, int count);
int strucmp(char *str1, char *str2);
int struncmp(char *str1, char *str2, int count);
void readFile(char *filename);
void getFileNames(char *filename);
int checkMagic(char *filename, char *buf, int size);
void dirFiles(char *filename, DIR *dp);
/* from help.c */
void optparse(char *);
void printUsage(void);
void printHelp(void);
void *grab(unsigned int);
char *_prgname(void);
int _errmsg(int, char *, ...);
/* from istar.c */
int istar(char *buf, int size);
#else
/* from readmagic.c */
MagicList *readMagic();
MagicList *decodeLine();
char *stringDecode();
/* from file.c */
char *byteSwap();
int strucmp();
int struncmp();
void readFile();
void getFileNames();
int checkMagic();
void dirFiles();
/* from help.c */
void optparse();
void printUsage();
void printHelp();
void *grab();
char *_prgname();
int _errmsg();
/* from istar.c */
int istar();
#endif
#ifdef MAIN
MagicList *magicList;
char *progname;
char *magic_file;
char *file_path = NULL;
int recursive = FALSE;
int use_stdin = FALSE;
int exec_relative = FALSE;
#else
extern MagicList *magicList;
extern char *progname;
extern char *magic_file;
extern char *file_path;
extern int recursive;
extern int use_stdin;
extern int exec_relative;
#endif