X-Git-Url: http://git.hcoop.net/bpt/guile.git/blobdiff_plain/08224c56fa735612fa6b33533c927c9c3eaf8d3d..f4af36aca47f7d0653b997986e8be9894bbd87ff:/libguile/posix.c diff --git a/libguile/posix.c b/libguile/posix.c index 0443f95ea..494df1e0c 100644 --- a/libguile/posix.c +++ b/libguile/posix.c @@ -1,5 +1,6 @@ /* Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - * 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. + * 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, + * 2014 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -46,9 +47,7 @@ # endif #endif -#ifdef HAVE_UNISTD_H #include -#endif #ifdef LIBC_H_WITH_UNISTD_H #include @@ -1347,23 +1346,21 @@ scm_open_process (SCM mode, SCM prog, SCM args) SCM read_port = SCM_BOOL_F, write_port = SCM_BOOL_F; /* There is no sense in catching errors on close(). */ - if (reading) + if (reading) { close (c2p[1]); - read_port = scm_fdes_to_port (c2p[0], "r", sym_read_pipe); - scm_setvbuf (read_port, scm_from_int (_IONBF), SCM_UNDEFINED); + read_port = scm_fdes_to_port (c2p[0], "r0", sym_read_pipe); } if (writing) { close (p2c[0]); - write_port = scm_fdes_to_port (p2c[1], "w", sym_write_pipe); - scm_setvbuf (write_port, scm_from_int (_IONBF), SCM_UNDEFINED); + write_port = scm_fdes_to_port (p2c[1], "w0", sym_write_pipe); } - + return scm_values (scm_list_3 (read_port, write_port, scm_from_int (pid))); } - + /* The child. */ if (reading) close (c2p[0]); @@ -1983,9 +1980,9 @@ cpu_set_to_bitvector (const cpu_set_t *cs) SCM bv; size_t cpu; - bv = scm_c_make_bitvector (sizeof (*cs), SCM_BOOL_F); + bv = scm_c_make_bitvector (CPU_SETSIZE, SCM_BOOL_F); - for (cpu = 0; cpu < sizeof (*cs); cpu++) + for (cpu = 0; cpu < CPU_SETSIZE; cpu++) { if (CPU_ISSET (cpu, cs)) /* XXX: This is inefficient but avoids code duplication. */ @@ -2251,6 +2248,12 @@ void scm_init_posix () { scm_add_feature ("posix"); +#ifdef EXIT_SUCCESS + scm_c_define ("EXIT_SUCCESS", scm_from_int (EXIT_SUCCESS)); +#endif +#ifdef EXIT_FAILURE + scm_c_define ("EXIT_FAILURE", scm_from_int (EXIT_FAILURE)); +#endif #ifdef HAVE_GETEUID scm_add_feature ("EIDs"); #endif