Remove wheel submodule - will re-add later with new URL
[dmon:dmon.git] / util.h
1 /*
2  * util.h
3  * Copyright (C) 2010 Adrian Perez <aperez@igalia.com>
4  *
5  * Distributed under terms of the MIT license.
6  */
7
8 #ifndef __util_h__
9 #define __util_h__
10
11 #include "wheel.h"
12 #include <sys/types.h>
13 #define DMON_GID_COUNT 76
14
15 struct uidgid_s {
16     uid_t    uid;
17     gid_t    gid;
18     unsigned ngid;
19     gid_t    gids[DMON_GID_COUNT];
20 };
21 typedef struct uidgid_s uidgid_t;
22
23 #define UIDGID { 0, 0, 0, {0} }
24
25 /* Forward declaration */
26 struct sigaction;
27
28 /* uid[:gid[:gid...]] */
29 int parse_uidgids (char*, uidgid_t*);
30
31 int name_to_uidgid (const char*, uid_t*, gid_t*);
32 int name_to_gid (const char*, gid_t*);
33
34 void fd_cloexec (int);
35 void become_daemon (void);
36 void safe_sleep (unsigned);
37 void safe_sigaction (const char*, int, struct sigaction*);
38 void safe_setrlimit (int what, long value);
39 int  interruptible_sleep (unsigned);
40 const char* limit_name (int);
41
42 int parse_limit_arg (const char *str, int *what, long *value);
43
44 wbool time_period_to_seconds (const char         *str,
45                               unsigned long long *result);
46 wbool storage_size_to_bytes  (const char         *str,
47                               unsigned long long *result);
48
49 w_opt_status_t time_period_option  (const w_opt_context_t *ctx);
50 w_opt_status_t storage_size_option (const w_opt_context_t *ctx);
51
52 int replace_args_string (const char *str,
53                          int        *argc,
54                          char     ***argv);
55
56 void replace_args_shift (unsigned    amount,
57                          int        *pargc,
58                          char     ***pargv);
59
60 #endif /* !__util_h__ */
61
62 /* vim: expandtab shiftwidth=4 tabstop=4
63  */