diff options
author | LaMont Jones <lamont@debian.org> | 2003-05-07 08:36:40 -0600 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2017-02-20 00:05:27 -0800 |
commit | e21d47d7813159bb71e0671df9b52ec0470c358d (patch) | |
tree | 3c7770ea846123c291f599044e9f234ac17616bb /posix.c | |
parent | 8cfce36c6a4fc2e0a0ab6ef2db66a23cbe462693 (diff) | |
parent | deda2c0fd8689349fea2a900199a76ff7ecb319e (diff) | |
download | scm-e21d47d7813159bb71e0671df9b52ec0470c358d.tar.gz scm-e21d47d7813159bb71e0671df9b52ec0470c358d.zip |
Import Debian changes 5d6-3.2debian/5d6-3.2
scm (5d6-3.2) unstable; urgency=low
* Fix hppa compile. Closes: #144062
scm (5d6-3.1) unstable; urgency=low
* NMU with patch from James Troup, to fix FTBFS on sparc. Closes: #191171
scm (5d6-3) unstable; urgency=low
* Add build depend on xlibs-dev (Closes: #148020)
scm (5d6-2) unstable; urgency=low
* Remove libregexx-dev from build-depends.
* Change build to use ./scmlit rather than scmlit (should fix some build
problems) (looks like alpha is mostly building)
* New release (Closes: #140175)
* Built with turtlegraphics last time (Closes: #58515)
scm (5d6-1) unstable; urgency=low
* New upstream.
* Add xlib and turtlegr to requested list of features. (closes
some bug)
* Make clean actually clean most everything up.
* Remove hacks renaming build to something else and just set build as a
.PHONY target in debian/rules.
* Add the turtlegr code.
scm (5d5-1) unstable; urgency=low
* New upstream
* Has fixes for 64 bit archs. May fix alpha compile problem. Does fix
(Closes: #140175)
* Take out -O2 arg.
scm (5d4-3) unstable; urgency=low
* Don't link with regexx, but just use libc6's regular expression
functions.
* Define (terms) to output /usr/share/common-licenses/GPL (Closes:
#119321)
scm (5d4-2) unstable; urgency=low
* Add texinfo to build depends (Closes: #107011)
scm (5d4-1) unstable; urgency=low
* New upstream release.
* Move install-info --remove to prerm.
scm (5d3-5) unstable; urgency=low
* Move scm info files to section "The Algorithmic Language Scheme" to
match up with guile.
scm (5d3-4) unstable; urgency=low
* Fix build depends (Closes: #76691)
scm (5d3-3) unstable; urgency=low
* Fix path in scm dhelp file.
scm (5d3-2) unstable; urgency=low
* Actually put the header files in the package. Oops.
scm (5d3-1) unstable; urgency=low
* New upstream. (Closes: #74761)
* Make (terms) use new license location.
* Make use libregexx rather than librx.
* Fix build depends for above.
* Using new regex lib seems to fix crash (Closes: #66787)
* Consider adding scm-dev package with headers, but instead just add the
headers to the scm package. (Closes: #70787)
* Add doc-base support.
Diffstat (limited to 'posix.c')
-rw-r--r-- | posix.c | 53 |
1 files changed, 29 insertions, 24 deletions
@@ -15,26 +15,26 @@ * the Free Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111, USA. * * As a special exception, the Free Software Foundation gives permission - * for additional uses of the text contained in its release of GUILE. + * for additional uses of the text contained in its release of SCM. * - * The exception is that, if you link the GUILE library with other files + * The exception is that, if you link the SCM library with other files * to produce an executable, this does not by itself cause the * resulting executable to be covered by the GNU General Public License. * Your use of that executable is in no way restricted on account of - * linking the GUILE library code into it. + * linking the SCM library code into it. * * This exception does not however invalidate any other reasons why * the executable file might be covered by the GNU General Public License. * * This exception applies only to the code released by the - * Free Software Foundation under the name GUILE. If you copy + * Free Software Foundation under the name SCM. If you copy * code from other Free Software Foundation releases into a copy of - * GUILE, as the General Public License permits, the exception does + * SCM, as the General Public License permits, the exception does * not apply to the code that you add in this way. To avoid misleading * anyone as to the status of such modified files, you must delete * this exception notice from them. * - * If you write modifications of your own for GUILE, it is your choice + * If you write modifications of your own for SCM, it is your choice * whether to permit this exception to apply to your modifications. * If you do not wish that, delete this exception notice. */ @@ -60,11 +60,14 @@ # else # ifdef linux # include <unistd.h> +# else +# ifdef __OpenBSD__ +# include <unistd.h> +# endif # endif # endif #endif - /* Only the superuser can successfully execute this call */ static char s_chown[] = "chown"; SCM l_chown(path, owner, group) SCM path, owner, group; @@ -94,6 +97,7 @@ SCM l_pipe() FILE *f_rd, *f_wt; SCM p_rd, p_wt; NEWCELL(p_rd); NEWCELL(p_wt); + DEFER_INTS; SYSCALL(ret = pipe(fd);); if (ret) {ALLOW_INTS; return BOOL_F;} SYSCALL(f_rd = fdopen(fd[0], "r");); @@ -108,10 +112,8 @@ SCM l_pipe() close(fd[1]); wta(UNDEFINED, (char *)NALLOC, s_port_type); } - CAR(p_rd) = scm_port_entry(tc16_fport, mode_bits("r", (char *)0)); - CAR(p_wt) = scm_port_entry(tc16_fport, mode_bits("w", (char *)0)); - SETSTREAM(p_rd, f_rd); - SETSTREAM(p_wt, f_wt); + p_rd = scm_port_entry(f_rd, tc16_fport, mode_bits("r", (char *)0)); + p_wt = scm_port_entry(f_wt, tc16_fport, mode_bits("w", (char *)0)); ALLOW_INTS; return cons(p_rd, p_wt); } @@ -123,24 +125,18 @@ SCM open_pipe(pipestr, modes) FILE *f; register SCM z; ASSERT(NIMP(pipestr) && STRINGP(pipestr), pipestr, ARG1, s_op_pipe); - ASSERT(NIMP(modes) && STRINGP(modes), modes, ARG2, s_op_pipe); + ASSERT(NIMP(modes) && (STRINGP(modes) || SYMBOLP(modes)), modes, ARG2, s_op_pipe); NEWCELL(z); /* DEFER_INTS, SYSCALL, and ALLOW_INTS are probably paranoid here*/ DEFER_INTS; ignore_signals(); SCM_OPENCALL(f = popen(CHARS(pipestr), CHARS(modes))); unignore_signals(); - if (!f) { - ALLOW_INTS; - return BOOL_F; - } - else { - CAR(z) = scm_port_entry(tc16_pipe, - OPN | (strchr(CHARS(modes), 'r') ? RDNG : WRTNG)); - SETSTREAM(z, f); - } + z = f ? + scm_port_entry(f, tc16_pipe, + OPN | (strchr(CHARS(modes), 'r') ? RDNG : WRTNG)) : + BOOL_F; ALLOW_INTS; - SCM_PORTDATA(z) = pipestr; return z; } @@ -156,8 +152,9 @@ SCM scm_getgroups() strings are now checked for null termination during gc. The length needs not be exactly right */ grps = must_malloc_cell((0L + ngroups) * sizeof(gid_t), - MAKE_LENGTH(((0L + ngroups) * sizeof(gid_t))/sizeof(long), tc7_uvect), - scm_s_getgroups); + MAKE_LENGTH(((0L + ngroups) * sizeof(gid_t))/sizeof(long), + tc7_uvect), + scm_s_getgroups); ALLOW_INTS; { gid_t *groups = (gid_t *)CHARS(grps); @@ -261,6 +258,10 @@ SCM l_getppid() return MAKINUM(0L+getppid()); } +SCM scm_getlogin() +{ + return makfrom0str(getlogin()); +} SCM l_getuid() { return MAKINUM(0L+getuid()); @@ -350,6 +351,7 @@ static iproc subr0s[] = { {"pipe", l_pipe}, {scm_s_getgroups, scm_getgroups}, {"getppid", l_getppid}, + {"getlogin", scm_getlogin}, {"getuid", l_getuid}, {"getgid", l_getgid}, #ifndef LACK_E_IDs @@ -403,5 +405,8 @@ void init_posix() scm_ldstr("\n\ (define (open-input-pipe cmd) (open-pipe cmd \"r\"))\n\ (define (open-output-pipe cmd) (open-pipe cmd \"w\"))\n\ +(define getlogin\n\ + (let ((getlogin getlogin))\n\ + (lambda () (or (getlogin) (getenv \"USER\") (getenv \"LOGNAME\")))))\n\ "); } |