update from MirBSD CVS
[alioth/jupp.git] / utils.h
1 /*
2  *      Various utilities
3  *
4  *      Copyright
5  *              (C) 1992 Joseph H. Allen
6  *              (C) 2001 Marek 'Marx' Grac
7  *
8  *      This file is part of JOE (Joe's Own Editor)
9  */
10 #ifndef _JOE_UTILS_H
11 #define _JOE_UTILS_H 1
12
13 #ifdef EXTERN_B_C
14 __IDSTRING(rcsid_utils_h, "$MirOS: contrib/code/jupp/utils.h,v 1.8 2017/12/02 17:00:52 tg Exp $");
15 #endif
16
17 #ifdef HAVE_SIGNAL_H
18 #include <signal.h>
19 #endif
20
21 /*
22  * Functions which return minimum/maximum of two numbers
23  */
24 unsigned int uns_min PARAMS((unsigned int a, unsigned int b));
25 signed int int_min PARAMS((signed int a, int signed b));
26 signed long long_max PARAMS((signed long a, signed long b));
27 signed long long_min PARAMS((signed long a, signed long b));
28
29 /* Versions of 'read' and 'write' which automatically retry when interrupted */
30 ssize_t joe_read PARAMS((int fd, void *buf, size_t siz));
31 ssize_t joe_write PARAMS((int fd, void *buf, size_t siz));
32
33 /* wrappers to *alloc routines */
34 #define joe_malloc malloc
35 #define joe_calloc calloc
36 #define joe_realloc realloc
37 #define joe_free free
38
39 #ifndef HAVE_SIGHANDLER_T
40 typedef RETSIGTYPE (*sighandler_t)(int);
41 #endif
42
43 #ifdef NEED_TO_REINSTALL_SIGNAL
44 #define REINSTALL_SIGHANDLER(sig, handler) joe_set_signal(sig, handler)
45 #else
46 #define REINSTALL_SIGHANDLER(sig, handler) do {} while(0)
47 #endif
48
49 /* wrapper to hide signal interface differrencies */
50 int joe_set_signal PARAMS((int signum, sighandler_t handler));
51
52 int parse_ws PARAMS((unsigned char **p,int cmt));
53 int parse_ident PARAMS((unsigned char **p,unsigned char *buf,int len));
54 int parse_kw PARAMS((unsigned char **p,unsigned char *kw));
55 int parse_tows PARAMS((unsigned char **p,unsigned char *buf));
56 int parse_field PARAMS((unsigned char **p,unsigned char *field));
57 int parse_char PARAMS((unsigned char  **p,unsigned char c));
58 int parse_string PARAMS((unsigned char **p,unsigned char *buf,int len));
59 int parse_range PARAMS((unsigned char **p,int *first,int *second));
60
61 void tty_xonoffbaudrst(void);
62
63 /* from compat.c */
64
65 #define USTOL_AUTO      0x00
66 #define USTOL_DEC       0x01
67 #define USTOL_HEX       0x02
68 #define USTOL_OCT       0x03
69 #define USTOL_LTRIM     0x04
70 #define USTOL_RTRIM     0x08
71 #define USTOL_TRIM      0x0C
72 #define USTOL_EOS       0x10
73
74 long ustol(void *, void **, int);
75 long ustolb(void *, void **, long, long, int);
76
77 #define USTOC_MAX       4 /* arbitrary, but at least 4 */
78
79 size_t ustoc_hex(const void *, int *, size_t);
80 size_t ustoc_oct(const void *, int *, size_t);
81
82 #endif