111 lines
4.0 KiB
C
111 lines
4.0 KiB
C
/* utils.h --
|
|
*
|
|
* *********************************************************************
|
|
* * Copyright (C) 1985, 1990 Regents of the University of California. *
|
|
* * Permission to use, copy, modify, and distribute this *
|
|
* * software and its documentation for any purpose and without *
|
|
* * fee is hereby granted, provided that the above copyright *
|
|
* * notice appear in all copies. The University of California *
|
|
* * makes no representations about the suitability of this *
|
|
* * software for any purpose. It is provided "as is" without *
|
|
* * express or implied warranty. Export of this software outside *
|
|
* * of the United States of America may require an export license. *
|
|
* *********************************************************************
|
|
*
|
|
* This file just defines all the features available from the
|
|
* Magic utility routines.
|
|
*/
|
|
|
|
/* rcsid "$Header: /usr/cvsroot/magic-8.0/utils/utils.h,v 1.2 2009/09/10 20:32:55 tim Exp $" */
|
|
|
|
#ifndef _MAGIC__UTILS__UTILS_H
|
|
#define _MAGIC__UTILS__UTILS_H
|
|
|
|
#include "utils/magic.h"
|
|
#include "utils/tech.h"
|
|
|
|
/*
|
|
* Cast second argument to LookupStruct() to (LookupTable *) to
|
|
* make lint very happy.
|
|
*/
|
|
typedef struct
|
|
{
|
|
const char *d_str;
|
|
} LookupTable;
|
|
|
|
/* The following stuff just defines the global routines provided
|
|
* by files other than hash and stack and geometry.
|
|
*/
|
|
|
|
extern int Lookup(const char *str, const char * const *table);
|
|
extern int LookupAny(char, const char * const *);
|
|
extern int LookupFull(const char *, const char * const *);
|
|
extern int LookupStruct(const char *str, const LookupTable *table_start, int size);
|
|
extern int LookupStructFull(const char *str, const char * const *table, int size);
|
|
extern int PaExpand(const char **, char **, int);
|
|
extern char *nextName(const char **ppath, const char *file, char *dest, int size);
|
|
extern FILE *PaOpen(const char *file, const char *mode, const char *ext, const char *path, const char *library,
|
|
char **pRealName);
|
|
extern FILE *PaLockOpen(const char *file, const char *mode, const char *ext, const char *path, const char *library,
|
|
char **pRealName, bool *is_locked, int *fdp);
|
|
extern char *StrDup(char **, const char *);
|
|
extern bool Match(const char *pattern, const char *string);
|
|
extern char *ArgStr(int *pargc, char ***pargv, const char *argType);
|
|
extern bool StrIsWhite(const char *, bool);
|
|
extern bool StrIsInt(const char *);
|
|
extern bool StrIsNumeric(const char *);
|
|
|
|
/* C99 compat */
|
|
extern void PaAppend(char **pathptr, const char *newstring);
|
|
extern void ReduceFraction(int *, int *);
|
|
extern bool TechLoad(char *, SectionID);
|
|
extern void UndoFlush();
|
|
extern int FindGCF();
|
|
extern int GetRect();
|
|
extern void niceabort();
|
|
extern void ShowRect();
|
|
extern void FindDisplay();
|
|
extern void ForkChildAdd();
|
|
extern int PaEnum(const char *path, const char *file, int (*proc)(), ClientData cdata);
|
|
extern int paVisitProcess();
|
|
extern void SetNoisyInt(int *parm, const char *valueS, FILE *file);
|
|
extern void SetNoisyDI(dlong *parm, const char *valueS, FILE *file);
|
|
extern bool ParsSplit();
|
|
|
|
extern int SetNoisyBool(bool *parm, const char *valueS, FILE *file);
|
|
|
|
#ifdef FILE_LOCKS
|
|
extern FILE *flock_open();
|
|
#endif
|
|
|
|
/* The following macro takes an integer and returns another integer that
|
|
* is the same as the first except that all the '1' bits are turned off,
|
|
* except for the rightmost '1' bit.
|
|
*
|
|
* Examples: 01010100 --> 00000100
|
|
* 1111 --> 0001
|
|
* 0111011100 --> 0000000100
|
|
*/
|
|
#define LAST_BIT_OF(x) ((x) & ~((x) - 1))
|
|
|
|
extern float MagAtof(const char *s);
|
|
|
|
extern int Wait(int *status);
|
|
extern int WaitPid(int pid, int *status);
|
|
|
|
|
|
#define FORK_f(pid) do { pid = fork(); if (pid > 0) ForkChildAdd (pid); } while (0)
|
|
#define FORK_vf(pid) do { pid = vfork(); if (pid > 0) ForkChildAdd (pid); } while (0)
|
|
|
|
#if defined(SYSV) || defined(CYGWIN) || defined(__APPLE__)
|
|
|
|
#define FORK(pid) FORK_f(pid)
|
|
|
|
#else
|
|
|
|
#define FORK(pid) FORK_vf(pid)
|
|
|
|
#endif
|
|
|
|
#endif /* _MAGIC__UTILS__UTILS_H */
|