jessie rebuild
[hcoop/debian/courier-authlib.git] / authinfo.c
1 /*
2 ** Copyright 2004 Double Precision, Inc. See COPYING for
3 ** distribution information.
4 */
5
6 #include "courier_auth_config.h"
7 #include "auth.h"
8 #include "pkglibdir.h"
9 #include "pkgincludedir.h"
10 #include "authdaemonrc.h"
11 #include "authldaprc.h"
12 #include "authmysqlrc.h"
13 #include "authpgsqlrc.h"
14 #include "sbindir.h"
15 #include "mailusergroup.h"
16 #include "packageversion.h"
17
18 #include <stdio.h>
19 #include <stdlib.h>
20 #include <string.h>
21 #include <pwd.h>
22 #include <grp.h>
23
24
25 static int getmuid()
26 {
27 struct passwd *pw=getpwnam(MAILUSER);
28
29 if (pw == NULL)
30 {
31 perror("Cannot obtain information for user " MAILUSER);
32 exit(1);
33 }
34
35 return (pw->pw_uid);
36 }
37
38 static int getmgid()
39 {
40 struct group *gr=getgrnam(MAILGROUP);
41
42 if (gr == NULL)
43 {
44 perror("Cannot obtain information for groupid " MAILGROUP);
45 exit(1);
46 }
47
48 return (gr->gr_gid);
49 }
50
51 static unsigned getver(const char **a)
52 {
53 unsigned n=0;
54 static const char dig[]="0123456789";
55 static const char *p;
56
57 while (**a)
58 {
59 if (**a == '.')
60 {
61 ++*a;
62 break;
63 }
64
65 if ((p=strchr(dig, **a)) != NULL)
66 n=n*10 + p-dig;
67
68 ++*a;
69 }
70 return n;
71 }
72
73 static int versioncmp(const char *a, const char *b)
74 {
75 while (*a && *b)
76 {
77 unsigned va=getver(&a);
78 unsigned vb=getver(&b);
79
80 if (va < vb)
81 return -1;
82 if (va > vb)
83 return 1;
84 }
85 return 0;
86 }
87
88 int main(int argc, char **argv)
89 {
90 int n;
91
92 for (n=1; n<argc; n++)
93 {
94 if (strcmp(argv[n], "--version") == 0)
95 {
96 printf("%s\n", PKGVERSION);
97 }
98
99 if (strncmp(argv[n], "--version=", 10) == 0)
100 {
101 printf("%s\n",
102 versioncmp(argv[n]+10, PKGVERSION) <= 0
103 ? "yes":"no");
104 }
105
106 if (strcmp(argv[n], "--ldflags") == 0)
107 {
108 printf("-L%s\n",
109 PKGLIBDIR);
110 }
111 if (strcmp(argv[n], "--cppflags") == 0)
112 {
113 #if HAVE_NOSTDHEADERDIR
114 printf("-I%s\n", PKGINCLUDEDIR);
115 #endif
116 ;
117 }
118 if (strcmp(argv[n], "--configfiles") == 0)
119 {
120 printf("userdb=%s\n"
121 "authdaemonrc=%s\n"
122 "authldaprc=%s\n"
123 "authmysqlrc=%s\n"
124 "authpgsqlrc=%s\n"
125 "mailuser=%s\n"
126 "mailgroup=%s\n"
127 "mailuid=%d\n"
128 "mailgid=%d\n"
129 "sbindir=%s\n",
130 USERDB,
131 AUTHDAEMONRC,
132 AUTHLDAPRC,
133 AUTHMYSQLRC,
134 AUTHPGSQLRC,
135 MAILUSER,
136 MAILGROUP,
137 getmuid(),
138 getmgid(),
139 SBINDIR);
140 }
141 }
142 return (0);
143 }