From af863f8c7f1f1571df4f1172ec4e963fa654945e Mon Sep 17 00:00:00 2001 From: Ali Polatel Date: Wed, 26 May 2010 10:09:47 +0300 Subject: notmuch-deliver: Initial import --- contrib/notmuch-deliver/numlib/numlib.h | 97 +++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 contrib/notmuch-deliver/numlib/numlib.h (limited to 'contrib/notmuch-deliver/numlib/numlib.h') diff --git a/contrib/notmuch-deliver/numlib/numlib.h b/contrib/notmuch-deliver/numlib/numlib.h new file mode 100644 index 0000000..3ed81ee --- /dev/null +++ b/contrib/notmuch-deliver/numlib/numlib.h @@ -0,0 +1,97 @@ +#ifndef numlib_h +#define numlib_h + +/* +** Copyright 1998 - 2003 Double Precision, Inc. +** See COPYING for distribution information. +*/ + +#ifdef __cplusplus +extern "C" { +#endif + +static const char numlib_h_rcsid[]="$Id: numlib.h,v 1.10 2004/01/11 02:47:33 mrsam Exp $"; + +#ifdef HAVE_CONFIG_H +#include "config.h" /* VPATH build */ +#endif + +#include +#include + +#define NUMBUFSIZE 60 + +/* Convert various system types to decimal */ + +char *libmail_str_time_t(time_t, char *); +char *libmail_str_off_t(off_t, char *); +char *libmail_str_pid_t(pid_t, char *); +char *libmail_str_dev_t(dev_t, char *); +char *libmail_str_ino_t(ino_t, char *); +char *libmail_str_uid_t(uid_t, char *); +char *libmail_str_gid_t(gid_t, char *); +char *libmail_str_size_t(size_t, char *); + +char *libmail_str_sizekb(unsigned long, char *); /* X Kb or X Mb */ + +/* Convert selected system types to hex */ + +char *libmail_strh_time_t(time_t, char *); +char *libmail_strh_pid_t(pid_t, char *); +char *libmail_strh_ino_t(ino_t, char *); +char *libmail_strh_dev_t(dev_t, char *); + +/* And, now let's do the reverse */ + +time_t libmail_strtotime_t(const char **); +time_t libmail_atotime_t(const char *); + +uid_t libmail_strtouid_t(const char **); +uid_t libmail_atouid_t(const char *); + +gid_t libmail_strtogid_t(const char **); +gid_t libmail_atogid_t(const char *); + + /* Common macros: */ + +#define LIBMAIL_STRIMPL(type, f1, f2) \ +\ +type f1(const char **p)\ +{\ + type n=0;\ + while ( **p >= '0' && **p <= '9') n=n*10 + (char)(*(*p)++ - '0');\ + return n;\ +}\ +\ +type f2(const char *p)\ +{\ + return f1(&p);\ +} + + +/* +** The following functions are used by root to reset its user and group id +** to the authenticated user's. Various functions are provided to handle +** various situations. +*/ + +void libmail_changegroup(gid_t); /* Set the group id only. Also clear any + ** auxiliary group ids */ + +void libmail_changeuidgid(uid_t, gid_t); + /* Set both user id and group id. Also clear + ** aux group ids */ + +void libmail_changeusername(const char *, const gid_t *); + /* + ** Set the userid to the indicate user's. If second argument is + ** not null, it points to the groupid to set. If it's null, the + ** group id is taken from the passwd file. Auxiliary IDs are set + ** to any aux IDs set for the user in the group file. If there are + ** no aux group IDs for the user, any AUX ids are cleared. + */ + +#ifdef __cplusplus +} +#endif +#endif -- cgit v1.2.3