dab1c217348f826a7336ea71560230e9dff54d82
[platform/core/system/tizen-platform-wrapper.git] / src / foreign.c
1 /*
2  * Copyright (C) 2013 Intel Corporation.
3  * 
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17  *
18  * Authors:
19  *   José Bollo <jose.bollo@open.eurogiciel.org>
20  *   Stéphane Desneux <stephane.desneux@open.eurogiciel.org>
21  *   Jean-Benoit Martin <jean-benoit.martin@open.eurogiciel.org>
22  *
23  */
24 #define _GNU_SOURCE
25
26 #ifdef HAVE_CONFIG_H
27 # include "config.h"
28 #endif
29
30 #include <stdlib.h>
31
32 #include "foreign.h"
33
34 enum fkey foreign( const char *name, size_t length)
35 {
36     if (length == 3) { /* UID */
37         if (name[1]=='I' && name[2]=='D')
38             switch (name[0]) {
39 #if _FOREIGN_HAS_(UID)
40             case 'G': /* GID */ return GID;
41 #endif
42 #if _FOREIGN_HAS_(GID)
43             case 'U': /* UID */ return UID;
44 #endif
45             default: break;
46             }
47     }
48     else if (length == 4) {
49         switch (name[0]) {
50 #if _FOREIGN_HAS_(HOME)
51         case 'H': /* HOME */
52             if (name[1]=='O' && name[2]=='M' && name[3]=='E')
53                 return HOME;
54             break;
55 #endif
56 #if _FOREIGN_HAS_(EUID)
57         case 'E': /* EUID */
58             if (name[1]=='U' && name[2]=='I' && name[3]=='D')
59                 return EUID;
60             break;
61 #endif
62 #if _FOREIGN_HAS_(USER)
63         case 'U': /* USER */
64             if (name[1]=='S' && name[2]=='E' && name[3]=='R')
65                 return USER;
66             break;
67 #endif
68         default: break;
69         }
70     }
71     else if (length == 5 && name[0]=='E') {
72         switch (name[1]) {
73 #if _FOREIGN_HAS_(EHOME)
74         case 'H': /* EHOME */
75             if (name[2]=='O' && name[3]=='M' && name[4]=='E')
76                 return EHOME;
77             break;
78 #endif
79 #if _FOREIGN_HAS_(EUSER)
80         case 'U': /* EUSER */
81             if (name[2]=='S' && name[3]=='E' && name[4]=='R')
82                 return EUSER;
83             break;
84 #endif
85         default: break;
86         }
87     }
88     return _FOREIGN_INVALID_;
89 }
90