Fix some indenting
[public/pos.git] / database / nameserver.cpp
1 #include "nameserver.h"
2 #include <iostream>
3 #include <pwd.h>
4
5 std::string NameServer::get_name (uint32_t id) {
6   std::map<std::string, uint32_t>::iterator it;
7   for(it = cache.begin(); it != cache.end(); it++) {
8     if(it->second == id) return it->first;
9   }
10   struct passwd* pwd = getpwuid(id);
11   if (!pwd) {
12     return "???";
13   }
14   cache[pwd->pw_name] = id;
15   std::cerr << "Did reverse LDAP lookup on " << pwd->pw_name << "\n";
16   return pwd->pw_name;
17 }
18
19 uint32_t NameServer::get_id (std::string name) {
20   std::map<std::string, uint32_t>::iterator it = cache.find(name);
21
22   if(it != cache.end())
23     return it->second;
24
25   std::cerr << "Doing LDAP lookup for \"" << name << "\".\n";
26   struct passwd* pwd = getpwnam(name.c_str());
27   if(!pwd) {
28     // TODO: oh fuck???
29     return 0;
30   }
31
32   cache[name] = pwd->pw_uid;
33   return cache[name];
34 }
35
36 NameServer ns;