diff options
author | James LewisMoss <dres@debian.org> | 2000-03-12 09:04:17 -0500 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2017-02-20 00:05:26 -0800 |
commit | 8cfce36c6a4fc2e0a0ab6ef2db66a23cbe462693 (patch) | |
tree | 17427e4f777ca85990a449fe939fbae29770b346 /posix.c | |
parent | a47af30d2f0e96afcd1f14b1984575c359faa3d6 (diff) | |
parent | 3278b75942bdbe706f7a0fba87729bb1e935b68b (diff) | |
download | scm-8cfce36c6a4fc2e0a0ab6ef2db66a23cbe462693.tar.gz scm-8cfce36c6a4fc2e0a0ab6ef2db66a23cbe462693.zip |
Import Debian changes 5d2-3debian/5d2-3
scm (5d2-3) unstable frozen; urgency=low
* Fix libncurses4-dev -> libncurses5-dev build depend (Closes: #58435)
* Fix libreadline2-dev -> libreadline4-dev build depend.
* Fix license location in copyright file (lintian warning)
* Add tetex-bin as a build depend (needs makeinfo) (Closes: #53197)
* Add -isp option to dpkg-gencontrol (lintian error)
* Move scm to section interpreters.
scm (5d2-2) unstable; urgency=low
* Apply patch from upstream for bug in eval.c. (Picked up from
comp.lang.scheme)
* Add Build-Depends on slib, librx1g-dev, libncurses4-dev, libreadlineg2-dev.
* Up standards version.
* Correct description: this is an R5RS implementation now
* Make sure no optimizations are done on m68k. (Closes: #52434)
scm (5d2-1) unstable; urgency=low
* New upstream.
scm (5d1-2) unstable; urgency=low
* Remove TAGS on clean (cut the diff back down to reasonable size).
scm (5d1-1) unstable; urgency=low
* New upstream.
* move stuff to /usr/share.
scm (5d0-3) unstable; urgency=low
* Change scmlit call to ./scmlit call (missed one) (Fixes bugs #37455
and #35545)
* Change man file permissions to 644 (fixes lintian warning)
scm (5d0-2) unstable; urgency=low
* Removed call to add_final in init_crs. lendwin doesn't do anything
and scm was crashing when quit everytime in final_scm.
* Changed copyright to reflect new source.
scm (5d0-1) unstable; urgency=low
* New upstream.
* Changed (terms) to access "/usr/doc/copyright/GPL".
* Changed regex to use -lrx
scm (5c3-6) unstable; urgency=low
* New maintainer.
Diffstat (limited to 'posix.c')
-rw-r--r-- | posix.c | 48 |
1 files changed, 24 insertions, 24 deletions
@@ -1,18 +1,18 @@ /* Copyright (C) 1994, 1995, 1998 Free Software Foundation, Inc. - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * 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. @@ -36,7 +36,7 @@ * * If you write modifications of your own for GUILE, it is your choice * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. + * If you do not wish that, delete this exception notice. */ /* "posix.c" functions only in Posix (unix). @@ -101,15 +101,15 @@ SCM l_pipe() close(fd[0]); goto errout; } - SYSCALL(f_wt = fdopen(fd[1], "w");); + SCM_OPENCALL(f_wt = fdopen(fd[1], "w")); if (!f_wt) { fclose(f_rd); errout: close(fd[1]); wta(UNDEFINED, (char *)NALLOC, s_port_type); } - CAR(p_rd) = tc16_fport | mode_bits("r"); - CAR(p_wt) = tc16_fport | mode_bits("w"); + 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); ALLOW_INTS; @@ -128,22 +128,21 @@ SCM open_pipe(pipestr, modes) /* DEFER_INTS, SYSCALL, and ALLOW_INTS are probably paranoid here*/ DEFER_INTS; ignore_signals(); - SYSCALL(f = popen(CHARS(pipestr), CHARS(modes));); + SCM_OPENCALL(f = popen(CHARS(pipestr), CHARS(modes))); unignore_signals(); - if (!f) z = BOOL_F; + if (!f) { + ALLOW_INTS; + return BOOL_F; + } else { - CAR(z) = tc16_pipe | OPN | (strchr(CHARS(modes), 'r') ? RDNG : WRTNG); + CAR(z) = scm_port_entry(tc16_pipe, + OPN | (strchr(CHARS(modes), 'r') ? RDNG : WRTNG)); SETSTREAM(z, f); } ALLOW_INTS; + SCM_PORTDATA(z) = pipestr; return z; } -static int prinpipe(exp, port, writing) - SCM exp; SCM port; int writing; -{ - prinport(exp, port, s_pipe); - return !0; -} static char scm_s_getgroups[] = "getgroups"; SCM scm_getgroups() @@ -151,13 +150,14 @@ SCM scm_getgroups() SCM grps, ans; int ngroups = getgroups(0, 0); if (!ngroups) return BOOL_F; - NEWCELL(grps); + scm_protect_temp(&grps); DEFER_INTS; /* grps is used as a gc protect, its type used to be tc7_string, but - strings are now checked for null termination during gc. */ - grps = must_malloc_cell(ngroups * sizeof(gid_t), scm_s_getgroups); - /* length need not be exactly right */ - SETLENGTH(grps, (0L + ngroups * sizeof(gid_t))/sizeof(long), tc7_uvect); + 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); ALLOW_INTS; { gid_t *groups = (gid_t *)CHARS(grps); @@ -167,7 +167,7 @@ SCM scm_getgroups() while (--ngroups >= 0) VELTS(ans)[ngroups] = MAKINUM(groups[ngroups]); return ans; } -} +} /* These 2 routines are not protected against `entry' being reused before access to that structure is completed */ @@ -396,9 +396,9 @@ void init_posix() init_iprocs(subr2s, tc7_subr_2); init_iprocs(subr3s, tc7_subr_3); add_feature("posix"); + ptobs[0x0ff & (tc16_pipe>>8)].name = s_pipe; ptobs[0x0ff & (tc16_pipe>>8)].fclose = pclose; ptobs[0x0ff & (tc16_pipe>>8)].free = pclose; - ptobs[0x0ff & (tc16_pipe>>8)].print = prinpipe; add_feature(s_pipe); scm_ldstr("\n\ (define (open-input-pipe cmd) (open-pipe cmd \"r\"))\n\ |