openafs: Improved calling of get-token script
[hcoop/debian/courier-authlib.git] / authinfo.c
CommitLineData
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
25static 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
38static 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
51static 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
73static 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
88int 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}