d9898ee8 |
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 | |
d9898ee8 |
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 | } |