mknod3d.c revision 3f54fd611f536639ec30dd53c48e5ec1897cc7d9
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder/***********************************************************************
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* This software is part of the ast package *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* Copyright (c) 1989-2011 AT&T Intellectual Property *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* and is licensed under the *
98890889ffb2e8f6f722b00e265a211f13b5a861Corneliu-Claudiu Prodescu* Eclipse Public License, Version 1.0 *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* by AT&T Intellectual Property *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* A copy of the License is available at *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* http://www.eclipse.org/org/documents/epl-v10.html *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly* *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* Information and Software Systems Research *
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly* AT&T Research *
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly* Florham Park NJ *
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly* *
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder* Glenn Fowler <gsf@research.att.com> *
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder* David Korn <dgk@research.att.com> *
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly* Eduardo Krell <ekrell@adexus.cl> *
56899f6457976a2ee20f6a23f088cb5655b15715Liam O'Reilly* *
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly***********************************************************************/
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly#pragma prototyped
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#if defined(__STDPP__directive) && defined(__STDPP__hide)
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder__STDPP__directive pragma pp:hide mknod
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder#else
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#define mknod ______mknod
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder#endif
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly#define _def_syscall_3d 1
c0833539c8cf577dd3f2497792fbdd818442744cChristian Maeder#define _LS_H 1
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly#include "3d.h"
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly#undef _def_syscall_3d
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#if defined(__STDPP__directive) && defined(__STDPP__hide)
036ecbd8f721096321f47cf6a354a9d1bf3d032fChristian Maeder__STDPP__directive pragma pp:nohide mknod
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#else
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#undef mknod
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly#endif
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly#include "FEATURE/syscall"
53bd0c89aa4743dc41a6394db5a90717c1ca4517Liam O'Reilly
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly#ifdef mknod3d
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly
648fe1220044aac847acbdfbc4155af5556063ebChristian Maederint
648fe1220044aac847acbdfbc4155af5556063ebChristian Maedermknod3d(const char* path, mode_t mode, dev_t dev)
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder{
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder register char* sp;
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#if FS
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder Mount_t* mp;
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder if (!fscall(NiL, MSG_mknod, 0, path, mode, dev))
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder return(state.ret);
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder mp = monitored();
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#endif
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder if (!(sp = pathreal(path, P_PATHONLY, NiL)) || MKNOD(sp, mode, dev))
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder return(-1);
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder#if FS
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder if (mp && !STAT(sp, &state.path.st))
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly fscall(mp, MSG_mknod, 0, path, state.path.st.st_mode, dev);
9aeda2b3ae8ce0b018955521e4ca835a8ba8a27bLiam O'Reilly for (mp = state.global; mp; mp = mp->global)
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly if (fssys(mp, MSG_mknod))
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder fscall(mp, MSG_mknod, 0, path, mode, dev);
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#endif
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder return(0);
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder}
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder
648fe1220044aac847acbdfbc4155af5556063ebChristian Maeder#else
33bdce26495121cdbce30331ef90a1969126a840Liam O'Reilly
33bdce26495121cdbce30331ef90a1969126a840Liam O'ReillyNoN(mknod)
fa373bc327620e08861294716b4454be8d25669fChristian Maeder
fa373bc327620e08861294716b4454be8d25669fChristian Maeder#endif
fa373bc327620e08861294716b4454be8d25669fChristian Maeder