another update from CVS HEAD, for QA
[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.11 2017/12/08 02:00:43 tg Exp $");
15 #endif
16
17 #include <signal.h>
18
19 /*
20  * Functions which return minimum/maximum of two numbers
21  */
22 unsigned int uns_min(unsigned int a, unsigned int b);
23 signed int int_min(signed int a, int signed b);
24 signed long long_max(signed long a, signed long b);
25 signed long long_min(signed long a, signed long b);
26
27 /* Versions of 'read' and 'write' which automatically retry when interrupted */
28 ssize_t joe_read(int fd, void *buf, size_t siz);
29 ssize_t joe_write(int fd, void *buf, size_t siz);
30
31 #ifndef HAVE_SIGHANDLER_T
32 typedef RETSIGTYPE (*sighandler_t)(int);
33 #endif
34
35 #ifdef NEED_TO_REINSTALL_SIGNAL
36 #define REINSTALL_SIGHANDLER(sig, handler) joe_set_signal(sig, handler)
37 #else
38 #define REINSTALL_SIGHANDLER(sig, handler) do {} while(0)
39 #endif
40
41 /* wrapper to hide signal interface differrencies */
42 int joe_set_signal(int signum, sighandler_t handler);
43
44 int parse_ws(unsigned char **p,int cmt);
45 int parse_ident(unsigned char **p,unsigned char *buf,int len);
46 int parse_kw(unsigned char **p,unsigned char *kw);
47 int parse_tows(unsigned char **p,unsigned char *buf);
48 int parse_field(unsigned char **p,unsigned char *field);
49 int parse_char(unsigned char  **p,unsigned char c);
50 int parse_string(unsigned char **p,unsigned char *buf,int len);
51 int parse_range(unsigned char **p,int *first,int *second);
52
53 void tty_xonoffbaudrst(void);
54
55 /* from compat.c */
56
57 #define USTOL_AUTO      0x00
58 #define USTOL_DEC       0x01
59 #define USTOL_HEX       0x02
60 #define USTOL_OCT       0x03
61 #define USTOL_LTRIM     0x04
62 #define USTOL_RTRIM     0x08
63 #define USTOL_TRIM      0x0C
64 #define USTOL_EOS       0x10
65
66 long ustol(void *, void **, int);
67 long ustolb(void *, void **, long, long, int);
68
69 #define USTOC_MAX       4 /* arbitrary, but at least 4 */
70
71 size_t ustoc_hex(const void *, int *, size_t);
72 size_t ustoc_oct(const void *, int *, size_t);
73
74 /* from selinux.c */
75
76 int copy_security_context(const char *, const char *);
77
78 #endif