Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/lib/libast/string/modex.c
1810 views
1
/***********************************************************************
2
* *
3
* This software is part of the ast package *
4
* Copyright (c) 1985-2011 AT&T Intellectual Property *
5
* and is licensed under the *
6
* Eclipse Public License, Version 1.0 *
7
* by AT&T Intellectual Property *
8
* *
9
* A copy of the License is available at *
10
* http://www.eclipse.org/org/documents/epl-v10.html *
11
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
12
* *
13
* Information and Software Systems Research *
14
* AT&T Research *
15
* Florham Park NJ *
16
* *
17
* Glenn Fowler <[email protected]> *
18
* David Korn <[email protected]> *
19
* Phong Vo <[email protected]> *
20
* *
21
***********************************************************************/
22
#pragma prototyped
23
/*
24
* Glenn Fowler
25
* AT&T Bell Laboratories
26
*
27
* mode_t representation support
28
*/
29
30
#include "modelib.h"
31
32
/*
33
* convert internal mode to external
34
*/
35
36
#undef modex
37
38
int
39
modex(register int i)
40
{
41
#if _S_IDPERM && _S_IDTYPE
42
return(i);
43
#else
44
register int x;
45
register int c;
46
47
x = 0;
48
#if _S_IDPERM
49
x |= (i & 07777);
50
#else
51
for (c = 0; c < PERMLEN; c++)
52
if (i & permmap[c++])
53
x |= permmap[c];
54
#endif
55
#if _S_IDTYPE
56
x |= (i & X_IFMT);
57
#else
58
if (S_ISREG(i)) x |= X_IFREG;
59
else if (S_ISDIR(i)) x |= X_IFDIR;
60
#ifdef S_ISLNK
61
else if (S_ISLNK(i)) x |= X_IFLNK;
62
#endif
63
else if (S_ISBLK(i)) x |= X_IFBLK;
64
else if (S_ISCHR(i)) x |= X_IFCHR;
65
#ifdef S_ISCTG
66
else if (S_ISCTG(i)) x |= X_IFCTG;
67
#endif
68
else if (S_ISFIFO(i)) x |= X_IFIFO;
69
#ifdef S_ISSOCK
70
else if (S_ISSOCK(i)) x |= X_IFSOCK;
71
#endif
72
#endif
73
return(x);
74
#endif
75
}
76
77