Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/cmd/3d/chmod3d.c
1808 views
1
/***********************************************************************
2
* *
3
* This software is part of the ast package *
4
* Copyright (c) 1989-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
* Eduardo Krell <[email protected]> *
20
* *
21
***********************************************************************/
22
#pragma prototyped
23
24
#if defined(__STDPP__directive) && defined(__STDPP__hide)
25
__STDPP__directive pragma pp:hide chmod
26
#else
27
#define chmod ______chmod
28
#endif
29
#define _def_syscall_3d 1
30
#define _LS_H 1
31
32
#include "3d.h"
33
34
#undef _def_syscall_3d
35
#if defined(__STDPP__directive) && defined(__STDPP__hide)
36
__STDPP__directive pragma pp:nohide chmod
37
#else
38
#undef chmod
39
#endif
40
41
#include "FEATURE/syscall"
42
43
int
44
chmod3d(const char* path, mode_t mode)
45
{
46
register char* sp;
47
register int r;
48
49
#if FS
50
register Mount_t* mp;
51
52
if (!fscall(NiL, MSG_chmod, 0, path, mode))
53
return(state.ret);
54
mp = monitored();
55
#endif
56
if (!(sp = pathreal(path, state.safe ? (P_SAFE|P_TOP) : P_TOP, NiL)))
57
return(-1);
58
r = CHMOD(sp, mode);
59
#if FS
60
if (!r)
61
{
62
if (mp)
63
fscall(mp, MSG_chmod, 0, state.path.name, mode);
64
for (mp = state.global; mp; mp = mp->global)
65
if (fssys(mp, MSG_chmod))
66
fscall(mp, MSG_chmod, 0, state.path.name, mode);
67
}
68
#endif
69
return(r);
70
}
71
72